2015-09-01 1 views
80

J'ai un appareil Android qui fonctionne comme un appareil client mains libres utilisant hfp.Contrôle du volume client mains libres Bluetooth

Using the following code:

Je suis en mesure de recevoir un appel et les haut-parleurs et micro fonctionnent comme prévu.

Mon problème est que je n'arrive pas à contrôler le volume.

J'ai essayé d'utiliser les lignes de code suivantes pour trouver le bon flux, mais aucun d'entre eux ne semble fonctionner.

Je pisté la commande de volume envoyé par le téléphone au client dans la classe HeadsetClientStateMachine, ligne # 1822 dans le lien suivant: 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); 
    } 

Quand je change le volume sur le téléphone, je ne vois le journal affichant la valeur mise à jour du son, ce qui signifie que la méthode setStreamVolume() est appelée, mais le volume ne change pas.

Est-ce que quelqu'un sait ce qui pourrait causer ce problème?

EDIT:

Je cherche toujours une réponse et je cherche maintenant vers la mise en œuvre de HAL audio. Je soupçonne que le lien entre la HAL et le pilote audio est en quelque sorte incorrect ... Je ne sais pas grand-chose sur la mise en œuvre de bas niveau et je ne suis pas sûr de ce que je devrais rechercher.

+1

J'ai oublié de mentionner: Les classes HFPClient ne sont pas présentes dans Kitkat: https://android.googlesource.com/platform/frameworks/base/+/kitkat-release/core/java/android/bluetooth/ Porté de sucette, ainsi le code que j'utilise est le même que l'implémentation de sucette. – Distwo

+1

Pensez-vous que cela peut causer le problème? –

+1

Cela pourrait être, j'étudie dans cette direction en ce moment. En parallèle je me demandais s'il y avait un comportement connu d'Android avec le profil client HFP qui l'empêche de contrôler le volume. – Distwo

Répondre

2

Pourriez-vous s'il vous plaît essayer ci-dessous. Je ne me suis pas essayer, mais semble le même problème si je comprends bien.

Android Bluetooth Earpiece Volume

"Android utilise int 6 pour le volume bluetooth et non documenté Il suffit d'utiliser 6 au lieu de AudioManager.STREAM_VOICE_CALL et essayer, il devrait fonctionner "

Je suppose que vous serez remplacer AudioManager.STREAM_BLUETOOTH_SCO avec 6.

Bonne chance, j'espère que ça va fonctionner.

+0

J'ai essayé ça aussi ... – Distwo