Регулювання гучності клієнта за допомогою Bluetooth


80

У мене є андроїд-пристрій, який працює як клієнтський пристрій для вільних рук, використовуючи 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
Я забув згадати: Класи HFPClient відсутні в Kitkat: android.googlesource.com/platform/frameworks/base/+/… вони були перенесені назад з льодяника, отже, код, який я використовую, такий самий, як реалізація льодяника.
Distwo

1
Можливо, зараз я розслідую в цьому напрямку. Паралельно мені було цікаво, чи була відома поведінка андроїда з профілем клієнта HFP, що заважає йому контролювати гучність.
Distwo

1
Дивною частиною є те, що звук працює, передається подія зміни гучності Bluetooth, а метод setStreamVolume () називається належним чином. Це просто не може регулювати гучність ...
Distwo

Я тестував на різному обладнанні, але все з однаковою архітектурою, оскільки це єдине, яке підтримує мій власний ROM ...
Distwo

Цікаво, чи є це щось пов’язане з проблемою: android.googlesource.com/platform/hardware/libhardware/+/…
Distwo

Відповіді:


3

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

Гучність динаміка Android Bluetooth

" Android використовує int 6 для гучності Bluetooth і не задокументований. Просто використовуйте 6 замість AudioManager.STREAM_VOICE_CALL і спробуйте, це має спрацювати "

Припускаю, для вас буде замінити AudioManager.STREAM_BLUETOOTH_SCO на 6.

Удачі, сподіваюся, це спрацює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.