web-dev-qa-db-fra.com

Contrôle du volume client mains libres Bluetooth

J'ai un Android agissant comme un appareil client mains libres utilisant hfp.

en utilisant le code suivant:

Je peux recevoir un appel et les haut-parleurs et le 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 flux correct, mais aucune ne semble fonctionner.

J'ai suivi la commande de volume envoyée du téléphone au client dans la classe HeadsetClientStateMachine, ligne # 1822 dans le lien suivant: HeadsetClientStateMachine de 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);
    }

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

Quelqu'un sait-il ce qui pourrait être à l'origine de ce problème?

MODIFIER:

Je cherche toujours une réponse et je regarde maintenant vers l'implémentation HAL audio. Je soupçonne que le lien entre la couche 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.

80
Distwo

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

Volume de l'écouteur Bluetooth Android

" Android utilise int 6 pour le volume Bluetooth et n'est pas documenté. Utilisez simplement 6 au lieu d'AudioManager.STREAM_VOICE_CALL et essayez, cela devrait fonctionner "

Je suppose que vous devrez remplacer AudioManager.STREAM_BLUETOOTH_SCO par 6.

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

2
Adi