Regulacja głośności klienta głośnomówiącego Bluetooth


80

Mam urządzenie z Androidem działające jako urządzenie klienckie bez użycia rąk przy użyciu technologii HFP.

Używając poniższego kodu:

Jestem w stanie odebrać telefon, a głośniki i mikrofon działają zgodnie z oczekiwaniami.

Mój problem polega na tym, że nie mogę kontrolować głośności.

Próbowałem użyć następujących wierszy kodu, aby znaleźć właściwy strumień, ale żaden z nich nie działa.

Śledziłem polecenie głośności wysyłane z telefonu do klienta w klasie HeadsetClientStateMachine, wiersz nr 1822 w poniższym linku: HeadsetClientStateMachine z 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);
    }

Kiedy zmieniam głośność w telefonie, widzę dziennik pokazujący zaktualizowaną wartość dźwięku, co oznacza, że setStreamVolume()metoda jest wywoływana, ale głośność się nie zmienia.

Czy ktoś wie, co może być przyczyną tego problemu?

EDYTOWAĆ:

Wciąż szukam odpowiedzi i teraz szukam implementacji audio HAL. Podejrzewam, że powiązanie między HAL a sterownikiem audio jest jakoś niepoprawne ... Nie wiem zbyt wiele o implementacji niskiego poziomu i nie jestem pewien, czego powinienem szukać.


1
Zapomniałem wspomnieć: Klasy HFPClient nie są obecne w Kitkat: android.googlesource.com/platform/frameworks/base/+/… zostały przeniesione z Lollipopa, więc kod, którego używam, jest taki sam jak implementacja Lollipopa.
— Distwo,

1
Możliwe, że teraz badam ten kierunek. Równolegle zastanawiałem się, czy istnieje znane zachowanie Androida z profilem klienta HFP, które uniemożliwia mu kontrolowanie głośności.
— Distwo,

1
Dziwne jest to, że dźwięk działa, zdarzenie zmiany głośności bluetooth jest przekazywane, a metoda setStreamVolume () jest wywoływana tak, jak powinna. Po prostu nie wydaje się, aby wyregulować głośność ...
— Distwo,

Testowałem na innym sprzęcie, ale wszystkie mają tę samą architekturę, ponieważ jest to jedyny, który obsługuje mój niestandardowy rom ...
— Distwo

Ciekawe, czy to ma coś związanego z problemem: android.googlesource.com/platform/hardware/libhardware/+/…
— Distwo

Odpowiedzi:


3

Czy mógłbyś spróbować poniżej. Nie próbowałem sam, ale brzmi podobnie, jeśli dobrze rozumiem:

Głośność słuchawki Bluetooth z systemem Android

„ Android używa int 6 do regulacji głośności Bluetooth i nie jest udokumentowany. Po prostu użyj 6 zamiast AudioManager.STREAM_VOICE_CALL i spróbuj, powinno działać ”

Zakładam, że zamienisz AudioManager.STREAM_BLUETOOTH_SCO na 6.

Powodzenia, mam nadzieję, że zadziała.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.