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.

Удачи, надеюсь, это сработает.

Другие вопросы по тегам