2017-08-30 4 views
0

Ich wollte programmgesteuert überprüfen, ob die Eingabe vom Benutzer entweder von Soft-Tastatur oder dem Barcode-Scanner an das Android-Tablet angeschlossen ist.Wie kann überprüft werden, ob die Eingabe über Barcodescanner oder über eine Soft-Tastatur erfolgt?

Es gibt keinen Bearbeitungstext in der Aktivität, wo ich diese anwenden möchte, also bitte vermeiden Sie Lösungen, die durch EditText anwendbar sind.

+0

Prüfung Link außer Kraft setzen müssen https://stackoverflow.com/questions/29769204/detect-input-from-software-or-hardware-keyboard –

+0

ok danke, aber ich wollte wissen, ob in einer Aktivität, in der es keine Edittext gibt, aber immer noch Benutzer Eingaben von Hardware-Schlüsseln geben. –

+1

Wenn es keinen 'EditText' gibt, dann gibt es normalerweise keinen Eingabemethodeneditor (Softkeyboard), und daher kommt jede Eingabe von Gerätetasten, Bluetooth-Tastaturen, USB-Tastaturen usw. – CommonsWare

Antwort

0

Mit dispatchKeyEvent können Sie nach einem beliebigen KeyEvent vom Barcodescanner abhören.

@Override 
public boolean dispatchKeyEvent(KeyEvent e) { 
// do something on input 
    return false; // prevent default behaviour 
} 
0

Verwenden folgenden Code-Eingabe/Werte von den Barcode-Scanner zu lesen, so onKeyDown Sie in Ihrer Tätigkeit/Dialog

String barcode=""; 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    log("Key Down keyCode " + keyCode); 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     return super.onKeyDown(keyCode, event); 
    } else if (keyCode == KeyEvent.KEYCODE_ENTER) {//if scanner doesn't return enter key code then make sure that any view must not have focus in window 
     //write your code to process the scanned barcode input 
     barcode = ""; 
    } else { 
     Character input = (char) event.getUnicodeChar(); 
     log("Scanner Input " + input); 
     if (Character.isDigit(input) || Character.isLetter(input)) { 
      barcode += input;//concat the characters 
     } 
    } 
    return true; 
} 
Verwandte Themen