[英]Handling a bluetooth barcode scanner in Android
我有一个简单的Android应用程序,它允许用户将文本键入文本框(条形码),然后按一个按钮将其发送到服务器,并获得响应。
这很好用。
现在我想连接一个蓝牙条码扫描器并完成所有这些操作,而无需键入条形码或点击任何东西。
我能够轻松配对设备。 我可以轻松地将条形码扫描到文本框中。 但它不会发送(只是换行)。
我真正想做的是这样的事情:
到目前为止,我没有太多运气。 覆盖视图的onKeyDown不会捕获任何内容。 我也没有尝试在布局上使用setOnKeyListener。
有人可以提供一些提示吗?
谢谢。
---编辑---
我设法覆盖了dispatchKeyEvent,它确实捕获了一些东西,但只有在按下回车键(KEYCODE_ENTER)时 - 而不是条形码的其余部分。
通过查看调试窗口,我可以看到有一个事件正在捕获整个条形码,但我无法访问它。 我在调试窗口中得到的是:
I/ViewRootImpl: ViewRoot's KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_9, scanCode=10, metaState=0, flags=0x8, repeatCount=0, eventTime=821298066, downTime=821298066, deviceId=18, source=0x101 } to com.android.internal.policy.impl.PhoneWindow$DecorView{1f789e00 V.E..... R......D 0,0-1080,1920}
现在我只是使用dispatchKeyEvent - 当我检测到按下回车键时,我发送条形码(它已被放置在EditText中)。 不是理想的解决方案 - 我想在变量中捕获它。 但它是我现在能做的最好的事情。
如果有人能改进这一点,我会非常感激。
See if the code below can be of help to you: barcodeEditText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_ENTER: saveToDBMethod(); barcodeEditText.setText(""); barcodeEditText.requestFocus(); return true; default: break; } } return false; } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.