zxing二维码不可以多次扫描

来源:互联网 发布:凡科建站怎么监测数据 编辑:程序博客网 时间:2024/06/03 14:52

给大家看一下效果图:



最近公司开发一个项目,一个购物的项目。用到了扫描获取条形码,挺简单网上案例比较多,去谁那里有可能copy一大堆,但是往往他就是一个演示的Demo和你的有很多差距,所以这就需要我们动脑子思考了,我们首先拿到人家的项目不要着急往自己的项目里copy。我们先运行一遍人家的,看一下方法和他的思路,我们开发主要还是思维和逻辑,不能总copy人家代码吧?  首先拿到人家项目二维码只可以扫一次  就返回了主界面 我就进行调试看他究竟运行那里代码,后来我发现他会把你的获取的值传给一个Handler然后传到线程池中了,蒙了我也是新手。好吧不懂了,给我干到了底层去了,但是回过来一想,我不就是获取结果,然后传给handler吗?为什么我不在返回数据后再执行这个方法呢。 哇哦果然成了。

Mip'ca'Activity'Capture类中

代码如下:

  /**     * 处理扫描结果     * @param result     * @param barcode     */    public void handleDecode(Result result, Bitmap barcode) {        inactivityTimer.onActivity();        playBeepSoundAndVibrate();        String resultString = result.getText();        if (resultString.equals("")) {            Toast.makeText(MipcaActivityCapture.this, "Scan failed!", Toast.LENGTH_SHORT).show();        } else {            mList.add(resultString);            initfindview();            mHandler.postDelayed(runnable, 3000);        }    }    Handler mHandler = new Handler();    Runnable runnable = new Runnable() {        @Override        public void run() {            // handler自带方法实现定时器            try {                if (handler != null)                        mHandler.postDelayed(runnable,3000);                    handler.restartPreviewAndDecode();  //实现多次扫描                System.out.println("do...");            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();                System.out.println("exception...");            }        }    };
为什么要写一个handler呢!如果不写的话他会扫描很多次这个数据 所以我就让他3秒之后再描扫 ok解决额 
我们项目就是把扫描的结果传递带Listview上  可以手动输入也可以打开手电筒  如果需要的小伙伴邮箱发到评论里我看到会及时给你发过去