安卓开发实现获取扫码枪扫码二维码、条形码后的内容

扫码枪是如何工作的,安卓如何怎么获取扫码枪的内容。本文将介绍安卓获取和处理商米收银机扫码枪扫描后的内容。包括:“安卓开发获取扫码枪扫描后的内容”、“处理扫码枪扫描后的内容”、“在Fragment中使用ScanGun类”。

1、安卓开发获取扫码枪扫描后的内容。

扫码枪会将扫描出来的内容转化为键盘事件KeyEvent,所以我们在fragment类中重写onKeyDownChild方法,就可以捕获扫码事件,进而获取扫码内容:

public void onKeyDownChild(int keyCode, KeyEvent event) {
    log.info("---------------------------------onKeyDown:    KeyCode:" + keyCode + "------event:" + event + "------------------------------------");
    scanGun.isMaybeScanning(keyCode, event);
}

2、处理扫码枪扫描后的内容。

SanGun类定义一个isMayBeScanning方法,扫码枪扫描后触发键盘事件,在键盘事件中调用isMayBeScanning方法,进而解析获取扫码内容:

查看代码
package com.bx.erp.helper;

import android.view.KeyEvent;

import org.apache.log4j.Logger;

public class ScanGun {
    private Logger log = Logger.getLogger(this.getClass());
    /**
     * 默认按键之间时间间隔
     */
    public final static int MAX_KEYS_INTERVAL_DEFAULT = 200;

    private long currentTime = 0;
    private boolean isKeySHIFT = false;
    private StringBuilder stringBuilder = new StringBuilder();
    private ScanGunCallBack callBack = null;

    private static int maxKeysInterval = MAX_KEYS_INTERVAL_DEFAULT;

    /**
     * 设置按键事件的最大时间间隔(部分扫描枪稍大,建议范围20--100)
     *
     * @param interval 时间间隔
     */
    public static void setMaxKeysInterval(int interval) {
        maxKeysInterval = interval;
    }

    public ScanGun(ScanGunCallBack callBack) {
        this.callBack = callBack;
    }

    public ScanGun() {}

    public boolean isMaybeScanning(int keyCode, KeyEvent event) {
        log.info("isMaybeScanning--");

        log.info("event.getFlags:" + event.getFlags());
        if (event.getFlags() != 0x8 && event.getFlags() != 0x6) {
            return false;
        }
        if (currentTime == 0) {
            if (stringBuilder.length()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值