Bluetooth Freisprech-Client-Lautstärkeregelung


80

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

Verwenden Sie den folgenden Code:

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

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

Ich habe versucht, die folgenden Codezeilen zu verwenden, um den richtigen Stream zu finden, aber keine davon scheint zu funktionieren.

Ich habe den Volume-Befehl verfolgt, der vom Telefon an den Client in der Klasse HeadsetClientStateMachine, Zeile 1822, unter folgendem Link gesendet wird : 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, wird im Protokoll der aktualisierte Wert des Tons angezeigt. Dies bedeutet, dass die setStreamVolume()Methode aufgerufen wird, die Lautstärke sich jedoch nicht ändert.

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

BEARBEITEN:

Ich bin immer noch auf der Suche 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 Implementierung auf niedriger Ebene und bin mir nicht sicher, wonach ich suchen soll.


1
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 von mir verwendete Code der gleiche wie die Lollipop-Implementierung.
Distwo

1
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 verhindert, dass es die Lautstärke steuert.
Distwo

1
Der seltsame Teil ist, dass der Sound funktioniert, das Ereignis zur Änderung der Bluetooth-Lautstärke übergeben wird und die setStreamVolume () -Methode so aufgerufen wird, wie sie sein sollte. Es kann einfach nicht scheinen, die Lautstärke anzupassen ...
Distwo

Ich habe auf verschiedener Hardware getestet, aber alle mit der gleichen Architektur wie die einzige, die mein benutzerdefiniertes Rom unterstützt ...
Distwo

Ich frage mich, ob dies irgendetwas mit dem Problem zu tun hat
Distwo

Antworten:


3

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

Android Bluetooth Earpiece Volume

" 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 sollte funktionieren. "

Ich gehe davon aus, dass Sie AudioManager.STREAM_BLUETOOTH_SCO durch 6 ersetzen werden.

Viel Glück, ich hoffe es wird funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.