You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Works — AlarmManager.setAlarmClock() fires profile changes; re-inits TTS settings
What's missing / unreliable
No independent timed schedule — speech is only triggered by incoming BLE readings. If the sensor drops out, there is silence. There is no "speak the current value every N minutes" timer (no WorkManager job, no AlarmManager periodic wakeup for speech itself).
No screen-state gate — no check of KeyguardManager before speaking; the app speaks on every throttled reading regardless of whether the screen is on or the user is interacting.
No conditional speech — no "only speak if out of target range", "only speak if asleep", etc.
Doze reliability — depends entirely on the foreground service staying alive. No explicit wake-lock acquired before TTS call; on aggressive OEMs the TTS engine may be throttled.
Several settings commented out — speakMessages, talk_touch, profile selector row are dead UI code in TalkerSettingsScreen.kt.
Recommended improvements
Add a WorkManager periodic task (or AlarmManager exact wakeup) that fires Talker.speak(currentValue) at the user-configured interval, independent of readings.
Add a KeyguardManager.isDeviceLocked check so speech can optionally be suppressed when the screen is on / phone unlocked.
Acquire a partial wake-lock briefly around the TTS call to survive doze.
3. AOD / Lock Screen Notification
What's working
Area
File(s)
Status
Persistent foreground notification
Notify.java lines 1047–3350
Complete — value + trend arrow + 3-hour sparkline graph via RemoteViews
Collapsed layout
notification_material.xml
Complete — value + arrow + status text
Expanded layout
notification_material_regular_expanded.xml
Complete — adds full chart
Chart / bitmap rendering
NotificationChartDrawer.java
Complete — IBM Plex Sans font, color-coded value, target range bands
AOD / lock screen overlay
AODOverlayService.kt (588 lines)
Complete — TYPE_ACCESSIBILITY_OVERLAY + FLAG_SHOW_WHEN_LOCKED via AccessibilityService
Lock/unlock detection
AODOverlayService.kt lines 151–158
Complete — KeyguardManager + screen state broadcasts + 100 ms poll
Light sensor adaptive dim
AODOverlayService.kt lines 220–252
Complete — logarithmic lux→alpha, 0.15 smoothing
Burn-in protection
AODOverlayService.kt lines 326–399
Complete — position randomisation (TOP/CENTER/BOTTOM × LEFT/CENTER/RIGHT)
Approach: JugglucoNG uses an AccessibilityService overlay (works on Android 6+, universally) rather than native lock screen widget APIs (Android 12+ Keyguard host) or lock screen Complications (Android 13+). Requires user opt-in via Accessibility settings; may be blocked on some Samsung/Huawei OEM lock screens.
Chart in collapsed notification: exists but disabled by default (notification_chart_collapsed pref).
No snooze/dismiss action on the persistent glucose notification — alarm notifications have action buttons, the always-on glucose notification does not.