{"id":30789127,"url":"https://github.com/aunchagaonkar/NetworkSwitch","last_synced_at":"2025-09-05T14:03:30.003Z","repository":{"id":311336647,"uuid":"1043411548","full_name":"aunchagaonkar/NetworkSwitch","owner":"aunchagaonkar","description":"One-tap network switching for Android","archived":false,"fork":false,"pushed_at":"2025-08-23T20:19:19.000Z","size":679,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T08:22:18.027Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aunchagaonkar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-23T19:48:10.000Z","updated_at":"2025-08-23T20:19:22.000Z","dependencies_parsed_at":"2025-08-24T08:57:17.596Z","dependency_job_id":"88fa23c5-8afa-4248-ad3e-1772d56c6908","html_url":"https://github.com/aunchagaonkar/NetworkSwitch","commit_stats":null,"previous_names":["aunchagaonkar/networkswitch"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aunchagaonkar/NetworkSwitch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunchagaonkar%2FNetworkSwitch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunchagaonkar%2FNetworkSwitch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunchagaonkar%2FNetworkSwitch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunchagaonkar%2FNetworkSwitch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aunchagaonkar","download_url":"https://codeload.github.com/aunchagaonkar/NetworkSwitch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aunchagaonkar%2FNetworkSwitch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273768127,"owners_count":25164464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-05T14:01:09.152Z","updated_at":"2025-09-05T14:03:29.989Z","avatar_url":"https://github.com/aunchagaonkar.png","language":"Kotlin","readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"media/app_icon.png\" width=\"160\" height=\"160\" style=\"display: block; margin: 0 auto\"/\u003e\n\u003ch1\u003eNetwork Switch\u003c/h1\u003e\n\u003cp\u003eModern Android app for 4G/5G network mode switching\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\nA modern Android application that enables users to toggle between 4G and 5G network modes with dual control methods: Root access for rooted devices and Shizuku for non-rooted devices. Built using Jetpack Compose and Material Design 3.\n\n## Purpose\n\nNetwork Switch allows Android users to manually control their device's network preference between pure 4G (LTE-only) and 5G (NR-only) modes. This is useful for:\n\n- Quick network switching through Quick Settings tile\n- Optimizing battery life by forcing 4G mode\n- Maximizing speed by forcing 5G mode where available\n- Managing data usage and connectivity preferences\n\nThe app provides two methods of operation:\n- **Root Method**: Direct system access for rooted devices\n- **Shizuku Method**: System access through Shizuku service for non-rooted devices\n\n## Features\n\n- Pure network mode switching (LTE-only for 4G, NR-only for 5G)\n- Quick Settings tile for instant access\n- Dual control methods (Root and Shizuku)\n- Modern Material Design 3 interface\n- Clean architecture implementation\n- Privacy-focused (no internet permissions)\n- Intelligent device compatibility detection\n- Automatic fallback for unsupported devices\n\n## Screenshots\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"media/screenshot_main.jpg\" alt=\"Main Screen\" width=\"240\" /\u003e\n\u003cimg src=\"media/screenshot_settings.jpg\" alt=\"Settings Screen\" width=\"240\"/\u003e\n\u003c/div\u003e\n\n## Requirements\n\n### Root Method\n- Rooted Android device (Android 10+)\n- Root permissions granted to the app\n\n### Shizuku Method\n- Non-rooted Android device (Android 10+)\n- Shizuku app installed and running\n- ADB or Wireless ADB access to start Shizuku\n\n## Installation\n\n[\u003cimg src=\"media/get_it_github.png\" alt=\"Get it on GitHub\" height=\"80\"\u003e](https://github.com/aunchagaonkar/NetworkSwitch/releases)\n\n1. Download the latest APK from the Releases page\n2. Install on your Android device\n3. Choose your preferred control method:\n   - **Root**: Grant root permissions when prompted\n   - **Shizuku**: Install Shizuku app and grant permission\n4. Add the \"4G/5G Toggle\" tile to Quick Settings\n\n## Project Structure\n\n```\napp/\n├── src/main/java/com/supernova/networkswitch/\n│   ├── presentation/          # UI Layer\n│   │   ├── ui/               # Compose UI components\n│   │   ├── viewmodel/        # ViewModels\n│   │   └── theme/            # Material Design theme\n│   ├── domain/               # Business Logic Layer\n│   │   ├── model/            # Domain models\n│   │   ├── repository/       # Repository interfaces\n│   │   └── usecase/          # Business use cases\n│   ├── data/                 # Data Layer\n│   │   ├── repository/       # Repository implementations\n│   │   ├── source/           # Data sources (Root, Shizuku)\n│   │   └── preferences/      # Settings storage\n│   ├── service/              # System Services\n│   │   ├── tile/             # Quick Settings tile\n│   │   └── network/          # Network management\n│   └── di/                   # Dependency Injection modules\n├── build.gradle.kts          # App build configuration\n└── proguard-rules.pro        # ProGuard rules\n\nhiddenapi/                    # Android Hidden API access\n├── src/main/aidl/            # AIDL interfaces\n└── build.gradle.kts          # Hidden API build config\n\n.github/workflows/            # CI/CD pipelines\n├── ci.yml                    # Continuous Integration\n└── build-release.yml         # Release workflow\n\ngradle/\n├── libs.versions.toml        # Version catalog\n└── wrapper/                  # Gradle wrapper\n\nbuild.gradle.kts              # Root build configuration\nsettings.gradle.kts           # Project settings\n```\n\n\n## Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/aunchagaonkar/Network-Switch.git\ncd Network-Switch\n\n# Build debug APK\n./gradlew assembleDebug\n\n# Build release APK\n./gradlew assembleRelease\n```\n\n## TODO\n- [ ] Add unit tests for all core components\n- [ ] Add network speed monitoring\n- [ ] Implement network statistics tracking\n- [ ] Add support for 3G fallback modes\n- [ ] Add multi-language support\n- [ ] Implement network signal strength indicators\n- [ ] Add scheduled network switching\n- [ ] Add network performance benchmarking\n\n## Contributing\n\nContributions are welcome! Please follow these guidelines:\n\n### Getting Started\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/feature-name`)\n3. Make your changes following the project's code style\n4. Test your changes thoroughly\n5. Commit your changes (`git commit -m 'Add feature-name'`)\n6. Push to the branch (`git push origin feature/feature-name`)\n7. Open a Pull Request\n\n### Code Style\n- Follow Kotlin coding conventions\n- Use meaningful variable and function names\n- Add documentation for public APIs\n- Maintain clean architecture principles\n- Follow Material Design guidelines for UI changes\n\n### Testing\n- Add unit tests for new functionality\n- Test on both rooted and non-rooted devices\n- Verify compatibility across different Android versions\n- Test network switching functionality thoroughly\n\n### Reporting Issues\n- Use the GitHub issue tracker\n- Provide detailed reproduction steps\n- Include device information and Android version\n- Attach relevant logs when possible\n\n## LICENSE\n\nThis project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for details.\n\n## Dependencies and Credits\n\n### Core Dependencies\n- **Shizuku**: Root-less system API access\n- **libsu**: Root access management\n- **Hilt**: Dependency injection\n- **DataStore**: Modern preferences storage\n- **Jetpack Compose**: Modern UI framework\n- **Material Design 3**: UI components and theming\n- **Kotlin Coroutines**: Asynchronous operations\n\nSpecial thanks to the Android development community and the maintainers of the open-source libraries used in this project.\n","funding_links":[],"categories":["Aug 31, 2025","Apps","🌐 Network and Connectivity","💜 My favorite apps I use daily"],"sub_categories":["Network","Misc Network Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faunchagaonkar%2FNetworkSwitch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faunchagaonkar%2FNetworkSwitch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faunchagaonkar%2FNetworkSwitch/lists"}