Awareen
A screen time awareness app with persistent overlay timer for mindful device usage.
Awareen
- Screen Time Awareness Guardian
Awareen (Awareness + Screen) is an Android application that promotes mindful device usage through a persistent overlay timer, helping users become more conscious of their screen time across all applications.
Technology Stack
Built with modern Android development practices:
-
Kotlin
for native Android development -
Service-based architecture
for background processing -
Overlay permissions
for system-level integration -
Foreground services
for reliable operation -
SharedPreferences
for settings persistence -
Custom UI components
for flexible display options
Core Innovation: Three-Level Alert System
Awareen features a progressive awareness system that adapts to usage patterns:
- Level 1 (Green): Default display for normal usage (0-30 minutes)
- Level 2 (Yellow): Warning phase when approaching limits (30-60 minutes)
- Level 3 (Red): Alert phase for excessive usage (60+ minutes) with optional blinking
All colors, positions, and time thresholds are fully customizable to match individual preferences.
Key Features
Persistent Overlay System
- Always-visible timer that works across all applications
- Smart display modes: Always-on or configurable interval-based visibility
- Customizable positioning with per-level font sizes and colors
- System-level integration that survives app switches and device rotations
Advanced Configuration
- Three-tier customization for colors, positions, and thresholds
- Flexible display intervals with configurable durations
- Daily auto-reset with user-defined timing
- Battery optimization handling for uninterrupted operation
Analytics Dashboard
- Daily usage tracking with pattern recognition
- Historical data visualization for long-term awareness
- Trend analysis to identify usage habits
Screenshots Gallery
Main Interface and Settings
View Application Screenshots

Technical Architecture
Service-Based Design
class ScreenTimeService : Service() {
private val overlayManager = OverlayManager()
private val timeTracker = TimeTracker()
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(NOTIFICATION_ID, createNotification())
return START_STICKY // Ensures service restart after termination
}
}
Permission Management System
// Comprehensive permission handling for Android complexity
private fun requestOverlayPermission() {
if (!Settings.canDrawOverlays(this)) {
val intent = Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:$packageName")
)
startActivityForResult(intent, OVERLAY_PERMISSION_REQUEST)
}
}
Dynamic Display Configuration
class OverlayManager {
fun updateDisplayLevel(screenTime: Long) {
val level = when {
screenTime < level1Threshold -> DisplayLevel.NORMAL
screenTime < level2Threshold -> DisplayLevel.WARNING
else -> DisplayLevel.ALERT
}
applyLevelConfiguration(level)
}
}
Project Structure
app/src/main/
├── java/com/example/screentimetracker/
│ ├── MainActivity.kt # Main app entry point
│ ├── ScreenTimeService.kt # Core tracking service
│ ├── SettingsActivity.kt # Configuration interface
│ ├── AnalyticsActivity.kt # Usage analytics
│ ├── InfoActivity.kt # About and help
│ ├── AppSettings.kt # Configuration constants
│ ├── BootReceiver.kt # Auto-start functionality
│ └── UnsavedChangesDialog.kt # Settings management
├── res/
│ ├── layout/ # UI layouts
│ ├── drawable/ # Icons and graphics
│ ├── values/ # Strings and themes
│ └── xml/ # Backup configurations
└── AndroidManifest.xml # Permissions and components
Advanced Features
Battery Optimization Handling
The app intelligently manages Android’s battery optimization restrictions to ensure consistent operation across different device manufacturers and Android versions.
Auto-Start Integration
Seamless integration with system boot processes ensures the awareness system activates automatically without user intervention.
Multi-Device Compatibility
Comprehensive permission handling and fallback mechanisms ensure compatibility across various Android versions (8.0+) and device manufacturers.
Installation & Setup
# Development setup
git clone https://github.com/Andebugulin/awareen.git
cd awareen
# Build and install
./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk
Development Journey
Creating Awareen has been an exploration into Android system-level programming, user behavior psychology, and sustainable app architecture. The project challenged me to:
- Master Android services and foreground service management
- Navigate complex permission systems across different Android versions
- Design intuitive UX for productivity-focused applications
- Implement persistent overlay systems that respect user privacy
- Handle battery optimization and auto-start complexities
- Create flexible configuration systems for diverse user preferences
The application successfully gathered over 100 users through organic distribution channels, demonstrating real-world demand for mindful technology solutions.
Impact & Distribution
- 100+ active users across multiple distribution channels
- Signed release versions with proper Android security compliance
- Positive user feedback on effectiveness for screen time awareness
- Open source contribution to digital wellness ecosystem
For detailed implementation and contribution: