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()
метод вызывается, но громкость не меняется.
Кто-нибудь знает, что может быть причиной этой проблемы?
РЕДАКТИРОВАТЬ:
Я все еще ищу ответ и теперь смотрю на реализацию HAL аудио. Я подозреваю, что связь между HAL и аудиодрайвером как-то неверна... Я не знаю много о низкоуровневой реализации и не уверен, что мне нужно искать.
1 ответ
Не могли бы вы попробовать ниже. Я не пробовал себя, но звучит похожая проблема, если я правильно понимаю:
Объем Bluetooth-гарнитуры Android
"Android использует int 6 для громкости Bluetooth и не документирован. Просто используйте 6 вместо AudioManager.STREAM_VOICE_CALL и попробуйте, это должно работать"
Я предполагаю, что для вас будет заменить AudioManager.STREAM_BLUETOOTH_SCO на 6.
Удачи, надеюсь, это сработает.