Bluetooth handsfree client volumeregeling

Ik heb een Android-apparaat dat fungeert als een handsfree clientapparaat met hfp.

Gebruik de volgende code:

Ik kan een oproep ontvangen en de luidsprekers en microfoon werken zoals verwacht.

Mijn probleem is dat ik het volume niet kan regelen.

Ik heb geprobeerd de volgende regels code te gebruiken om de juiste stream te vinden, maar geen enkele lijkt te werken.

Ik heb de volumeopdracht gevolgd die van de telefoon naar de client werd verzonden in de klasse HeadsetClientStateMachine, regel #1822 in de volgende link: HeadsetClientStateMachine van 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);
    }

Als ik het volume op de telefoon verander, zie ik het logboek met de bijgewerkte waarde van het geluid, wat betekent dat de methode setStreamVolume()wordt aangeroepen, maar het volume niet wijzigen.

Weet iemand wat dit probleem kan veroorzaken?

BEWERKEN:

Ik ben nog steeds op zoek naar een antwoord en ben nu op zoek naar de audio HAL-implementatie. Ik vermoed dat de link tussen de HAL en het audiostuurprogramma op de een of andere manier onjuist is… Ik weet niet veel over implementatie op laag niveau en weet niet zeker waar ik naar moet zoeken.


Antwoord 1, autoriteit 100%

Kunt u het hieronder proberen.
Ik heb het zelf niet geprobeerd, maar klinkt als een soortgelijk probleem als ik het goed begrijp:

Android Bluetooth-oortelefoonvolume

Android gebruikt int 6 voor bluetooth-volume en is niet gedocumenteerd.
Gebruik gewoon 6 in plaats van AudioManager.STREAM_VOICE_CALL en probeer het, het zou moeten werken

Ik neem aan dat je AudioManager.STREAM_BLUETOOTH_SCO vervangt door 6.

Veel succes, ik hoop dat het zal werken.

Other episodes