Awareen (Awareness + Screen) is an Android application that helps users become more aware of their screen time through a persistent overlay timer. The app displays your current screen time in real-time, even when using other applications, promoting mindful device usage.
- Persistent Overlay Timer: Always-visible screen time counter that works across all apps
- Three-Level Alert System: Progressive visual warnings based on usage time
- Customizable Display: Adjustable colors, positions, and font sizes for each level
- Smart Display Modes: Choose between always-on or interval-based timer display
- Analytics Dashboard: Track your daily screen time patterns and trends
- Auto-Reset: Configurable daily reset time for screen time tracking
- Level 1 (Green): Default display for normal usage (0-30 minutes)
- Level 2 (Yellow): Warning phase when approaching time limits (30-60 minutes)
- Level 3 (Red): Alert phase for excessive usage (60+ minutes) with optional blinking
Colors and time thresholds are fully customizable in the settings.
- Always Mode: Timer constantly visible on screen
- Interval Mode: Timer appears periodically (configurable intervals)
- Language: Kotlin
- Min SDK: 26 (Android 8.0)
- Target SDK: 35 (Android 15)
- Architecture: Service-based with overlay permissions
- Android 8.0 (API level 26) or higher
- Overlay permission (System Alert Window)
- App-pausing permission
- Battery optimization exemption (recommended)
- Auto-start permission (recommended)
-
Clone the repository
git clone https://github.com/yourusername/awareen.git cd awareen
-
Open in Android Studio
- Import the project into Android Studio
- Sync Gradle files
-
Build and Install
./gradlew assembleDebug adb install app/build/outputs/apk/debug/app-debug.apk
-
Grant Permissions:
- Launch Awareen
- Press "Start Service" to request necessary permissions
-
Customize Settings:
- Access settings through the gear icon
- Adjust colors, positions, and time thresholds
- Configure display modes and reset times
-
View Analytics:
- Check your usage patterns in the Analytics section
- Track daily screen time trends
- Level 1: 30 minutes (Green, Top Right, 24sp)
- Level 2: 30 minutes duration (Yellow, Middle Left, 26sp)
- Level 3: Unlimited (Red, Middle Center, 28sp, Blinking enabled)
- Reset Time: Midnight (00:00)
- Display Mode: Always visible
- Timer colors and positions for each level
- Font sizes (adjustable per level)
- Time thresholds for level transitions
- Display intervals and durations
- Daily reset timing
- Blinking alerts for Level 3
app/src/main/
├── java/com/example/screentimetracker/
│ ├── MainActivity.kt # Main app entry point
│ ├── ScreenTimeService.kt # Core service for tracking
│ ├── SettingsActivity.kt # Settings configuration
│ ├── AnalyticsActivity.kt # Usage analytics display
│ ├── InfoActivity.kt # About/info screen
│ ├── AppSettings.kt # Constants and defaults
│ ├── BootReceiver.kt # For auto-start on boot
│ └── UnsavedChangesDialog.kt # Settings dialog
├── res/
│ ├── layout/ # UI layouts
│ ├── drawable/ # Icons and graphics
│ ├── values/ # Strings, colors, themes
│ └── xml/ # Backup and data rules
└── AndroidManifest.xml # App permissions and components
<!-- Overlay permissions -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION" />
<!-- Boot and startup permissions -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.QUICKBOOT_POWERON" />
<!-- Foreground service permissions -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<!-- Battery optimization and doze mode permissions -->
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<!-- Auto-start and background permissions -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<!-- Network permission -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Notification permissions -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.VIBRATE" />
Timer stops working:
- Check if overlay permission is granted
- Disable battery optimization for Awareen
- Ensure the service is running in foreground
- Ensure the app pause is disabled
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit changes (
git commit -m 'Add amazing feature'
) - Push to branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Andrei Gulin
- GitHub: @Andebugulin
- LinkedIn: Andrei Gulin
- v1.0.0: Initial release with core overlay functionality
- Features: Three-level system, customizable display, analytics tracking
If you find this app useful, consider supporting me:
You can also find the premium version with additional features on Gumroad.
This project is licensed under the MIT License - see the LICENSE file for details.