TinyHands

Mobile App
Year 2026
Technology Android SDK, Kotlin, Foreground Services, WindowManager Overlay, TileService
Platform Android (Kotlin)
Categories Mobile App

Project Overview

TinyHands is a utility application for Android designed to solve the common issue of accidental touch inputs (e.g., when showing videos to toddlers or handling a phone). By creating a system-level overlay, the app locks the screen to block all touches while allowing the underlying app to continue running visibly. It runs as a persistent Foreground Service, ensuring it remains active in the background until explicitly dismissed.

Unlike typical overlay applications, TinyHands was built with security-sensitivity in mind. It entirely bypasses Android's Accessibility Services, ensuring it is compatible with banking and other high-security applications that flag or block accessibility-based overlays. To unlock the screen, the user performs a custom triple-tap gesture designed to prevent accidental triggers by toddlers.

Technical Implementation

Non-Intrusive Window Overlay: Configured a full-screen WindowManager overlay using the TYPE_APPLICATION_OVERLAY window type. By utilizing standard touch interception (returning true in onTouchEvent) instead of accessibility tools, the overlay blocks interaction without raising security exceptions in other apps.

Position-Locked Triple-Tap: Designed a custom gesture recognition algorithm to handle unlocking. To prevent random tapping from unlocking the device, all three taps must fall within a 600ms temporal window and remain clustered within a tight spatial radius of 80dp from the initial tap. Taps outside this boundary immediately reset the sequence.

Dynamic Orientation Handling: Integrated a DisplayManager.DisplayListener to intercept display rotation events. The service dynamically adjusts, removes, and re-attaches the overlay upon screen rotation to ensure that no gaps in touch blocking are exposed when the phone transitions between portrait and landscape modes.

Interactive Progress Indicator: Draws a custom, corner-anchored padlock UI card directly on the overlay canvas. It displays progress dots that fill up sequentially as valid taps are detected, providing clear visual feedback before triggering a haptic vibration pattern upon successful unlock.

System Integrations: Implemented a Quick Settings system tile (using TileService) and Launcher Shortcuts to allow users to toggle the touch blocker immediately from the notification shade or home screen without needing to launch the main app UI.