美文网首页
android 读取键盘模式的扫码枪输入

android 读取键盘模式的扫码枪输入

作者: 小相柳 | 来源:发表于2019-03-20 15:08 被阅读0次

    public class BarCodeKeyEventHelper {

        private static final String TAG = BarCodeKeyEventHelper.class.getSimpleName();

        private KeyListener mKeyListener;

        private Editable mEditable;

        private OnBarCodeListener mOnBarCodeListener;

        public BarCodeKeyEventHelper(OnBarCodeListener onBarCodeListener) {

            mKeyListener = new TextKeyListener(TextKeyListener.Capitalize.NONE, false);

            mEditable = Editable.Factory.getInstance().newEditable("");

            mOnBarCodeListener = onBarCodeListener;

        }

        /**

        * 在Activity或者Fragment调用此监听函数即可

        *

        * @param event 事件

        * @return 是否消费事件

        */

        public boolean dispatchKeyEvent(KeyEvent event) {

            return keyListener.onKey(null, event.getKeyCode(), event);

        }

        private View.OnKeyListener keyListener = new View.OnKeyListener() {

            @Override

            public boolean onKey(View v, int keyCode, KeyEvent event) {

                boolean result;

                if (event.getAction() == KeyEvent.ACTION_DOWN)

                    result = mKeyListener.onKeyDown(null, mEditable, keyCode, event);

                else if (event.getAction() == KeyEvent.ACTION_UP) {

                    if (event.getKeyCode() == KEYCODE_DPAD_DOWN) {

                        //内容结束,获取识别到的内容

                        RYLogUtils.d(TAG, "keyListener --> 识别结束,识别的 code = " + mEditable.toString());

                        if (mOnBarCodeListener != null) {

                            mOnBarCodeListener.onBarCodeDone(mEditable.toString());

                        }

                        mEditable.clear();

                    }

                    result = mKeyListener.onKeyUp(null, mEditable, keyCode, event);

                } else {

                    result = mKeyListener.onKeyOther(null, mEditable, event);

                }

                return result;

            }

        };

        public interface OnBarCodeListener {

            void onBarCodeDone(String code);

        }

    }

    相关文章

      网友评论

          本文标题:android 读取键盘模式的扫码枪输入

          本文链接:https://www.haomeiwen.com/subject/agozmqtx.html