android扫码优化

前言

现在一维码二维码在我们的日常生活中使用如此的广泛,所以拥有扫码功能的APP变得非常普遍,一个安卓APP需要扫码功能就要用到zxing了,zxing是谷歌开源的让开发者更方便使用摄像头的库,而我们常用的扫码功能就是其中之一。但是因为zxing的功能太强大了,包含了很多我们用不上的功能,所以一般都会抽取其中的扫码功能单独使用,这个抽取的过程还是有点麻烦的,但是已经有很多开发者为我们省去了这个过程,然后出现一个很棒的第三方zxing库:zxing-android-embedded。目前阿里旗下的weex技术内部就是采用这个zxing-android-embedded解码库的。通过项目中代码

compile 'com.journeyapps:zxing-android-embedded:3.4.0'    
也能看出来weex内嵌了这个扫码库。
    通过实际的开发与测试发现,使用这个扫码库,想要扫出我们公司的条码是根本扫不出的(sis app我是进行优化一部分的,最原生的扫码连灯光开启也没有,如果sis不开启灯光肯定扫不出来),那就要进行优化了,谈到优化,必定需要导入
zxing-android-embedded源码
  这个是所导入的源码。
        接下来的工作就是进行扫码优化,根据前人的经验总结,那么我扫码优化的方向分为以下几点:

1.  通过调整扫描区域来优化

       Zxing 是google提供的二维码扫描工程  本身默认的扫图区域最大只有 360*480 ,这样的话我们的手机必须和条形码在一个准确的位置来进行扫描,如果不在一个准确的位置,那么很容易扫不到。

 

        在CameraManager.java这个类中进行调整 
        默认的大小是 以下这4个参数 
            //  private static final int MIN_FRAME_WIDTH = 240;  
            //  private static final int MIN_FRAME_HEIGHT = 240;  
            //  private static final int MAX_FRAME_WIDTH = 480;  
            //  private static final int MAX_FRAME_HEIGHT = 360;  

            这样可以根据屏幕大小调整,可以增大这些数值 : 最小的宽 高 ; 最大宽高 。通过源码的分析,这些参数的作用位置在CameraManager类下所起到的作用。这里做成一个动态取图,根据摄像机与条码的距离不同,来动态设配扫描区域。

        那么这里的四个参数自然用不上了,在代码中注释即可。

2. 精简解码码制

    目前 github 上Zxing 支持的码制有以下的种类,通过源码得到

// Product Codes
public static final String UPC_A = "UPC_A";
public static final String UPC_E = "UPC_E";
public static final String EAN_8 = "EAN_8";
public static final String EAN_13 = "EAN_13";
public static final String RSS_14 = "RSS_14";

// Other 1D
public static final String CODE_39 = "CODE_39";
public static final String CODE_93 = "CODE_93";
public static final String CODE_128 = "CODE_128";
public static final String ITF = "ITF";

public static final String RSS_EXPANDED = "RSS_EXPANDED";

// 2D
public static final String QR_CODE = "QR_CODE";
public static final String DATA_MATRIX = "DATA_MATRIX";
public static final String PDF_417 = "PDF_417";

    那么通过咨询曹大哥工位牌项目用的是code_128的编码方式,那么可以精简解码的方式,只用code_128即可。这样可以增加android内部的系统运行速度。提高解码效率

 

3.  缩短自动聚焦的间隔时间

    Zxing 默认的聚焦间隔时间是2000毫秒。扫码是在每一次调用相机聚焦完成后触发回调取图解析的。在这里缩短聚焦时间会提高解析频率,扫码性能自然就提升了。当然也有不好的地方,提高了聚焦的频率,对手机电量的消耗自然增加了。我这里是把聚焦间隔修改成了800毫秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值