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


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

private StringBuilder mScanCodeBuilder = new StringBuilder();   @Override    public boolean dispatchKeyEvent(@NonNull KeyEvent event) {        LogUtil.d(TAG, "dispatchKeyEvent " + event.getAction() + ",   " + event.getKeyCode());           checkLetterStatus(event);//判断大小写字母        if (event.getAction() == KeyEvent.ACTION_DOWN) {             mScanCodeBuilder.append(getInputCode(event));            if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {                //若为回车键,直接返回                String scanResult = mScanCodeBuilder.toString();                mScanCodeBuilder.setLength(0);                LogUtil.d(TAG, "dispatchKeyEvent, " + scanResult);                String scanResults = scanResult.replace(" ", "");            } else {                //延迟post,若500ms内,有其他事件                mHandler.removeCallbacks(mScanningFishedRunnable);                mHandler.postDelayed(mScanningFishedRunnable, 500);            }            return true;        }        return super.dispatchKeyEvent(event);    }

判断大小写字母

    private void checkLetterStatus(KeyEvent event) {        int keyCode = event.getKeyCode();        if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) {            if (event.getAction() == KeyEvent.ACTION_DOWN) {                //按着shift键,表示大写                mCaps = true;            } else {                //松开shift键,表示小写                mCaps = false;            }        }    }

读取字符方法

private char getInputCode(KeyEvent event) {    int keyCode = event.getKeyCode();    char aChar;    if (keyCode >= KeyEvent.KEYCODE_A && keyCode <= KeyEvent.KEYCODE_Z) {        //字母        aChar = (char) ((mCaps ? 'A' : 'a') + keyCode - KeyEvent.KEYCODE_A);    } else if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {        //数字        aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_0);    } else {        //符号        switch (keyCode) {            case KeyEvent.KEYCODE_GRAVE:                aChar = '`';                break;            case KeyEvent.KEYCODE_COMMA:                aChar = ',';                break;            case KeyEvent.KEYCODE_APOSTROPHE:                aChar = '\'';                break;            case KeyEvent.KEYCODE_POUND:                aChar = '#';                break;            case KeyEvent.KEYCODE_STAR:                aChar = '*';                break;            case KeyEvent.KEYCODE_PERIOD:                aChar = '.';                break;            case KeyEvent.KEYCODE_MINUS:                aChar = mCaps ? '_' : '-';                break;            case KeyEvent.KEYCODE_SLASH:                aChar = '/';                break;            case KeyEvent.KEYCODE_BACKSLASH:                aChar = mCaps ? '|' : '\\';                break;            case KeyEvent.KEYCODE_EQUALS:                aChar = '=';                break;            case KeyEvent.KEYCODE_SEMICOLON:                aChar = ';';                break;            case KeyEvent.KEYCODE_PLUS:                aChar = '+';                break;            case KeyEvent.KEYCODE_AT:                aChar = '@';                break;            case KeyEvent.KEYCODE_LEFT_BRACKET:                aChar = '[';                break;            case KeyEvent.KEYCODE_RIGHT_BRACKET:                aChar = ']';                break;            default:                aChar = ' ';                break;        }    }    Log.d(TAG, "char" + aChar);    return aChar;}
延迟500毫秒相关private Handler mHandler = new Handler(this);    private final Runnable mScanningFishedRunnable=new Runnable() {        @Override        public void run() {        }    };

更多相关文章

  1. g_senser frameworks 层转屏数据流程
  2. Android编程心得---捕捉Home键事件的完美解决方法
  3. Android EditText过滤汉字的方法
  4. 显示Android当前可用系统内存方法
  5. Android Studio中添加自定义字体的方法
  6. android camera2 image 中获得的yuv数据的格式转换
  7. android 通过php post 向mysql数据库写入数据
  8. Android Studio开发APP常用方法(一)
  9. android 发送http请求方法和异常解决方法

随机推荐

  1. 全屏
  2. Android中回调下载事件处理实现步骤
  3. Android(安卓)Material Design之Coordina
  4. android中的spinner动态加载内容
  5. Android(安卓)Studio 1.2中配置androidan
  6. Qt for Android(安卓)Flutter - AAPT: er
  7. Android(安卓)NDK 往控制台打印Log
  8. 安卓课程二十一 SeekBar拖动控件的使用
  9. android之hardwareAccelerated你不知道的
  10. 【Android學習專題】数据存储篇:SQLite