Add feature to Extension. PlayBeepPattern is not enough for emergencies
Extensions that produce audible alerts via PlayBeepPattern (KarooEffect) cannot tell whether the rider has muted the device. The Karoo's mute toggle silences the buzzer channel, which is the only audio output a third-party extension can drive — STREAM_ALARM, Ringtone, MediaPlayer and ToneGenerator all fail to produce sound on the Karoo 3 because there is no general-purpose speaker, only a piezo buzzer wired to Hammerhead's private audio path. (Confirmed on Karoo 3 running Android 12: RingtoneManager.getDefaultUri(TYPE_ALARM) returns a URI that does not exist on the device — content://settings/system/alarm_alert → IOException: Failed to instantiate extractor.)
That leaves extensions with two unsatisfying choices:
- Trust that the rider knows they've muted the device, accept that safety-critical beeps may be silent, and document the limitation.
- Add a manual "Karoo sound is currently muted" toggle inside the extension that the rider must keep synchronised by hand — guaranteed to drift out of sync.
For a safety extension (crash detection, SOS, medical alerts) this is a real footgun: the rider mutes the device for a quiet café stop, forgets, and the audible portion of a real emergency goes silent without any in-app indication.
Request
Either of these would be enough to let extensions surface the limitation in the UI at ride start (e.g. "Karoo is muted — emergency beeps will not sound"):
- A read-only API on
KarooSystemServicesuch asisSoundEnabled(): Boolean/getBeepVolume(): Int. - Or a new
KarooEvent(e.g.OnSoundSettingsChanged(enabled: Boolean, volume: Int)) so extensions can subscribe to the current state and react to changes.
Either is enough for our use case — we don't need to override the mute (the rider's choice is the rider's choice), just to know about it so we can warn at ride start.
Please sign in to leave a comment.
Comments
0 comments