Bluetooth-Freisprech-Client-Lautstärkeregelung

Lesezeit: 2 Minuten

Benutzer-Avatar
Zwei

Ich habe ein Android-Gerät, das als Freisprech-Client-Gerät mit hfp fungiert.

Unter Verwendung des folgenden Codes:

Ich kann einen Anruf entgegennehmen und die Lautsprecher und das Mikrofon funktionieren wie erwartet.

Mein Problem ist, dass ich die Lautstärke nicht regulieren kann.

Ich habe versucht, die folgenden Codezeilen zu verwenden, um den richtigen Stream zu finden, aber keiner von ihnen scheint zu funktionieren.

Ich habe den Lautstärkebefehl verfolgt, der vom Telefon an den Client in der Klasse gesendet wurde HeadsetClientStateMachine Zeile #1822 im folgenden Link: HeadsetClientStateMachine von 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);
    }

Wenn ich die Lautstärke am Telefon ändere, sehe ich im Protokoll den aktualisierten Wert des Tons, was bedeutet, dass die setStreamVolume() -Methode aufgerufen wird, aber die Lautstärke ändert sich nicht.

Weiß jemand, was dieses Problem verursachen könnte?

BEARBEITEN:

Ich suche immer noch nach einer Antwort und schaue jetzt auf die Audio-HAL-Implementierung. Ich vermute, dass die Verbindung zwischen dem HAL und dem Audiotreiber irgendwie falsch ist … Ich weiß nicht viel über die Low-Level-Implementierung und bin mir nicht sicher, wonach ich suchen soll.

  • Ich habe vergessen zu erwähnen: Die HFPClient-Klassen sind in Kitkat nicht vorhanden: android.googlesource.com/platform/frameworks/base/+/… Sie wurden von Lollipop zurückportiert, daher ist der Code, den ich verwende, derselbe wie die Lollipop-Implementierung.

    – Distwo

    8. September 2015 um 16:36 Uhr


  • Es könnte sein, ich untersuche gerade in diese Richtung. Parallel dazu habe ich mich gefragt, ob es ein bekanntes Verhalten von Android mit HFP-Client-Profil gibt, das es daran hindert, die Lautstärke zu steuern.

    – Distwo

    8. September 2015 um 16:40 Uhr


  • Das Seltsame ist, dass der Sound funktioniert, das Bluetooth-Lautstärkeänderungsereignis übergeben wird und die Methode setStreamVolume() so aufgerufen wird, wie sie sein sollte. Nur die Lautstärke lässt sich nicht regulieren…

    – Distwo

    8. September 2015 um 16:47 Uhr

  • Ich habe auf unterschiedlicher Hardware getestet, aber alle mit der gleichen Architektur, da es die einzige ist, die mein benutzerdefiniertes Rom unterstützt …

    – Distwo

    8. September 2015 um 17:06 Uhr

  • Ich frage mich, ob dies etwas mit dem Problem zu tun hat: android.googlesource.com/platform/hardware/libhardware/+/…

    – Distwo

    8. September 2015 um 21:58 Uhr

Benutzer-Avatar
Adi

Könnten Sie es bitte unten versuchen. Ich habe es nicht selbst versucht, aber das Problem klingt ähnlich, wenn ich es richtig verstehe:

Android Bluetooth-Kopfhörerlautstärke

Android verwendet int 6 für die Bluetooth-Lautstärke und ist nicht dokumentiert. Verwenden Sie einfach 6 anstelle von AudioManager.STREAM_VOICE_CALL und versuchen Sie es, es sollte funktionieren

Ich nehme an, Sie müssen AudioManager.STREAM_BLUETOOTH_SCO durch 6 ersetzen.

Viel Glück, ich hoffe es klappt.

1280370cookie-checkBluetooth-Freisprech-Client-Lautstärkeregelung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy