Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TouchEase

Floating Assistive Control Overlay for Android — like iPhone's AssistiveTouch for users with broken or unresponsive physical side buttons.

Tagline: Your buttons, always within reach

Overview

TouchEase displays a small semi-transparent circular button that stays on top of all other apps. Tap it to open a radial/grid popup of system controls — power, volume, screenshot, brightness, home, back, recents, and lock screen. The button is draggable and snaps to screen edges.

Built with Flutter (UI) + Kotlin (native overlay service).

Features

  • Floating Button — Draggable circular overlay, auto-snaps to screen edge, position persists across reboots
  • Control Panel — 3x3 grid of action buttons with scale+fade animation
  • 9 Action Buttons — Power Menu, Volume Up/Down, Screenshot, Brightness, Home, Back, Recents, Lock Screen
  • Customizable — Opacity (20–100%), Size (40–80dp), Theme color, Button enable/disable, Drag-to-reorder buttons, Panel theme (Light/Dark/Auto)
  • Start on Boot — Auto-restarts overlay after device reboot
  • Accessibility Service — Enables Back, Recents, Power Menu, Screenshot (API 28+), Lock Screen (API 28+)

Permissions Required

Permission Purpose
SYSTEM_ALERT_WINDOW Draw floating button over other apps
FOREGROUND_SERVICE Run overlay as foreground service
WRITE_SETTINGS Adjust system brightness
MODIFY_AUDIO_SETTINGS Volume up/down
RECEIVE_BOOT_COMPLETED Start on device boot
Accessibility Service Power dialog, Back, Recents, Screenshot, Lock

Architecture

Flutter Layer (UI)

  • lib/main.dart — App entry with Provider setup
  • lib/screens/home_screen.dart — Permission checks and service start
  • lib/screens/settings_screen.dart — Full settings UI with live preview
  • lib/services/overlay_bridge.dart — MethodChannel bridge to native
  • lib/services/permission_handler.dart — Permission state management
  • lib/services/settings_provider.dart — Settings persistence via SharedPreferences
  • lib/models/settings.dart — Data model + ActionButton enum
  • lib/widgets/color_picker.dart — Theme color selector
  • lib/widgets/button_reorder_list.dart — Drag-to-reorder + enable/disable
  • lib/widgets/floating_preview.dart — Live preview of button changes

Native Android Layer (Kotlin)

  • MainActivity.kt — Flutter host + MethodChannel handler
  • OverlayService.kt — Foreground Service managing the floating overlay
  • OverlayView.kt — Draggable circular button (WindowManager)
  • ControlPanelView.kt — Action button grid popup (WindowManager)
  • TouchEaseAccessibilityService.kt — Accessibility service singleton
  • AccessibilityActionRunner.kt — All 9 action implementations
  • BootReceiver.kt — Auto-start on boot
  • PreferencesManager.kt — SharedPreferences singleton
  • OverlayPermissionHelper.kt — Runtime permission helpers

Tech Stack

  • Flutter — UI framework with Provider + SharedPreferences
  • Kotlin — Native Android overlay service and accessibility
  • Platform Channels — MethodChannel for Flutter ↔ Native communication
  • minSdk 26 (Android 8.0) — Required for TYPE_APPLICATION_OVERLAY
  • targetSdk 34 (Android 14)
  • Material Design 3

Building

flutter pub get
flutter run

Project Structure

touchease/
├── lib/
│   ├── main.dart
│   ├── models/
│   │   └── settings.dart
│   ├── screens/
│   │   ├── home_screen.dart
│   │   └── settings_screen.dart
│   ├── services/
│   │   ├── overlay_bridge.dart
│   │   ├── permission_handler.dart
│   │   └── settings_provider.dart
│   └── widgets/
│       ├── color_picker.dart
│       ├── button_reorder_list.dart
│       └── floating_preview.dart
├── android/app/src/main/
│   ├── AndroidManifest.xml
│   ├── kotlin/com/example/touchease/
│   │   ├── MainActivity.kt
│   │   ├── OverlayService.kt
│   │   ├── OverlayView.kt
│   │   ├── ControlPanelView.kt
│   │   ├── TouchEaseAccessibilityService.kt
│   │   ├── AccessibilityActionRunner.kt
│   │   ├── BootReceiver.kt
│   │   ├── PreferencesManager.kt
│   │   └── OverlayPermissionHelper.kt
│   └── res/
│       ├── xml/accessibility_service_config.xml
│       ├── values/strings.xml
│       └── values/colors.xml
└── pubspec.yaml

About

TouchEase displays a small semi-transparent circular button that stays on top of all other apps. Tap it to open a radial/grid popup of system controls — power, volume, screenshot, brightness, home, back, recents, and lock screen. The button is draggable and snaps to screen edges.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages