WakeMeUp is an innovative Android application that allows you to create alarms based on your geographical location rather than time. Perfect for:
- π Public Transportation: Sleep peacefully, the app wakes you up at your stop
- π Car Travel: Ideal for passengers during long journeys
βοΈ Travel: Never miss your connections or destinations again- π Sports: Wake-up calls for your checkpoints during long runs
- Intuitive Creation: Simple interface with interactive OpenStreetMap
- Complete Customization: Name, position, activation radius (10m - 1km)
- Flexible Options: Sound, vibration, enable/disable
- Address Search: Easily find your destinations
- Continuous Monitoring: Optimized background service
- GPS Precision: Uses fine location services
- Power Efficient: Intelligent battery management
- Offline Operation: No internet needed once maps are downloaded
- Push Notifications: Immediate and visible alerts
- Alarm Sound: Loud and customizable ringtone
- Vibration: Tactile wake-up even in silent mode
- Auto-Deactivation: Alarm deactivates after triggering
- Home Screen Widget: Quick view of active alarms directly on your home screen
- Real-time Updates: Widget automatically refreshes when alarms change
- One-tap Access: Direct launch to the main app from the widget
- Compact Display: Shows essential information without cluttering your screen
- Auto-restart: Automatically restarts monitoring after device reboot
- Background Persistence: Maintains alarm monitoring even when app is closed
- System Broadcasts: Efficient communication between app components
- Boot Receiver: Seamlessly resumes active alarms after system restart
- Android 5.0 (API 21) or higher
- Internet connection (to download maps)
- GPS enabled on device
-
Clone the project
git clone https://github.com/your-username/wakemeup.git cd wakemeup -
Open in Android Studio
- Open Android Studio
- File β Open β Select project folder
-
Build and install
./gradlew assembleDebug ./gradlew installDebug
π No additional configuration required! The app uses OpenStreetMap which doesn't require an API key.
The app automatically requests the following permissions:
<!-- Geolocation -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!-- Notifications and wake-up -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- Auto-restart after reboot -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- OpenStreetMap -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />For optimal operation, disable battery optimization for WakeMeUp:
- Settings β Battery β Battery Optimization
- Search for WakeMeUp
- Select "Don't optimize"
To add the WakeMeUp widget to your home screen:
- Long press on your home screen
- Select "Widgets"
- Find "WakeMeUp" in the list
- Drag and drop to your desired location
- The widget will automatically show your active alarms
- Open the app and tap the [+] button
- Name your alarm (e.g., "ChΓ’telet Stop")
- Set the position:
- π Use your current location
- π Search for an address
- πΊοΈ Click directly on the map
- Configure the activation radius (recommended: 100-200m)
- Enable sound and/or vibration
- Save
- Activate the alarm in the main list
- Start your journey - the app monitors your position in the background
- Get alerted automatically when you approach the destination
- Wake up thanks to sound and vibration
- βοΈ Edit: Click "Edit" to change settings
- π Enable/Disable: Use the switch to temporarily enable/disable
- ποΈ Delete: Click "Delete" to permanently remove
- π± Widget: Monitor active alarms directly from your home screen
app/
βββ π± MainActivity.kt # Main screen
βββ βοΈ AlarmEditorActivity.kt # Alarm creation/modification
βββ π LocationService.kt # Geolocation service
βββ πΎ AlarmRepository.kt # Data management
βββ π AlarmAdapter.kt # List display
βββ π LocationAlarm.kt # Data model
βββ ποΈ MainViewModel.kt # Business logic
βββ π± WakeMeUpWidget.kt # Home screen widget
βββ π BootReceiver.kt # Auto-restart after reboot
βββ π PermissionManager.kt # Permission management
- Language: Kotlin
- Architecture: MVVM (Model-View-ViewModel)
- Geolocation: Google Play Services Location
- Maps: OpenStreetMap with osmdroid
- Storage: SharedPreferences
- Interface: Material Design Components
- Services: Foreground Service for background operation
- Widgets: Android App Widget framework
- System Integration: Broadcast Receivers
| Component | Role | Technology |
|---|---|---|
LocationService |
Background GPS monitoring | FusedLocationProviderClient |
AlarmRepository |
Data persistence | SharedPreferences |
MainActivity |
Main interface | RecyclerView + LiveData |
AlarmEditorActivity |
Alarm configuration | OpenStreetMap |
WakeMeUpWidget |
Home screen widget | AppWidgetProvider |
BootReceiver |
Auto-restart on boot | BroadcastReceiver |
- Local Data: All data is stored locally on your device
- No Server: No data is sent to external servers
- GPS Only: Only GPS location is used, no other personal data
- Transparent: Open source code, auditable
- β Check that the alarm is enabled (green switch)
- β Confirm that location permissions are granted
- β Disable battery optimization for the app
- β Verify that GPS is enabled on the device
- β Ensure you're within the defined zone (configured radius)
- β Disable battery optimization for WakeMeUp
- β Add the app to protected applications (manufacturer dependent)
- β Check in Settings β Apps β Special Permissions
- β Ensure the widget has been added to home screen
- β Check that the app has notification permissions
- β Try removing and re-adding the widget
- β Verify that background app refresh is enabled
- β Grant "Auto-start" permission (manufacturer dependent)
- β Ensure RECEIVE_BOOT_COMPLETED permission is granted
- β Check that active alarms exist before restart
- β Disable deep sleep mode for the app
- β Enable high-precision location
- β Be in an open environment (avoid tunnels/buildings)
- β Increase the activation radius if necessary
Contributions are welcome! To contribute:
- Fork the project
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -m 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
- π Dark mode for the interface
- π Usage statistics for alarms
- π΅ Custom sounds for alarms
- π Multi-language support
- β° Combined alarms (time + location)
- π Advanced widget features (progress bars, distance indicators)
- π Smart notifications based on user patterns
- πΊοΈ Offline maps for better performance
This project is under MIT License. See the LICENSE file for more details.
Developed with β€οΈ to make travel more peaceful.
β Don't hesitate to star this project if it helps you! β
WakeMeUp - Because your destination matters more than time