Wie zu erfassen, wichtige Ereignisse aus bluetooth-headset mit android
Meine app gesteuert werden kann durch normale Kopfhörer. Es ist einfach überschreibt "onKeyDown". Aber wichtige Ereignisse aus bluetooth-headset nicht aufgenommen - warum? Oder wie capture bluetooth-Schlüssel-Ereignisse?
den "log cat" zeigt Folgendes an, wenn ich drücken Sie die Taste am headset:
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)
versuchte ich auch, mit Medien umzugehen Schaltfläche Aktionen, aber das funktioniert nicht. meine Idee ist eine frei konfigurierbare Tastenbelegung: der Benutzer wählt "set-Taste" meine app hört auf alle Schlüssel (hardware -, media-Tasten, bluetooth-headset), dann der Benutzer drückt eine Taste, und die Ereignis - /Schlüssel-code, gespeichert in der config.
Summerizing nicht funktioniert Antworten:
Lautstärke-Tasten erfasst werden muss "VOLUME_CHANGED_ACTION". Das problem ist, diese Absichten ausgestrahlt werden, um andere apps und abortBroadcast() funktioniert nicht (es funktioniert nur für die "bestellt" - Sendungen). Ein weiteres problem ist, dass die Tasten auf dem Kabel-headset und auf dem Telefon auslösen onReceive() zweimal (warum?) das bluetooth-headset trigger einmal.
Das nächste Problem ist die 3. Taste am Bluetooth-headset. Es löst voice-Befehl (s-voice startet auf s3), ich habe versucht, viele verschiedene Absichten in Bezug auf diese, aber ich kann nicht "erhalten" diese Taste drücken und weiß nicht warum.
Am Ende möchte ich erfassen alle Arten von Tasten und will Sie nicht behandelt, die von anderen apps (wie mit onKeyDown und "true" zurückgeben).
InformationsquelleAutor der Frage dermoritz | 2013-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie ein broadcast-listener zu
MEDIA_BUTTON
:Sollten Sie sich registrieren dem broadcast receiver innerhalb Ihrer Anwendung (nicht in der manifest-Datei). Ansonsten Google Musik-player schauen Sie Ihre Sendung und an Bord.
Ihre
IntentFilter
Priorität höher sein sollte, die anderen media-Playern Prioritäten in Ihrem Telefon)Hinzufügen
android.permission.BLUETOOTH
permission im manifest zur Unterstützung Bluetooth-headsetDanach erhalten Sie die Schlüssel, die Sie manuell Abbrechen der Sendung mit
abortBroadcast()
.Jedoch die Prioritäten und die
abortBroadcast()
funktionieren, solange jeder app reagiert nur, währendz.B. auch was gespielt wird.
Aber mehrere Benutzer auch erwarten, dass ein "Standard-player" gestartet werden (oder starten von spielen) auf die Schaltfläche drücken, wie der Standard-player, so könnte es passieren einige app mit einer höheren Priorität Nummer lassen nicht die Absicht, kommen durch, um Ihre app
In der
onReceive
Sie können das button-event mitkey.getKeyAction()
erfahren Sie, ob die Taste freigegeben wurde oder gedrückt,key.getKeyCode()
sagt, welche Taste gedrückt wird.Wenn Sie möchten, Griff-Knopf-Kabel-headsets, wie auch
hinsichtlich der Schlüssel-code
KEYCODE_HEADSETHOOK
Überschreiben der
onKeyDown
Methode in alle Aktivitäten und überprüfendie
KeyEvent.KEYCODE_MEDIA_KEYCODE_pressed_key
z.B.
Lautstärke-Taste-integration Beispiel
Android - Lautstärke-Tasten, die in meiner Anwendung
Diese kann die Erlaubnis benötigen,
Oder Sie können versuchen, slimier Implementierungen über den folgenden link
Android-Entwickler-Blog : Umgang mit remote-control-Tasten
Android Tales : Hinzufügen, Headset-Taste Unterstützung, um Ihre Android-Anwendung
InformationsquelleAutor der Antwort Yash Krishnan
Check-out dieser Artikel. Es erklärt, wie etwas umzusetzen ist ähnlich wie mit media-Taste Aktionen.
Ich weiß, Sie haben erwähnt, dass Sie diesen Weg gegangen, ohne Erfolg, immer noch, es zu versuchen. Zeigen Sie Ihre Aufmerksamkeit auf Fallstricke im Zusammenhang mit der Registrierung von broadcast-receiver, Einstellung, Vorsatz-filter, Prioritäten und Berechtigungen hinzufügen (alle im Artikel erklärt).
Hoffe, das wird helfen.
InformationsquelleAutor der Antwort Eugene Loy
Wenn Sie versuchen, hören Sie diese aus einer Tätigkeit, die Verwendung
onKeyDown()
und fangen dieKEYCODE_MEDIA_PLAY_PAUSE
(KEYCODE_MEDIA_PLAY
undKEYCODE_MEDIA_PAUSE
post ICS) wichtige Ereignisse.Auch für die broadcast-Empfänger-Lösung, um sicherzustellen, dass es nicht andere apps installiert und im hintergrund laufen, fangen diese Ereignisse, die möglicherweise Vorrang vor Ihnen.
Auch mal hier gucken: Android - registrieren Sie ein headset-Taste klicken Sie mit BroadcastReceiver
InformationsquelleAutor der Antwort Slartibartfast