Ручной контроль громкости клиента 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() метод setStreamVolume() , но громкость не изменяется.

Кто-нибудь знает, что может вызвать эту проблему?

РЕДАКТИРОВАТЬ:

Я все еще ищу ответ, и теперь я смотрю на реализацию аудио HAL. Я подозреваю, что связь между HAL и звуковым драйвером некорректна … Я мало знаю о реализации на низком уровне и не уверен, что я должен искать.

Solutions Collecting From Web of "Ручной контроль громкости клиента Bluetooth"

Не могли бы вы попробовать ниже. Я не пробовал себя, но звучит аналогичная проблема, если я правильно понимаю:

Громкость наушников Bluetooth для Android

« Android использует int 6 для громкости bluetooth и не документирован. Просто используйте 6 вместо AudioManager.STREAM_VOICE_CALL и попробуйте, он должен работать "

Я предполагаю, что вы замените AudioManager.STREAM_BLUETOOTH_SCO на 6.

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