Cell Recorder is an Android app that records cellular tower information (signal strength, Cell ID, RAT type, frequency bands) alongside GPS coordinates. Sessions can be exported as CSV or GeoJSON, and replayed on an interactive map.
- Real-time cell tower logging — Records signal strength, Cell ID, RAT (4G/5G/etc.), and frequency bands using NetMonster Core
- GPS tracking — Logs location coordinates during recording sessions
- Background recording — Foreground service keeps recording active even when the app is in the background
- Session management — Name, view, and manage multiple recording sessions
- Export — Save sessions as CSV or GeoJSON
- Replay — Replay recorded sessions on an interactive OpenStreetMap view
- Crash logging — Built-in uncaught exception handler captures crash logs for easy bug reporting
- In-app issue reporting — Pre-filled GitHub issue template from the About screen
| Permission | Why it's needed |
|---|---|
ACCESS_FINE_LOCATION |
Record precise GPS coordinates alongside cell data |
ACCESS_BACKGROUND_LOCATION |
Continue recording location when the app is not in the foreground |
READ_PHONE_STATE |
Read cell tower information (signal strength, Cell ID, RAT, bands) |
POST_NOTIFICATIONS |
Show a persistent notification while recording is active |
FOREGROUND_SERVICE |
Run the recording service in the foreground |
FOREGROUND_SERVICE_LOCATION |
Declare the foreground service type for location tracking |
./gradlew assembleDebugThe debug APK will be at app/build/outputs/apk/debug/app-debug.apk.
Release builds require signing environment variables:
export RELEASE_STORE_PASSWORD="your_keystore_password"
export RELEASE_KEY_ALIAS="your_key_alias"
export RELEASE_KEY_PASSWORD="your_key_password"
./gradlew assembleReleaseThe signed release APK will be at app/build/outputs/apk/release/app-release.apk.
Note: Do not commit your keystore (
*.jks) or hardcode signing passwords inbuild.gradle.kts.
- UI: Jetpack Compose with Material 3
- Dependency Injection: Hilt
- Database: Room (for sessions and cell readings)
- Cell Info: NetMonster Core
- Maps: osmdroid (OpenStreetMap)
- Location: Google Play Services Location
Contributions are welcome! Please open an issue to discuss changes before submitting a pull request.




