经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
android读取扫码模组数据的方法
来源:jb51  时间:2021/9/28 12:15:10  对本文有异议

本文实例为大家分享了android读取扫码模组数据的具体代码,供大家参考,具体内容如下

android读取扫码模组数据 **在dispatchKeyEvent方法中承接读取的数据**

在dispatchKeyEvent方法中承接读取的数据

  1. private StringBuilder mScanCodeBuilder = new StringBuilder();
  2. @Override
  3. public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
  4. LogUtil.d(TAG, "dispatchKeyEvent " + event.getAction() + ", " + event.getKeyCode());
  5. checkLetterStatus(event);//判断大小写字母
  6. if (event.getAction() == KeyEvent.ACTION_DOWN) {
  7.  
  8. mScanCodeBuilder.append(getInputCode(event));
  9. if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
  10. //若为回车键,直接返回
  11. String scanResult = mScanCodeBuilder.toString();
  12. mScanCodeBuilder.setLength(0);
  13. LogUtil.d(TAG, "dispatchKeyEvent, " + scanResult);
  14. String scanResults = scanResult.replace(" ", "");
  15. } else {
  16. //延迟post,若500ms内,有其他事件
  17. mHandler.removeCallbacks(mScanningFishedRunnable);
  18. mHandler.postDelayed(mScanningFishedRunnable, 500);
  19. }
  20.  
  21. return true;
  22. }
  23. return super.dispatchKeyEvent(event);
  24. }

判断大小写字母

  1. private void checkLetterStatus(KeyEvent event) {
  2.  
  3. int keyCode = event.getKeyCode();
  4. if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) {
  5. if (event.getAction() == KeyEvent.ACTION_DOWN) {
  6. //按着shift键,表示大写
  7. mCaps = true;
  8. } else {
  9. //松开shift键,表示小写
  10. mCaps = false;
  11. }
  12. }
  13. }

读取字符方法

  1. private char getInputCode(KeyEvent event) {
  2. int keyCode = event.getKeyCode();
  3. char aChar;
  4. if (keyCode >= KeyEvent.KEYCODE_A && keyCode <= KeyEvent.KEYCODE_Z) {
  5. //字母
  6. aChar = (char) ((mCaps ? 'A' : 'a') + keyCode - KeyEvent.KEYCODE_A);
  7. } else if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
  8. //数字
  9. aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_0);
  10. } else {
  11. //符号
  12. switch (keyCode) {
  13. case KeyEvent.KEYCODE_GRAVE:
  14. aChar = '`';
  15. break;
  16. case KeyEvent.KEYCODE_COMMA:
  17. aChar = ',';
  18. break;
  19. case KeyEvent.KEYCODE_APOSTROPHE:
  20. aChar = '\'';
  21. break;
  22. case KeyEvent.KEYCODE_POUND:
  23. aChar = '#';
  24. break;
  25. case KeyEvent.KEYCODE_STAR:
  26. aChar = '*';
  27. break;
  28. case KeyEvent.KEYCODE_PERIOD:
  29. aChar = '.';
  30. break;
  31. case KeyEvent.KEYCODE_MINUS:
  32. aChar = mCaps ? '_' : '-';
  33. break;
  34. case KeyEvent.KEYCODE_SLASH:
  35. aChar = '/';
  36. break;
  37. case KeyEvent.KEYCODE_BACKSLASH:
  38. aChar = mCaps ? '|' : '\\';
  39. break;
  40. case KeyEvent.KEYCODE_EQUALS:
  41. aChar = '=';
  42. break;
  43. case KeyEvent.KEYCODE_SEMICOLON:
  44. aChar = ';';
  45. break;
  46. case KeyEvent.KEYCODE_PLUS:
  47. aChar = '+';
  48. break;
  49. case KeyEvent.KEYCODE_AT:
  50. aChar = '@';
  51. break;
  52. case KeyEvent.KEYCODE_LEFT_BRACKET:
  53. aChar = '[';
  54. break;
  55. case KeyEvent.KEYCODE_RIGHT_BRACKET:
  56. aChar = ']';
  57. break;
  58. default:
  59. aChar = ' ';
  60. break;
  61. }
  62. }
  63. Log.d(TAG, "char" + aChar);
  64. return aChar;
  65. }

延迟500毫秒相关

  1. private Handler mHandler = new Handler(this);
  2. private final Runnable mScanningFishedRunnable=new Runnable() {
  3. @Override
  4. public void run() {
  5.  
  6. }
  7. };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号