惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
雷峰网
雷峰网
量子位
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
博客园 - Franky
罗磊的独立博客
宝玉的分享
宝玉的分享
博客园_首页
腾讯CDC
The GitHub Blog
The GitHub Blog
D
DataBreaches.Net
IT之家
IT之家
D
Docker
Microsoft Security Blog
Microsoft Security Blog
博客园 - 司徒正美
V
V2EX
月光博客
月光博客
N
Netflix TechBlog - Medium
爱范儿
爱范儿
I
InfoQ
P
Proofpoint News Feed

Show HN

GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap
GitHub - Andebugulin/Awareen
Andebugulin · 2026-05-27 · via Show HN

Awareen - Screen Time Awareness App

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.

Get it on Google Play

Features

  • Persistent Overlay Timer: Always-visible screen time counter that works across all apps
  • Home-Screen Widget: A glanceable 2×1 widget showing today's accumulated screen time, color-coded by the same level system as the overlay. Tapping it opens the app.
  • Customizable Display: Adjustable colors, positions, and font sizes for each level
  • Three Display Modes: Always-on, periodic interval, or never (widget-only)
  • Analytics Dashboard: Track your daily screen time patterns and trends
  • Auto-Reset: Configurable daily reset time for screen time tracking
  • In-Settings Help: Tap the small (i) icon next to any settings section for a plain-English explanation of what it controls

Screenshots

How It Works

Three-Level System

  1. Level 1 (Green): Default display for normal usage (0-60 minutes)
  2. Level 2 (Yellow): Warning phase when approaching time limits (60-120 minutes)
  3. Level 3 (Red): Alert phase for excessive usage (120+ minutes)

Colors and time thresholds are fully customizable in the settings.

Display Modes

  • Always Mode: Timer constantly visible on screen
  • Interval Mode: Timer appears periodically (configurable interval and duration)
  • Never Mode: Overlay hidden — tracking continues silently in the background. Pair with the home-screen widget for awareness without the floating timer.

Technical Stack

  • Language: Kotlin
  • Min SDK: 26 (Android 8.0)
  • Target SDK: 35 (Android 15)
  • Architecture: Service-based with overlay permissions

Prerequisites

  • Android 8.0 (API level 26) or higher
  • Overlay permission (System Alert Window)
  • App-pausing permission
  • Battery optimization exemption (recommended)
  • Auto-start permission (recommended)

Installation

  1. Clone the repository

    git clone https://github.com/andebugulin/awareen.git
    cd awareen
  2. Open in Android Studio

    • Import the project into Android Studio
    • Sync Gradle files
  3. Build and Install

    • Just use android studio builder, its the simplest
    • Go to build, then generate signed app bundle or APK, follow the steps

Usage

  1. Grant Permissions:

    • Launch Awareen
    • Press "Start Service" to request necessary permissions
  2. Customize Settings:

    • Access settings through the gear icon
    • Adjust colors, positions, and time thresholds
    • Configure display modes and reset times
  3. View Analytics:

    • Check your usage patterns in the Analytics section
    • Track daily screen time trends
  4. (Optional) Add the Home-Screen Widget:

    • Long-press an empty area of your home screen → Widgets → pick "Awareen"
    • The widget mirrors the same level-based coloring as the overlay
    • Especially handy in combination with the Never display mode if you'd rather not see the floating timer

Configuration

In my opinion, best Settings

  • 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

Customization Options

  • 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)

Project Structure

The code is split into four packages by responsibility — ui talks to service, service talks to data, and overlay is a small shared domain used by both.

app/src/main/
├── java/com/andebugulin/awareen/
│   ├── data/
│   │   ├── AppSettings.kt           # Pref keys + defaults + broadcast action
│   │   ├── ScreenTimeRepository.kt  # Daily totals, reset bookkeeping, analytics I/O
│   │   └── SettingsRepository.kt    # Per-level settings I/O + settings-updated broadcast
│   ├── overlay/
│   │   ├── OverlayController.kt     # WindowManager overlay, touch handler, render()
│   │   └── OverlaySettings.kt       # Immutable view-config data classes
│   ├── service/
│   │   ├── ScreenTimeService.kt     # Foreground service + 1s tick loop coordinator
│   │   ├── ResetScheduler.kt        # Wall-clock math + AlarmManager (Doze-proof)
│   │   ├── ScreenStateMonitor.kt    # PowerManager + KeyguardManager wrapper
│   │   └── BootReceiver.kt          # Starts the service on BOOT_COMPLETED
│   ├── widget/
│   │   └── ScreenTimeWidgetProvider.kt  # Home-screen widget (level-colored, pushed every 30s by the service)
│   └── ui/
│       ├── MainActivity.kt          # Start/stop + navigation + defensive reset check
│       ├── PermissionWizard.kt      # 4-step permission state machine
│       ├── SettingsActivity.kt      # Per-level UI + JSON export/import
│       ├── AnalyticsActivity.kt     # Daily/hourly RecyclerView + JSON export/import
│       ├── InfoActivity.kt          # About screen
│       ├── UnsavedChangesDialog.kt  # Custom dialog used by SettingsActivity
│       └── Colorpickerview.kt       # HSV color picker custom view
├── res/
│   ├── layout/                      # UI layouts (incl. widget_screen_time.xml)
│   ├── drawable/                    # Icons and graphics (incl. widget_background.xml)
│   ├── values/                      # Strings, colors, themes
│   └── xml/                         # Backup/data rules + widget_screen_time_info.xml
└── AndroidManifest.xml              # App permissions and components

See CLAUDE.md for a fuller walkthrough of the architecture, the settings broadcast flow, and SharedPreferences key conventions.

Permissions

   <!-- Overlay permissions -->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

    <!-- Boot and startup permissions -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <!-- Foreground service permissions -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />

    <!-- Doze-proof daily reset -->
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />

    <!-- Keep service alive -->
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

    <!-- Foreground-service notification (Android 13+) -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

Troubleshooting

Common Issues

Timer stops working:

  • Check if overlay permission is granted
  • Disable battery optimization for Awareen
  • Ensure the app pause is disabled

🤝 Contributing

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

Author

Andrei Gulin

Support My Work

If you find this app useful, consider supporting me:

Buy Me A Coffee

Connect with Me

License

This project is licensed under the MIT License - see the LICENSE file for details.


Download

Get it on Google Play