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.
quelle
Antworten:
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.
quelle