Why Most Android Screen Time Blockers Fail at Midnight (And How We Fixed the Clock & Uninstall Loopholes)
Описание и применение
Ripple использует монотонный таймер, асимметричные тайм‑ауты, лимиты сессий и защиту от удаления, чтобы блокировать экранные ограничения в Android даже ночью.
Задача
Android screen‑time blockers often fail at midnight because users can change the system clock, scroll through feeds in whitelisted messaging apps, or uninstall/force‑stop the blocker.
Результат
Ripple prevents midnight bypasses by anchoring timers to a monotonic clock, enforcing asymmetric cooldowns, limiting whitelisted app sessions, and protecting itself from uninstall/force‑stop.
Рабочий процесс
- 1. Set a screen‑time rule (e.g., 9 PM limit).
- 2. Ripple measures time with SystemClock.elapsedRealtime() to anchor timers.
- 3. If a rule is tightened, it applies instantly; if relaxed, a 15‑minute (configurable up to 2 h) cooldown is enforced.
- 4. Whitelisted messaging apps are capped to 30 min per session.
- 5. A local daemon (UID 2000) locks the uninstall switch and restarts Ripple if it is force‑stopped.
Доказательства
Most Android blockers fail because the person who set the rule is also the person who can undo it, and willpower is lowest late at night.
Ripple measures every timer with SystemClock.elapsedRealtime(), which keeps counting regardless of what the user sets in the date and time settings.
Relaxing a rule is slow. Pausing a schedule, raising a limit, or unlocking uninstall requires waiting out a cooldown of 15 minutes by default, configurable up to 2 hours, and doubled for short‑video apps.
Whitelisted messaging apps get a 30‑minute per‑session limit.
On Android 11 and newer, Ripple can pair with Wireless Debugging on the phone itself, with no PC and no root. It starts a small local daemon through app_process running as UID 2000 (the shell user). That daemon locks the OS uninstall switch and restarts the blocker within about 2.5 seconds if it is swiped away from Recents.
- Дата записи: 2026-10-27T11:26:10.400Z