https://github.com/inkflow59/wakemeup
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.
https://github.com/inkflow59/wakemeup
Last synced: 9 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/inkflow59/wakemeup
- Owner: Inkflow59
- Created: 2025-09-15T07:52:12.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-15T09:40:46.000Z (10 months ago)
- Last Synced: 2025-09-15T10:35:02.932Z (10 months ago)
- Language: Kotlin
- Size: 149 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π WakeMeUp - Location-Based Alarm




*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**
```bash
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**
```bash
./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:
```xml
```
### 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](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*