Skip to content

ishara-madu/4GLTEOnlyApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Force LTE Only

Force LTE Only Logo

A powerful Android app to monitor, analyze, and optimize your LTE/5G connection

GitHub Release License Platform Min SDK Target SDK


Table of Contents


What's New πŸš€

  • Live Network Band Info: Dynamically detects and displays the connected LTE/5G Band in real-time, handling required location permissions gracefully.
  • LTE Only PRO (Premium Tier): Integrated RevenueCat for robust subscription management. Users can upgrade to an ad-free Pro tier to unlock advanced network tools like the Game Servers Ping Analyzer and historical analytics.
  • Google Play In-App Reviews: Seamlessly integrates the native In-App Review API, intelligently and silently triggering after successful network switching flows without spamming the user.
  • Massive Performance Optimizations: App size reduced by over 50% for release builds using aggressive R8 shrinking, strict resource minification, unused dependency stripping, and comprehensive WebP asset conversion, all without compromising UI/UX!

Features

πŸ“‘ Network Monitoring

  • Real-time Signal Analysis - Monitor RSRP, RSRQ, RSSI, and SINR signal metrics.
  • Carrier & Band Information - View carrier name, network type, MCC/MNC codes, Cell ID, and live LTE/5G NR Band tracking.
  • Connection Status - Live connection state and roaming detection.

⚑ Speed & Latency Testing

  • Speed Tests - Measure your actual download and upload speeds.
  • Ping/Latency Test - Check your network response time.
  • Gaming Ping Analyzer (PRO) - Real-time regional server latency tests tailored for global gaming servers.

πŸ“Š Analytics

  • Signal History Chart - Visualize signal strength changes over time.
  • Pro Analytics - Review historical speed test results with clear, dynamic charts.
  • Data Usage Tracking - Monitor mobile and Wi-Fi data consumption.

πŸŽ›οΈ Tools

  • 4G LTE Switcher - Quick access to force LTE network mode via hidden system settings (with fallback dialer intents).
  • APN Settings - Direct link to configure your APN settings.
  • Background Monitoring - Continuous signal monitoring while the app is running.

🎨 User Experience

  • 100% Jetpack Compose - Built entirely with modern declarative UI.
  • Neumorphic Design - Beautiful, modern UI with soft shadows and depth.
  • Theme Engine - Dynamically adapts to Light, Dark, and System themes.
  • Ad-Free Interface (PRO) - Completely remove all banner, interstitial, and app-open ads.

Screenshots

Home Screen Analytics Dashboard Speed Test

Settings Dark Theme


Requirements

  • Android Version: 7.0 Nougat (API 24) or higher
  • Device: Any Android device with cellular capabilities
  • Permissions: Location and Phone State access required for signal and band monitoring

Installation

From Google Play Store

Play Store

From APK (Direct Download)

  1. Download the latest APK from the Releases page
  2. Enable "Install from unknown sources" in your device settings
  3. Open the downloaded APK file
  4. Tap Install

Building from Source

Prerequisites

Before building, ensure you have the following installed:

  • Android Studio (Hedgehog or newer recommended)
  • JDK 11 or higher
  • Android SDK with API Level 36
  • Gradle (included in the project)

Steps

  1. Clone the repository

    git clone https://github.com/ishara-madu/4GLTEOnlyApp.git
    cd ForceLTEOnly
  2. 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
  3. Open in Android Studio

    • Select "Open an existing project" and navigate to the cloned directory.
    • Wait for Gradle sync to complete.
  4. Build the Debug APK

    ./gradlew assembleDebug
  5. Build the Release APK

    ./gradlew assembleRelease

    Note: Release builds are heavily optimized with R8. Ensure your keys are valid to prevent build failures.


Project Structure

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)

Architecture & Tech Stack

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)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Technologies Used

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

Permissions

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+)

How It Works

Signal Monitoring

  1. The app uses Android's TelephonyManager to access cellular information.
  2. CellInfoLte and CellInfoNr provide detailed signal metrics and LTE bands.
  3. Data is stored in a Room database for historical analysis.

Network Mode Switching

  1. The app provides a shortcut button to open system Radio Info menus.
  2. From there, users can select their preferred network mode (LTE only, 5G preferred, etc.).
  3. Note: Direct programmatic network mode changes are restricted by Android for security.

Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the Repository
  2. Create a Feature Branch (git checkout -b feature/your-feature-name)
  3. Commit Your Changes (git commit -m "Add: your feature description")
  4. Push and Create Pull Request

Reporting Issues

  • Use GitHub Issues to report bugs
  • Include your Android version and device model
  • Provide steps to reproduce the issue

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support

Get Help

  • πŸ“– Check the Wiki
  • πŸ› Report bugs via Issues

Rate the App

If you find this app useful, please consider:


Acknowledgments

  • Built with Jetpack Compose
  • Monetization powered by RevenueCat
  • Design inspired by modern neumorphic UI trends

Made with ❀️ by Ishara Madhusanka

About

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.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages