我正在使用霍尼韦尔条码扫描器(HF680)。我将它连接到我的 Android 设备(桌面)。我需要将扫描数据作为文本获取。它像键盘一样工作。所以,好像我无法像相机扫描一样在内部获取数据。
我该如何处理?
我不认为霍尼韦尔的配套SDK和文档。我找不到它。
最简单的方法可能是使用
EditText
。聚焦时,扫描仪输入将进入其中。然后你可以从那里阅读它。
这取决于您使用的端口。 HF680 提供两个不同的端口。如果你当时使用 USB,则不能使用串行输入。但它充当键盘。所以,你可以
onKeyDown
方法。
val barcode = StringBuilder("")
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
// TODO: add up the chars
barcode.append(...)
return super.onKeyDown(keyCode, event)
}
通常,扫描仪会提供一些指示结束的功能,例如“ ' 或 Enter 键或特殊字符。否则,您可以设置一个接收时间,以便在几毫秒后它不会附加字符串。
比
dispatchKeyEvent
好用onKeyDown
. private var barcode = ""
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
val c = event.unicodeChar
//accept 0-9, A-Z, a-z, " " and "enter"
if (c in 48..57 || c in 65..90 || c in 97..122 || c == 10 || c == 32) {
if (event.action == 0) {
if (c in 48..57 || c in 65..90 || c in 97..122 || c == 32) {
barcode += c.toChar()
} else {
if (barcode != "") {
val bar = barcode
barcode = ""
Log.d("barcode", bar)
//ToDo func()
}
}
}
return true
}