У меня есть 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 и звуковым драйвером некорректна... Я мало знаю о реализации на низком уровне и не уверен, что мне нужно искать.