Как получать изменения объема событий для типа потока голоса (в режиме "звонок" )?
Я пытаюсь зарегистрировать широковещательный приемник для обработки события VOLUME_CHANGED_ACTION
, только для типа потока volume_voice
(который я эмпирически рассматриваю как индекс 0
в Settings.System.VOLUME_SETTINGS
).
Метка EXTRA_VOLUME_STREAM_TYPE
скрыта, поэтому я использовал явную строку "android.media.EXTRA_VOLUME_STREAM_TYPE"
. Все это отлично работало на Android 2.3.4 (получилось значение 0
для volume_voice
, как ожидалось), но на 2.3.5 значение, которое это лишнее, имеет значение 10
, которое дает ArrayIndexOutOfBoundsException
на Settings.System.VOLUME_SETTINGS
.
Более того, я вижу, что volume_voice
остается индексом 0
в Settings.System.VOLUME_SETTINGS
.
Существует ли более надежный способ обработки типов потоков VOLUME_CHANGED_ACTION
для volume_voice
?
Изменить или любой другой способ сделать то, что запрашивает название?
Ответы
Ответ 1
Моим временным (и, вероятно, плохим) решением является захват ArrayIndexOutOfBoundsException
, а в блоке catch для проверки типа потока значение Settings.System.VOLUME_SETTINGS.length
.
Это лучшее, что у меня есть до сих пор. Я не знаю, может ли он поймать другие типы потоков, а также, если он будет работать с другими версиями Android, чем 2.3.3-2.3.5.
Ответ 2
Я пытаюсь зарегистрировать широковещательный приемник для обработки события VOLUME_CHANGED_ACTION
В Android SDK нет VOLUME_CHANGED_ACTION
.
Ярлык EXTRA_VOLUME_STREAM_TYPE скрыт, поэтому я использовал явную строку "android.media.EXTRA_VOLUME_STREAM_TYPE".
В Android SDK нет EXTRA_VOLUME_STREAM_TYPE
.
Существует ли более надежный способ обработки VOLUME_CHANGED_ACTION для типов потоков volume_voice?
В Android SDK нет VOLUME_CHANGED_ACTION
.
Независимо от того, что вы пытаетесь сделать, это недокументированный, неподдерживаемый, возможно, не работает в какой-либо конкретной версии Android (прошлое/настоящее/будущее) и может не работать на каком-либо данном устройстве (так как производители могут изменять все, что отсутствует в SDK). Он никогда не будет "прочным" по определению.