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
- 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-60 minutes)
- Level 2 (Yellow): Warning phase when approaching time limits (60-120 minutes)
- Level 3 (Red): Alert phase for excessive usage (120+ minutes)
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/andebugulin/awareen.git cd awareen -
Open in Android Studio
- Import the project into Android Studio
- Sync Gradle files
-
Build and Install
- Just use android studio builder, its the simplest
- Go to build, then generate signed app bundle or APK, follow the steps
-
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: 60 minutes (color - #6F48A7, Top Right, 22sp, blinking enabled)
- Level 2: 60 minutes duration (#A8CC58, Top Left, 23sp, blinking enabled)
- Level 3: Unlimited (#A3F5C8, Top Center, 33sp, blinking enabled)
- Reset Time: Midnight (00:00)
- Display Mode: Interval each minute for 8 seconds
- 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 (I higly recommend it)
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" />
<!-- 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 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
If you find this app useful, consider supporting me:
This project is licensed under the MIT License - see the LICENSE file for details.