Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awkward Button

A panic button for awkward social situations.

Secretly tap ESCAPE and your phone shows a believable interruption — a fake incoming call (with system ringtone), a calendar-style reminder, or a full-screen emergency call.

No backend. Settings stay on device.

Features

  • Home — one big ESCAPE button
  • Setup — fake caller name/subtitle, scenario, countdown delay, notification copy
  • Scenarios
    • Get me out of here → fake incoming call + system ringtone
    • End this conversation → fake reminder notification
    • I need to leave NOW → full-screen emergency call + ringtone
  • Countdown before the escape UI appears
  • Persisted settings via shared_preferences

Requirements

  • Flutter 3.44+ / Dart 3.12+
  • Android device or emulator (ringtone uses a native Android channel)

Getting started

flutter pub get
flutter run

Build a debug APK

flutter build apk --debug

APK output:

build/app/outputs/flutter-apk/app-debug.apk

Xiaomi / Redmi install note

If install fails with INSTALL_FAILED_USER_RESTRICTED:

  1. Enable Developer options → Install via USB (often needs a Mi account)
  2. Or copy the APK to the phone and install manually from Files → Download

Wireless debugging alone is not enough — that only connects ADB; install permission is separate.

How it works

  1. Configure contact + scenario in Setup
  2. Tap ESCAPE on the home screen
  3. Optional countdown
  4. Fake call / notification / emergency UI appears
  5. On call scenarios, Android plays the default system ringtone until you accept or decline

The real Phone app cannot be opened as a fake incoming call without being the default dialer. This app uses a native-looking dialer UI plus the system ringtone instead.

Project structure

lib/
  main.dart
  app/                              # App shell
  core/                             # Theme, constants
  shared/widgets/                   # Shared UI
  features/
    home/presentation/              # ESCAPE home
    contacts/domain/                # Fake contact model
    escape/
      domain/                       # Escape scenarios
      data/                         # Native ringtone channel
      presentation/                 # Countdown, call, notification UIs
    settings/
      data/                         # SharedPreferences repository
      presentation/                 # Setup + settings controller

android/app/src/main/kotlin/.../MainActivity.kt
  # MethodChannel: system ringtone start/stop

Product notes also live in docs/README.md.

Stack

Piece Choice
UI Flutter (Material 3)
Fonts Google Fonts (Fraunces + DM Sans)
Persistence shared_preferences
Ringtone Android RingtoneManager via MethodChannel

License

Private experiment — not published to pub.dev.

About

Secret ESCAPE button: believable fake calls & reminders when you need out.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages