An Android application that captures and displays real-time glucose data from Dexcom Continuous Glucose Monitoring (CGM) devices.
DexcomCatcher is a lightweight Android app that listens for Dexcom CGM broadcasts and displays glucose readings in a simple, easy-to-read interface. The app runs as a foreground service to continuously monitor glucose data in the background.
- Real-time Glucose Monitoring: Captures live glucose readings from Dexcom CGM devices
- Trend Indicators: Displays glucose trend arrows (rising, falling, stable)
- Background Service: Continues monitoring even when the app is not in the foreground
- Notification Support: Runs as a foreground service with persistent notification
- Simple UI: Clean, minimal interface showing current glucose value, trend, and timestamps
- Android 11 (API level 30) or higher
- Dexcom CGM app installed and configured
- Permission to access Dexcom CGM data
The app requires the following permissions:
com.dexcom.cgm.EXTERNAL_PERMISSION- Access to Dexcom CGM dataandroid.permission.FOREGROUND_SERVICE- Run background serviceandroid.permission.POST_NOTIFICATIONS- Show notifications
-
Clone the repository:
git clone <repository-url> cd DexcomCatcher
-
Open the project in Android Studio
-
Build and install the APK:
./gradlew assembleDebug
-
Install on your Android device and grant the required permissions
- Launch the app
- Grant the Dexcom external permission when prompted
- The app will start monitoring glucose data automatically
- View real-time glucose readings on the main screen
- The service will continue running in the background
- MainActivity: Main UI activity that displays glucose data
- DexcomService: Foreground service that manages the broadcast receiver
- DexcomReceiver: Broadcast receiver that listens for Dexcom CGM data
The app processes glucose data from Dexcom broadcasts containing:
- Glucose value (mg/dL)
- Trend arrow direction
- Timestamp information
- Historical readings (up to 288 data points)
- Service:
DexcomService- Manages background operation - Receiver:
DexcomReceiver- Handles Dexcom broadcasts - Activity:
MainActivity- Main user interface
- Minimum SDK: 30 (Android 11)
- Target SDK: 33 (Android 13)
- Compile SDK: 33
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'- Ensure you have Android Studio and Java 17+ installed
- Clone the repository
- Open in Android Studio
- Sync Gradle files
- Build and run on your device
Run unit tests:
./gradlew testRun instrumented tests:
./gradlew connectedAndroidTest- Permission Denied: Ensure Dexcom app is installed and the external permission is granted
- No Data Received: Verify Dexcom CGM is paired and transmitting data
- Service Stops: Check battery optimization settings for the app
Monitor app logs using:
adb logcat | grep DexcomCatcher- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This application is for educational and personal use only. It is not intended for medical diagnosis or treatment. Always consult with healthcare professionals for medical decisions.
For issues and questions, please open an issue on the GitHub repository.