Skip to content

A mobile app that lets you rest on public transport without missing your stop! Set your GPS alarm and let yourself be lulled until your arrival.

Notifications You must be signed in to change notification settings

Inkflow59/WakeMeUp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“ WakeMeUp - Location-Based Alarm

Android Kotlin OpenStreetMap GPS

Never miss your stop again! Wake up automatically when you approach your destination.

🎯 About

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

✨ Features

πŸŽ›οΈ Alarm Management

  • 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

πŸ“ Geolocation Technology

  • 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

πŸ”” Alert System

  • 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

πŸ“± Android Widget

  • 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

πŸ”„ System Integration

  • 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

πŸš€ Installation

Prerequisites

  • Android 5.0 (API 21) or higher
  • Internet connection (to download maps)
  • GPS enabled on device

Installation Steps

  1. Clone the project

    git clone https://github.com/your-username/wakemeup.git
    cd wakemeup
  2. Open in Android Studio

    • Open Android Studio
    • File β†’ Open β†’ Select project folder
  3. Build and install

    ./gradlew assembleDebug
    ./gradlew installDebug

πŸŽ‰ No additional configuration required! The app uses OpenStreetMap which doesn't require an API key.

πŸ”§ Configuration

Required Permissions

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" />

Battery Optimization

For optimal operation, disable battery optimization for WakeMeUp:

  1. Settings β†’ Battery β†’ Battery Optimization
  2. Search for WakeMeUp
  3. Select "Don't optimize"

Widget Setup

To add the WakeMeUp widget to your home screen:

  1. Long press on your home screen
  2. Select "Widgets"
  3. Find "WakeMeUp" in the list
  4. Drag and drop to your desired location
  5. The widget will automatically show your active alarms

πŸ“– User Guide

1. Create your first alarm

  1. Open the app and tap the [+] button
  2. Name your alarm (e.g., "ChΓ’telet Stop")
  3. Set the position:
    • πŸ“ Use your current location
    • πŸ” Search for an address
    • πŸ—ΊοΈ Click directly on the map
  4. Configure the activation radius (recommended: 100-200m)
  5. Enable sound and/or vibration
  6. Save

2. Use the alarm

  1. Activate the alarm in the main list
  2. Start your journey - the app monitors your position in the background
  3. Get alerted automatically when you approach the destination
  4. Wake up thanks to sound and vibration

3. Advanced Management

  • ✏️ 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

πŸ—οΈ Architecture

Project Structure

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

Technologies Used

  • 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

Key Components

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

πŸ”’ Privacy

  • 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

πŸ› Troubleshooting

Alarm doesn't trigger

  • βœ… 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)

App closes in background

  • βœ… Disable battery optimization for WakeMeUp
  • βœ… Add the app to protected applications (manufacturer dependent)
  • βœ… Check in Settings β†’ Apps β†’ Special Permissions

Widget not updating

  • βœ… 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

Alarms don't restart after reboot

  • βœ… 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

Inaccurate GPS

  • βœ… Enable high-precision location
  • βœ… Be in an open environment (avoid tunnels/buildings)
  • βœ… Increase the activation radius if necessary

🀝 Contributing

Contributions are welcome! To contribute:

  1. Fork the project
  2. Create a feature branch (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -m 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Open a Pull Request

Improvement Ideas

  • πŸŒ™ 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

πŸ“„ License

This project is under MIT License. See the LICENSE file for more details.

πŸ‘¨β€πŸ’» Developer

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

About

A mobile app that lets you rest on public transport without missing your stop! Set your GPS alarm and let yourself be lulled until your arrival.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published