2015-03-04 8 views
6

Ich entwickle eine Anwendung, mit der der Benutzer Barcodes mit einem über Bluetooth verbundenen externen Barcode-Scanner scannen kann. Der Barcode-Scanner fungiert als Tastatur, d. H. Android denkt, dass die gescannten Barcodes auf einer Tastatur eingegeben wurden.Eingaben von der Bluetooth-Tastatur zulassen, auch wenn der Bildschirm gesperrt ist

Die App funktioniert gut, solange der Bildschirm eingeschaltet bleibt.

Sobald der Bildschirm ausschaltet, kann ich mit dem Scannen von Barcodes fortfahren, aber der gescannte Text erreicht die App nicht mehr, sondern ruft Aktionen auf dem Sperrbildschirm auf.

Gibt es eine Möglichkeit, Eingaben von einer externen Tastatur zur App zuzulassen, obwohl der Bildschirm ausgeschaltet wurde?

Alternativ muss ich den Bildschirm zwingen, eingeschaltet zu bleiben, aber dies ist nicht kugelsicher, da der Benutzer den Bildschirm versehentlich sperren könnte.

UPDATE

ich mit einem kleinen Schritt in die richtige Richtung gemacht haben:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

dies die App ohne die (nicht abgesichert) Sperre Bildschirm angezeigt, wenn ein neuer Eingang von der Tastatur wird verarbeitet. Leider fehlt der erste Buchstabe. Dies muss dadurch verursacht werden, dass der erste Buchstabe den Bildschirm aufweckt und der Rest des Eingangs tatsächlich die EditText erreicht.

+0

diesen Code zu Ihrem Scanner Aktivität hinzufügen 'getWindow() addFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);' und fügen Sie diese Berechtigung in einem offenkundigen ' '. du bist fertig. –

+1

Abhängig von der Version können Sie ein Widget zum Hinzufügen auf dem Sperrbildschirm entwickeln. Dies könnte den Keyboad (BT-Scanner) hören und die Daten an Ihre Aktivität senden. – AxelH

Antwort

1

Wenn Sie nur die erste Nummer verlieren, dann können Sie ... das mit der Check Digit wiederherstellen.

Ich weiß, es ist ein Hack, aber es sollte dieses Problem lösen.

+0

Ich vermisse das erste Zeichen des decodierten Barcodes (die letzte Zeichenfolge). Ich habe keinen Zugang zu dem, was der Barcodescanner tatsächlich gelesen hat, sondern zu dem, was er als Tastatur zurückgibt. Ich weiß auch nicht, welche Art von Barcode ich erhalte. Ich fürchte, das ist keine Option. – Baz

2

Dies funktioniert für mich in einer ähnlichen Situation. Halten Sie den Bildschirm während der Anwendung im Vordergrund an. .

getWindow().addFlags(
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
); 
+0

Wenn der Benutzer versehentlich den Ein-/Ausschalter seines Geräts drückt, leitet dies die Eingabeereignisse weiterhin an die App weiter? – Baz

+0

Ich schätze, es wird keinen kugelsicheren Ansatz geben. Was passiert, wenn sich eine andere Aktivität in den Vordergrund stellt? Wäre es nicht genug, eine Bestätigung zu bestätigen, wenn ein gültiger Code empfangen wurde? – sstn

+0

@sstn Die App tut dies bereits, der Benutzer kann diese Funktion jedoch deaktivieren. Der Unterschied zwischen dem Sperren des Bildschirms und dem Wechseln zu einer anderen App besteht darin, dass das Sperren des Bildschirms einfacher erfolgt (da es sich um eine Hardwareschaltfläche handelt, auf die einfach geklickt werden kann). Ich denke, ich habe kein Glück hier ... – Baz

Verwandte Themen