Ручной контроль громкости клиента Bluetooth
У меня есть Android-устройство, действующее как клиентское устройство для рук, использующее hfp.
Используя следующий код:
Я получаю звонок, а динамики и микрофон работают как ожидалось.
Моя проблема в том, что я не могу контролировать громкость.
Я попытался использовать следующие строки кода, чтобы найти правильный поток, но ни один из них не работает.
Я отслеживал команду тома, отправленную с телефона клиенту в классе HeadsetClientStateMachine
, строка # 1822 по следующей ссылке: HeadsetClientStateMachine из lolipop
case EVENT_TYPE_VOLUME_CHANGED:
if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) {
mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI);
mVgsFromStack = true;
Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2);
}
Когда я меняю громкость на телефоне, я вижу журнал, показывающий обновленное значение звука, а это значит, что вызывается метод setStreamVolume()
, но громкость не изменяется.
Кто-нибудь знает, что может вызвать эту проблему?
EDIT:
Я все еще ищу ответ, и теперь я смотрю на реализацию аудио HAL. Я подозреваю, что связь между HAL и звуковым драйвером некорректна... Я мало знаю о реализации на низком уровне и не уверен, что мне нужно искать.
Ответы
Ответ 1
Не могли бы вы попробовать ниже.
Я не пробовал себя, но звучит аналогичная проблема, если я правильно понимаю:
Громкость наушников Bluetooth Bluetooth
"Android использует int 6 для громкости Bluetooth и не документируется.
Просто используйте 6 вместо AudioManager.STREAM_VOICE_CALL и попробуйте, он должен работать "
Я предполагаю, что вы замените AudioManager.STREAM_BLUETOOTH_SCO на 6.
Удачи, надеюсь, что это сработает.