Added
- 📡 MQTT + Home Assistant Auto-Discovery: Native MQTT client with full HA integration
- 27 auto-discovered entities in Home Assistant via MQTT Discovery protocol
- 11 sensors: Battery level, brightness, WiFi SSID, WiFi signal, light sensor, IP address, app version, memory used, storage free, current URL, volume
- 6 binary sensors: Screen on/off, screensaver active, battery charging, kiosk mode, device owner, motion detected
- 2 number controls: Brightness (0-100%), volume (0-100%) — adjustable sliders in HA
- 2 switches: Screen power (ON/OFF), screensaver (ON/OFF)
- 5 buttons: Reload, wake, reboot, clear cache, lock
- 1 text entity: Navigate URL — send a URL to load in the WebView
- 20 additional commands via MQTT: TTS, toast, audio play/stop/beep, launch app, execute JS, URL rotation start/stop, restart UI
- Push-based status: Periodic state publishing (configurable 5-3600 seconds, default 30s)
- LWT (Last Will & Testament): Automatic availability tracking — HA shows device as unavailable on disconnect
- Auto-reconnect: Handles WiFi drops and broker restarts with automatic re-publishing of all discovery configs
- Always-on Motion Detection: Configurable option to run camera-based motion detection continuously (not just during screensaver)
- Full command parity with REST API — both interfaces dispatch through the same command handler
- Concurrent operation: MQTT and REST API can run simultaneously
- Eclipse Paho MQTT v3.1.1 with secure password storage (Android Keychain)
- Settings: Broker URL, port, username, password, client ID, base topic, discovery prefix, status interval, allow control
- Connection status indicator in Settings UI
- MQTT settings included in backup/restore
- Full MQTT Documentation
Fixed
-
🔊 No Audio in Lock Mode on Samsung/OneUI Devices: Audio streams were muted by Samsung when
LOCK_TASK_FEATURE_NONEwas setLOCK_TASK_FEATURE_GLOBAL_ACTIONSis now included by default (matches Android's own default whensetLockTaskFeatures()is never called), preventing Samsung/OneUI from muting audio inLOCK_TASK_MODE_LOCKED- Added
AudioManagersafety net: after entering lock task mode,setMasterVolumeMuted(false)is called followed byADJUST_UNMUTEon all audio streams (MUSIC, NOTIFICATION, ALARM, RING) - Settings UI change: "Allow Power Menu" toggle renamed to "🔌 Block Power Menu" with inverted logic — power menu is now allowed by default, admin can explicitly block it if needed
- No migration required: same storage key
@kiosk_allow_power_button— existing user settings preserved; only new installs benefit from the new default - Applied consistently across
KioskModule.kt,MainActivity.kt, andAppLauncherModule.kt
-
🔧 Camera/Microphone Not Working in WebView on Fire OS (Echo Show, Fire tablets) (#63): Auto-grant WebView media/geolocation permissions in kiosk mode
- OS-level permission via
pm grantstill required - WebView now receives runtime permissions automatically when kiosk mode is active
- OS-level permission via