Erfassen von wichtigen Ereignissen vom Bluetooth-Headset mit Android

Meine App kann mit einem normalen Headset gesteuert werden. Es überschreibt einfach "onKeyDown". Wichtige Ereignisse vom Bluetooth-Headset werden jedoch nicht erfasst - warum? Oder wie erfasst man Bluetooth-Schlüsselereignisse?

Die "log cat" zeigt Folgendes an, wenn ich die Taste am Headset drücke:

Bluetooth AT recv(3043): AT+VGS=15
AudioPolicyManagerBase(13654): FM radio recording off
AudioService(2261): sendVolumeUpdate, isKeyguardLocked...Not to update Volume Panel.
VolumePanel(2261): change volume by MSG_VOLUME_CHANGED
VolumePanel(2261): onVolumeChanged(streamType: 6, flags: 0)
VolumePanel(2261): Call setChangeSeekbarColor(false)

Ich habe auch versucht, mit den Aktionen der Medientasten umzugehen, aber das funktioniert nicht. meine idee ist ein frei konfigurierbares keymapping: der benutzer wählt "key setzen" meine app hört auf allen tasten (hardware, medientasten, bluetooth headset) dann drückt der benutzer eine taste und der event / key code wird in config gespeichert.

Summieren funktioniert nicht Lautstärketasten müssen mit "VOLUME_CHANGED_ACTION" erfasst werden. Das Problem ist, dass die Absichten auf andere Apps übertragen werden und abortBroadcast () nicht funktioniert (es funktioniert nur für "bestellte" Broadcasts). Ein weiteres Problem ist, dass die Tasten am Kabel-Headset und am Telefon die Funktion onReceive () zweimal auslösen (warum?) Und das Bluetooth-Headset diese Funktion einmal auslösen. Das nächste Problem ist die 3. Taste am Bluetooth-Headset. Es löst einen Sprachbefehl aus (s-voice startet auf s3). Ich habe versucht, viele verschiedene Absichten zu erfassen, aber ich kann diesen Knopfdruck nicht "empfangen" und weiß nicht warum. Am Ende möchte ich alle Arten von Schaltflächen erfassen und nicht, dass sie von anderen Apps bearbeitet werden (z. B. mit onKeyDown und true).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage