Loading repository data…
Loading repository data…
ishara-madu / repository
An open-source Android toolkit to force 4G/5G network modes, monitor live cellular metrics, and test internet speed. Built with Kotlin, Jetpack Compose, Room, and Clean Architecture (MVVM) featuring a custom Neumorphic UI.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Before building, ensure you have the following installed:
Clone the repository
git clone https://github.com/ishara-madu/4GLTEOnlyApp.git
cd ForceLTEOnly
Configure Security & Keys (local.properties)
Create a local.properties file in the root directory and add your API keys:
REVENUECAT_API_KEY=your_revenuecat_key_here
ADMOB_APP_ID=ca-app-pub-your_admob_app_id
ADMOB_BANNER_ID=ca-app-pub-your_banner_id
ADMOB_INTERSTITIAL_ID=ca-app-pub-your_interstitial_id
ADMOB_APP_OPEN_ID=ca-app-pub-your_app_open_id
Open in Android Studio
Build the Debug APK
./gradlew assembleDebug
Build the Release APK
./gradlew assembleRelease
Note: Release builds are heavily optimized with R8. Ensure your keys are valid to prevent build failures.
ForceLTEOnly/
├── app/
│ ├── src/
│ │ └── main/
│ │ ├── java/com/pixeleye/lteonly/
│ │ │ ├── MainActivity.kt # Main Compose entry point
│ │ │ ├── LteOnlyApplication.kt # Application class (RevenueCat/AdMob Init)
│ │ │ ├── TelephonyService.kt # Core signal & band monitoring
│ │ │ ├── RadioInfoHelper.kt # Opens LTE settings
│ │ │ ├── PremiumUpgradeScreen.kt # Custom RevenueCat Paywall UI
│ │ │ ├── ProStateManager.kt # Global premium state flow
│ │ │ ├── AdManager.kt # Strict AdMob implementation
│ │ │ ├── Room DB & Repositories # Local Data Persistence
│ │ │ └── ui/
│ │ │ └── theme/ # Material 3 & Neumorphic styling
│ │ ├── res/ # Compressed WebP Android resources
│ │ └── AndroidManifest.xml
│ ├── build.gradle.kts # App-level build logic
│ └── proguard-rules.pro # Custom R8 keep rules
├── gradle/ # Gradle wrapper
├── build.gradle.kts # Root build file
└── local.properties # Secret Keys (Git Ignored)
The app follows a clean, modular architecture pattern strictly adhering to modern Android development practices.
┌─────────────────────────────────────────────────────────────┐
│ UI Layer │
│ (100% Jetpack Compose - Reactive State Flows) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Domain Layer │
│ (TelephonyService, RadioInfoHelper, ProStateManager) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Data Layer │
│ (Room Database, RevenueCat SDK, AdMob SDK, Data Repos) │
└─────────────────────────────────────────────────────────────┘
| Category | Technology |
|---|---|
| Language | Kotlin 1.9+ |
| UI Framework | Jetpack Compose (Material 3) |
| Architecture | MVVM + Clean Architecture |
| Monetization | RevenueCat (Purchases SDK) |
| Ads | Google AdMob |
| Database | Room Persistence Library |
| Async | Kotlin Coroutines & Flow |
| Build System | Gradle with Kotlin DSL |
The app requires the following permissions to function:
| Permission | Purpose |
|---|---|
READ_PHONE_STATE | Access signal strength and network information |
ACCESS_FINE_LOCATION | Required for accurate cell tower and LTE Band detection |
ACCESS_COARSE_LOCATION | Fallback location access |
INTERNET | Speed test functionality & API interactions |
POST_NOTIFICATIONS | Speed test reminders (Android 13+) |
TelephonyManager to access cellular information.CellInfoLte and CellInfoNr provide detailed signal metrics and LTE bands.Contributions are welcome! Here's how you can help:
git checkout -b feature/your-feature-name)git commit -m "Add: your feature description")This project is licensed under the MIT License - see the LICENSE file for details.
If you find this app useful, please consider: