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ć.