Mam urządzenie z Androidem działające jako urządzenie klienckie bez użycia rąk przy użyciu technologii HFP.
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ć.
źródło
Odpowiedzi:
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.
źródło