2015-09-01 13 views
80

Ho un dispositivo Android che funziona come un dispositivo client vivavoce che utilizza hfp.Controllo del volume per il client Bluetooth senza mani

Using the following code:

sono in grado di ricevere una chiamata e gli altoparlanti e il microfono funzionino come previsto.

Il mio problema è che non riesco a controllare il volume.

Ho provato a utilizzare le seguenti righe di codice per trovare lo stream corretto, ma nessuno di essi sembra funzionare.

ho rintracciato il comando del volume viene inviato dal telefono al cliente nella classe HeadsetClientStateMachine, linea # 1822 nel seguente link: HeadsetClientStateMachine from 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); 
    } 

Quando cambio il volume al telefono, io vedo il registro che mostra il valore aggiornato del suono, il che significa che viene chiamato il metodo setStreamVolume(), ma il volume non cambia.

Qualcuno sa che cosa potrebbe causare questo problema?

EDIT:

Sto ancora cercando una risposta e ora sto guardando verso l'attuazione HAL audio. Sospetto che il collegamento tra l'HAL e il driver audio sia in qualche modo errato ... Non so molto sull'implementazione di basso livello e non sono sicuro di cosa dovrei cercare.

+1

Ho dimenticato di menzionare: Le classi HFPClient non sono presenti in Kitkat: https://android.googlesource.com/platform/frameworks/base/+/kitkat-release/core/java/android/bluetooth/ erano tornate portato da lollipop, quindi il codice che uso è lo stesso dell'implementazione di lecca-lecca. – Distwo

+1

Pensi che questo potrebbe causare il problema? –

+1

Potrebbe essere, sto indagando in quella direzione in questo momento. In parallelo mi chiedevo se esistesse un comportamento noto di Android con profilo client HFP che impediva il controllo del volume. – Distwo

risposta

2

Potresti provare qui sotto. non ho provato io stesso, ma suona problema simile se ho capito bene:.

Android Bluetooth Earpiece Volume

"Android sta usando int 6 per il volume del bluetooth e non documentate Basta usare 6 anziché AudioManager.STREAM_VOICE_CALL e provare, dovrebbe funzionare "

presumo per voi sarà di sostituire AudioManager.STREAM_BLUETOOTH_SCO con 6.

Buona fortuna, spero che funzionerà.

+0

Ho provato anche quello ... – Distwo

Problemi correlati