Die Selfie-Fernbedienung zeigt sich in Android als Bluetooth-Tastatur, oder? Oder als HID (Human Interface Device) im Allgemeinen.
Wenn das der Fall ist, dann fügen Sie die onCreate()
;
takeKeyEvents(true);
Dies erklärt in the documentation:
anfordern, die wichtigsten Ereignisse dieser Tätigkeit kommen. Verwenden Sie dies, wenn Ihre Aktivität keine Ansichten mit Fokus hat, die Aktivität jedoch weiterhin eine Chance zur Verarbeitung wichtiger Ereignisse haben soll.
Aufschalten der onKeyUp()
(in Ihrer Aktivität) und einige Aktionen auf die Tasten zuweisen, die Sie verwenden möchten:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
Log.d(this.getClass().getName(), "KEYCODE_MEDIA_PLAY_PAUSE");
// Do something...
return true;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
Log.d(this.getClass().getName(), "KEYCODE_MEDIA_PREVIOUS");
// Do something...
return true;
case KeyEvent.KEYCODE_MEDIA_NEXT:
Log.d(this.getClass().getName(), "KEYCODE_MEDIA_NEXT");
// Do something...
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.d(this.getClass().getName(), "KEYCODE_VOLUME_DOWN");
// Do something...
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
Log.d(this.getClass().getName(), "KEYCODE_VOLUME_UP");
// Do something...
return true;
case KeyEvent.KEYCODE_ENTER:
Log.d(this.getClass().getName(), "KEYCODE_ENTER");
// Do something...
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
Die onKeyUp()
Methode is explained:
aufgerufen, wenn ein Schlüssel war freigegeben und nicht von einer der Ansichten innerhalb der Aktivität behandelt. So drücken zum Beispiel Tasten, während der Cursor in einem TextView ist, wird das Ereignis nicht auslösen (es sei denn, es ist eine Navigation zu einem anderen Objekt), weil TextView seinen eigenen Schlüssel drückt.
Die Standardimplementierung behandelt KEYCODE_BACK, um die Aktivität zu stoppen und zurückzugehen.
Lassen Sie das System einfach alle Schlüssel behandeln, die Sie nicht erfassen möchten. Das macht der default
Block.
Überprüfen Sie einfach, welcher Schlüsselcode von der Fernbedienung kommt und entfernen Sie die unnötigen Fälle. Dies sind nur einige Kandidaten für Schlüsselcodes, die eine Fernbedienung senden könnte.
Und natürlich gilt alles, was für die Handhabung von Tastaturen allgemein gilt auch für die Fernbedienung. (Angenommen, es ist ein HID. Aber sie sind in der Regel. Bluetooth-Headsets mit Tasten sind dann eine völlig andere Geschichte.)
Dies ermöglicht Ihnen, die Fernbedienung in Ihrer eigenen App zu verwenden. Ich sehe nicht, warum BroadcastReceivers oder onClickListeners beteiligt sein sollten, aber vielleicht habe ich den Punkt verpasst.
Wenn Sie möchten, dass etwas im Hintergrund läuft und Schlüsselereignisse an andere Anwendungen sendet/die Tasten der Fernbedienung auf andere Tastencodes umsetzt, um Systemdienste auszulösen, dann ist das auch eine andere Geschichte.
hallo, hast du eine lösung für diese aufgabe gefunden? –
@KadzhaevMarat Leider konnte ich keine Lösung finden – Sid