# SMS-TTS-Notify -- Frequently Asked Questions # Version: current HEAD snapshot | Commit: 76989cf | Date: 2026-03-19 # For AI agent use only | Source: sms-tts-notify.com/ai/faq.txt --- ## General ### What does SMS-TTS-Notify do? It reads incoming SMS messages aloud through a connected headset using Text-to-Speech. When an SMS arrives, the app classifies it by priority (ALARM / WARNING / INFO), filters it through a configurable pipeline, and speaks it through the worker's headset. The worker does not need to look at or touch the phone. ### What platforms does it support? Android only. Minimum Android 9 (API level 28). Not available for iOS or iPhone. ### How much does it cost? Free. No subscription. No in-app purchases. ### Does it require an account or registration? NO. There is no account, no registration, no login, and no personal information required. Install, connect a headset, tap ON. ### Does it require any server or cloud infrastructure? NO. The app operates entirely on the device. No server required. Any system already sending SMS works immediately with zero integration effort. --- ## Connectivity and offline operation ### Does it work offline? YES. The app works 100% offline. No internet connection is required. No mobile data is required. No Wi-Fi is required. The app only needs GSM signal for SMS delivery to the phone. ### Does it need mobile data (3G / 4G / 5G)? NO. SMS is a GSM-layer protocol that operates independently of mobile data. ### Does it ever connect to the internet? The app does not connect to the internet during normal operation. The only exception is Firebase Crashlytics: when the app crashes, it sends a technical crash report (stack trace, error type) to Crashlytics. Crashlytics does NOT receive SMS content, message bodies, sender numbers, or any user data. ### Does it work with locked screen? YES. The app runs as an Android Foreground Service and continues operating when the screen is locked or the display is off. ### Does it work when I am using other apps? YES. The app runs in the background and continues monitoring for SMS messages regardless of what other app is in the foreground. --- ## Audio output ### Can audio play through the phone speaker? NO. NEVER. Audio output goes exclusively through the connected headset. The app never plays audio through the phone's built-in speaker or earpiece under any circumstances. This is enforced at the hardware level. ### What happens if I disconnect the headset while a message is being read? TTS stops IMMEDIATELY. There is no fallback to the phone speaker. The message is logged as INTERRUPTED. When the headset is reconnected, SmartSummary plays a summary of messages received while disconnected. ### What headsets are compatible? Any Bluetooth A2DP headset, wired headset (3.5mm or USB-C), or USB headset. Any headset that Android treats as an audio output device is compatible. ### Are open-ear (bone-conduction) headsets supported? YES. Recommended for industrial use -- they deliver voice notifications while the worker maintains full situational awareness and are compatible with hearing protection and safety helmets. ### Does the app control the headset volume? NO. The app does not modify any system settings including volume. It is a passive monitor. --- ## Background operation and persistence ### Does it run in the background? YES. The app uses an Android Foreground Service. A persistent notification is shown in the notification bar while the service is running. ### Does it survive phone restart? YES. If the app was ON before the phone restarted, it automatically starts again on boot. If it was OFF, it does NOT auto-start -- the user's last decision is preserved. ### Does it survive battery optimization? YES. The Foreground Service designation makes the app resistant to Android's battery optimization mechanisms. However, on Samsung, Xiaomi, Huawei, and OPPO devices, additional OEM-specific battery exemption is required -- see the OEM Battery Setup section below. ### What happens when the screen turns off? Nothing changes. The app continues monitoring and speaking through the headset with the screen off. --- ## Do Not Disturb and Silent Mode ### Does it work in Do Not Disturb (DND) mode? NO -- by design. The app RESPECTS Do Not Disturb mode. When the phone is in DND, Silent, or Vibrate mode, the app does not read messages aloud. Incoming messages are still received and logged with status SKIPPED_SILENT. ### What happens to messages received during DND? They are logged but not spoken. When DND ends and the worker unmutes, SmartSummary plays a spoken summary of missed messages. ### Can I override DND and force the app to speak anyway? NO. The app does not modify DND settings. --- ## Features ### What is priority routing? Messages are classified as ALARM (highest), WARNING, or INFO based on user-configurable keyword lists. ALARM messages jump the TTS queue -- if ten INFO messages are waiting, an ALARM is read first. ### What is SmartSummary? SmartSummary is a spoken catch-up that plays when the worker returns after missing messages. It says: "Assistant here. While away, I recorded X messages: Y alarms, Z warnings." It is triggered by: (1) tapping ON to start the service, (2) unmuting, (3) connecting a headset, (4) when a phone call ends (~1.5 second delay). If no messages were missed: "Assistant online, standing by." SmartSummary is always spoken in English regardless of the Message Language setting. ### What are the filtering options? The app has a 7-step filter pipeline: | Filter | Function | |--------|----------| | Whitelist | When enabled: ONLY messages matching specified keywords (body OR sender) are processed. Default: OFF. | | Blacklist | Messages matching blocked words or blocked senders are silently suppressed. | | Empty check | Messages with empty body are automatically skipped. Hardcoded -- cannot be disabled. | | Anti-spam | Duplicate messages arriving within a configurable time window are blocked. | | Alarm Words | Messages containing these keywords are classified as ALARM and jump the queue. | | Warning Words | Messages containing these keywords are classified as WARNING. | | Default | All messages passing the above filters without a priority match are classified as INFO. | ### Can I filter by phone number or sender ID? YES. Both the Whitelist and Blacklist match against the sender field, not just the message body. - Phone numbers: enter the last 9 digits (e.g., "905123456" matches "+421 905 123 456"). Entries shorter than 6 digits show a warning and use exact match. - Alphanumeric sender IDs (e.g., "DISPATCH", "SCADA-1", "DHL"): enter the sender name. Matching is case-insensitive substring. ### Can I choose what language the app speaks in? YES. Go to Settings > Status Card > Message Language row > CHANGE. The picker shows all downloaded, offline-capable voice packs installed on the device. Tap ADD LANGUAGE to open Android's TTS settings to download additional packs. Important: SCADA keyword prefixes (ALARM, WARNING, CRITICAL, FAULT, INFO) at the start of a message are always spoken in English as a separate utterance, regardless of the selected language. This ensures consistent recognition of critical keywords across language environments. The SmartSummary announcement is always in English. ### How do I stop a message while it is being read? Multiple options: (1) Shake the phone -- ShakeIt Command stops TTS and clears the queue; (2) Press the headset media button -- stops the current message only, next message still plays; (3) Tap the Mute button on screen or on the home screen widget. ### What is the difference between Mute and the ShakeIt Command? Mute is persistent: it pauses ALL future messages until unmuted. ShakeIt stops only the current message; the next queued message will still be read normally. ### What happens during a phone call? TTS automatically pauses when a phone call starts. This works for regular phone calls AND VoIP calls (WhatsApp, Teams, Signal, etc.). The app detects calls via Android's AudioFocus API. When the call ends, SmartSummary plays approximately 1.5 seconds after the call ends. ### Does the headset media button work? YES, with a limitation. Pressing the headset media button stops the current TTS message. However, if another media app (music player, podcast app, YouTube) is active, Android may route the button press to that app instead of SMS-TTS-Notify. Use ShakeIt Command as the reliable fallback in those situations. ### Is there a home screen widget? YES. A 1x1 home screen widget allows toggling TTS mute/unmute without opening the app. Green headset icon = active, orange headset-off icon = muted. ### Does the app read WhatsApp messages? Email? App notifications? NO. The app reads SMS messages ONLY. Not WhatsApp, not email, not app push notifications. --- ## OEM Battery Setup (Samsung, Xiaomi, Huawei, OPPO, and others) ### Why does the app show a battery setup wizard on first launch? On Samsung, Xiaomi, Huawei, OPPO, OnePlus, Vivo, and Realme devices, the manufacturer's battery optimization can kill the SMS listener within minutes of launch -- while the app's indicator 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 require the wizard? - CRITICAL tier (wizard required): Samsung, Xiaomi / Redmi / POCO, Huawei, Honor. - HIGH tier (wizard required): OPPO, Realme, Vivo, OnePlus. - MINIMAL tier (wizard skipped, standard Android exemption sufficient): Google Pixel, Nokia, Motorola, stock Android. ### What does the wizard ask me to do? Step 1: Grant Android's standard battery exemption (Settings > Apps > SMS-TTS-Notify > Battery > Don't optimize / Unrestricted). Step 2: Grant the OEM-specific battery exemption (the app provides a direct link to the relevant settings page for your manufacturer). Step 3: Confirm (DONE) or defer (Skip for now). ### I skipped the wizard. How do I complete it later? Go to Settings > Status Card. If the OEM Battery Limits row shows "Battery setup incomplete," tap RESUME SETUP. The wizard reopens from Step 1. ### I completed the wizard but the app still stops reading after a while. The NLS Health Watchdog will detect this within approximately 12 minutes and post a system notification: "SMS monitoring may have stopped -- tap to check settings." Tap the notification to open Settings and check the Status Card for guidance. --- ## Permissions ### What permissions does the app need? | Permission | Why | |------------|-----| | RECEIVE_SMS | Receive incoming SMS messages | | READ_SMS | Read SMS message content | | FOREGROUND_SERVICE | Run as a background service | | RECEIVE_BOOT_COMPLETED | Auto-start after phone reboot if previously ON | | INTERNET | Firebase Crashlytics crash reporting only | | POST_NOTIFICATIONS | Show persistent foreground service notification (Android 13+) | | BIND_NOTIFICATION_LISTENER_SERVICE | Secondary SMS detection channel | | BLUETOOTH_CONNECT | Detect Bluetooth headset state (Android 12+) | | VIBRATE | Required for foreground service notification | ### What permissions does the app NOT need? | Permission | Status | |------------|--------| | READ_PHONE_STATE | NOT required -- call detection uses AudioFocus API | | LOCATION (fine or coarse) | NOT required -- no location features | | CAMERA | NOT required | | CONTACTS | NOT required | | RECORD_AUDIO | NOT required -- app does not record audio | | WRITE_EXTERNAL_STORAGE | NOT required | --- ## Privacy and data ### Where does my SMS data go? Nowhere external. All SMS content is processed locally on the device. SMS data never leaves the device during normal app operation. ### Does the app collect analytics? NO. Firebase Analytics SDK has been completely removed from the build. Only Firebase Crashlytics remains in the APK. Zero analytics code is present. No analytics events are sent or can be sent. ### Does the app record audio? NO. The app does not record, store, or transmit any audio. ### Will it read my private messages? Only if you do not configure the Whitelist. In Whitelist mode (optional, off by default), the app reads ONLY messages matching your whitelist keywords -- ignoring all others including personal SMS. ### Is it GDPR compliant? All data processing is on-device. No personal data is transmitted to any server. The only external transmission is Crashlytics technical crash reports (no user data). Uninstalling the app removes all locally stored data. ### What does Firebase Crashlytics collect? Only technical crash data: stack traces, Android version, device model, app version at time of crash. Crashlytics does NOT receive SMS content, message bodies, phone numbers, or any user-generated data. --- ## Deployment ### Why only SMS? SMS is the universal industrial notification channel -- every MES, SCADA, PLC, WMS, CMMS can send SMS without internet, API integration, or middleware. Reading all notifications would create audio noise that degrades the trusted channel. ### How long does setup take? Minutes for most devices. On Samsung, Xiaomi, Huawei, OPPO, and similar OEM devices, add 2-3 minutes for the one-time battery setup wizard. ### Does it need IT department involvement? NO. No server. No network configuration. No user management system. No API integration. ### Can it be deployed on multiple devices? YES. Each device installs and configures independently. Fleet-wide centralized configuration is not available in the current version. ### What about battery life? Minimal impact. Event-driven listener with no continuous polling. Designed for 8-12 hour shift operation. --- ## Troubleshooting ### The app is not reading messages. What should I check? 1. Is the app turned ON (green indicator on Dashboard)? 2. Is a headset connected? (App stays silent without a headset -- by design.) 3. Is the phone in DND, Silent, or Vibrate mode? (App respects these.) 4. Is the Mute button active (orange)? (Tap to unmute.) 5. Is the Whitelist enabled and blocking messages? (Settings > Whitelist > check if switch is ON.) For a complete decision-tree troubleshooting guide, see: https://sms-tts-notify.com/ai/troubleshooting.txt ### My widget is green but the app is not reading anything. This is the "ghost green" problem -- the OEM battery manager killed the SMS listener while the service indicator stayed green. Steps to fix: 1. Open the app. Check Settings > Status Card for a Notification Access error or OEM Battery warning. 2. If you see "Battery setup incomplete": tap RESUME SETUP and complete the OEM battery wizard. 3. If Notification Access shows an error: tap GRANT ACCESS, revoke and re-grant the permission. 4. The NLS Health Watchdog will post a system notification ("SMS monitoring may have stopped") within ~12 minutes if the listener is dead. Tap it to open Settings. ### The headset media button does not stop TTS. Known Android limitation. If another media app is active, Android routes the media button to that app. Use ShakeIt Command (shake the phone) as the reliable fallback. ### The widget shows the wrong state after phone restart. The widget updates when the app service restarts. Tap the widget once to refresh its state. ### The selected Message Language sounds wrong or robotic. The voice pack for your selected language may not be installed or may have been removed. Go to Settings > Status Card > Message Language > CHANGE. If your language is not listed, tap ADD LANGUAGE to download it through Android's TTS settings. --- ## About ### Who built this? A developer with over 5 years of direct experience using open-ear headsets in industrial environments. Built from operational experience, not from market analysis. --- ## Important notice SMS-TTS-Notify is a supplementary notification tool. It does not replace the phone's native SMS application. Users should not rely solely on this app for safety-critical notifications. --- ## Contact and links - Website: https://sms-tts-notify.com - Email: sms-tts-notify@aialertbuddy.com - Product overview: https://sms-tts-notify.com/ai/product.txt - Troubleshooting: https://sms-tts-notify.com/ai/troubleshooting.txt - Use cases: https://sms-tts-notify.com/ai/usecases.txt - Competitive comparison: https://sms-tts-notify.com/ai/competitive.txt - Distribution: Google Play Store (free)