~/ai/faq
docs ready

SMS-TTS-Notify — FAQ

frequently asked questions · raw txt · 2026-03-19

General

What does it do?
Reads incoming SMS aloud through a connected headset using TTS. Classifies messages by priority (ALARM / WARNING / INFO), filters through a 7-step pipeline, delivers audio exclusively through the headset.
What platforms?
Android only. Minimum Android 9. Not available for iOS/iPhone.
How much does it cost?
Free. No subscription. No in-app purchases.
Account or registration?
NO. No account, no login, no personal information required. Install → headset → tap ON.
Server or cloud infrastructure?
NO. Entirely on-device. Works immediately with any system already sending SMS.

Offline & Connectivity

Works offline?
YES. 100% offline. No internet. No mobile data. No Wi-Fi. GSM signal only.
Needs mobile data?
NO. SMS is GSM-layer. Independent of mobile data.
Ever connects to internet?
Only Firebase Crashlytics on crash — sends stack trace only. No SMS content, no user data. Firebase Analytics SDK has been completely removed from the build.
Locked screen?
YES. Runs as Foreground Service. Works with screen off/locked.
While using other apps?
YES. Monitors in background regardless of foreground app.

Audio Output

Can audio play through phone speaker?
NEVER. Exclusively through headset. Hardware-enforced via AudioDeviceCallback. Not a setting — cannot be changed.
Headset disconnects mid-message?
TTS stops immediately. Zero speaker fallback. Message logged as INTERRUPTED. SmartSummary plays on reconnect.
Compatible headsets?
Any Bluetooth A2DP, wired 3.5mm, USB-C, USB. Any headset Android recognizes as audio output.
Bone-conduction supported?
YES. Recommended for industrial use — hear TTS + surroundings simultaneously. Compatible with hearing protection and helmets.
Controls volume?
NO. Does not modify any system settings. Reads at current media volume.

Background & Persistence

Runs in background?
YES. Foreground Service. Persistent notification confirms active status.
Survives phone restart?
YES. Auto-starts on boot if previously ON. If OFF before restart, stays OFF.
Survives battery optimization?
YES on stock Android. On Samsung, Xiaomi, Huawei, OPPO and others, additional OEM-specific battery exemption is required — see OEM Battery Setup below.

DND & Silent Mode

Works in DND?
NO — by design. Respects DND/Silent/Vibrate. Messages logged as SKIPPED_SILENT. SmartSummary plays on resume.
Override DND?
NO. Does not modify system settings. Passive monitor only.

Features

Priority routing?
ALARM (highest) → WARNING → INFO. ALARM jumps queue — if 10 INFO queued, ALARM reads first. Active queue management.
SmartSummary?
Spoken catch-up: "Assistant here. While away, I recorded X messages: Y alarms, Z warnings." Triggers: service start, unmute, headset connect, call ends (~1.5s delay). No missed = "Assistant online, standing by." Always in English.
Can I filter by phone number or sender ID?
YES. Whitelist and Blacklist match against the sender field. Phone numbers: enter last 9 digits (e.g. "905123456" matches "+421 905 123 456"). Alphanumeric sender IDs (e.g. "DISPATCH", "SCADA-1"): case-insensitive substring match.
Can I choose the TTS language?
YES. Settings → Status Card → Message Language → CHANGE. SCADA keyword prefixes (ALARM, WARNING, CRITICAL, FAULT, INFO) are always spoken in English. Body spoken in selected language. SmartSummary always in English.
How to stop a message?
Shake phone (ShakeIt — stops + clears queue), headset button (stops current only), Mute button/widget (pauses all).
Mute vs ShakeIt?
Mute = persistent pause until unmuted. ShakeIt = stops current message only, next will play normally.
During phone calls?
TTS auto-pauses (phone + VoIP: WhatsApp, Teams, etc.). SmartSummary ~1.5s after call ends.
Home screen widget?
YES. 1×1 widget. Toggle mute without opening app. Green = active, orange = muted.
Reads WhatsApp / email / notifications?
NO. SMS only. By design — keeps audio channel trusted, no notification noise.

OEM Battery Setup

Why does the app show a battery setup wizard on first launch?
On Samsung, Xiaomi, Huawei, OPPO, OnePlus, Vivo, and Realme, the manufacturer's battery optimization can kill the SMS listener within minutes — while the app still shows green (active). This is called the "ghost green" problem. The wizard guides you through the one-time setup to prevent this.
Which devices need the wizard?
CRITICAL tier (wizard required): Samsung, Xiaomi/Redmi/POCO, Huawei, Honor. HIGH tier (wizard required): OPPO, Realme, Vivo, OnePlus. MINIMAL tier (no wizard): Google Pixel, Nokia, Motorola, stock Android.
I skipped the wizard. How do I complete it later?
Settings → Status Card → OEM Battery Limits row → tap RESUME SETUP.
My widget is green but nothing is being read.
This is the "ghost green" problem. Open the app → Settings → Status Card. Check for OEM Battery or Notification Access warnings. The NLS Health Watchdog will post a system notification ("SMS monitoring may have stopped") within ~12 minutes if the SMS listener is dead.

Permissions

PermissionWhy
RECEIVE_SMSReceive incoming SMS
READ_SMSRead SMS content
FOREGROUND_SERVICEBackground operation
RECEIVE_BOOT_COMPLETEDAuto-start after reboot
INTERNETCrashlytics only
POST_NOTIFICATIONSForeground notification (API 33+)
NOTIFICATION_LISTENERSecondary SMS detection
BLUETOOTH_CONNECTHeadset state detection (API 31+)
NOT RequiredStatus
LOCATIONNot used
CAMERANot used
CONTACTSNot used
RECORD_AUDIONot used
READ_PHONE_STATENot needed — AudioFocus API

Privacy

Where does SMS data go?
Nowhere external. 100% on-device. Never leaves the device.
Analytics?
NO. Firebase Analytics SDK has been completely removed from the build. Only Crashlytics remains. Zero analytics code in the APK.
Records audio?
NO. Does not record, store, or transmit audio.
Private messages?
Whitelist mode (optional, off by default): reads ONLY matching keywords. Without it, reads all SMS.
GDPR?
All on-device. No data transmitted. No data processor relationship. Uninstall removes all data.

Deployment

Setup time?
Minutes for most devices. On Samsung, Xiaomi, Huawei, OPPO and similar, add 2-3 minutes for the one-time OEM battery wizard.
IT department needed?
NO. No server, no network config, no user management.
Multiple devices?
YES. Per-device install. Centralized config not available in current version.
Battery life?
Minimal impact. Event-driven, no polling. Designed for 8-12h shifts.

Troubleshooting

Not reading messages?
Check: (1) App ON? (2) Headset connected? (3) DND/Silent off? (4) Mute button green? (5) Whitelist matching? For full decision-tree, see troubleshooting.
Headset button not stopping TTS?
If another media app is active, Android routes the button there. Use ShakeIt Command as the reliable fallback.
Selected language sounds wrong?
Voice pack may be missing. Settings → Status Card → Message Language → CHANGE → ADD LANGUAGE.
Notice: SMS-TTS-Notify is supplementary. Does not replace native SMS app. Do not rely solely on it for safety-critical notifications.