一、概述

相信Adnroid开发都知道,有四款扫描器,Zxing 、Zbar ,Barcode4J、OkapiBarcode 前二者应用较广泛,至于介绍与区别就在此阐述,网上有很多。此文主要介绍在在使用过程中,官方客户端各种达不到需求。相信很多童鞋都有此体会,所以借此机会就在Zxing 官方客户端基础上修改,去除无用功能并二次封装达到可扩展。

  • 官方客户端目前问题汇总

    • 设置功能多余
    • 竖屏后不能正向扫描条形码
    • 扫描框大小、颜色、扫描线配置不够灵活
    • 无生成二维码、主动识别二维码功能
  • 介于以上问题,于是该库就华丽的诞生
    • 修复竖屏不能正向扫描条形码
    • 可定制扫描框与扫描线样式
    • 加入创建二维码、识别图片中的二维码功能

二、效果图

三、下载APK体验

四、引用

  • 本库依赖使用Gradle构建时添加一下即可:
compile 'com.mylhyl:zxingscanner:1.1.1'
  • 最新Zxing核心库点击查看,使用Gradle构建时如下:
compile 'com.google.zxing:core:3.2.1'
  • Gradle命令编译:gradle makeJar 或者参考下图,在android studio中执行

  • 直接下载jar

五、使用

直接在layout xml使用ScannerView即可

<com.mylhyl.zxing.scanner.ScannerViewandroid:id="@+id/scanner_view"android:layout_width="match_parent"android:layout_height="match_parent" />

重写onResume调用mScannerView.onResume();

@Override
protected void onResume() {mScannerView.onResume();super.onResume();
}

注册扫描成功监听器setOnScannerCompletionListener

/*** 扫描成功后将调用** @param rawResult    扫描结果* @param parsedResult 结果类型* @param barcode      扫描后的图像*/
void OnScannerCompletion(Result rawResult, ParsedResult parsedResult, Bitmap barcode);

调用如下方法获取类型

ParsedResultType type = parsedResult.getType();

可根据type强转为相应的对象,按项目需求处理。每个项目都有不同的需求,所以此库将最终处理结果丢给你们自己咯,想怎么玩就怎么玩,下面代码是在 sample 中

switch (type) {case ADDRESSBOOK:AddressBookParsedResult addressResult = (AddressBookParsedResult) parsedResult;bundle.putStringArray(Intents.AddressBookConnect.NAME, addressResult.getNames());bundle.putStringArray(Intents.AddressBookConnect.NUMBER, addressResult.getPhoneNumbers());bundle.putStringArray(Intents.AddressBookConnect.EMAIL, addressResult.getEmails());break;case URI:URIParsedResult uriParsedResult = (URIParsedResult) parsedResult;bundle.putString(Intents.URIContents.URI, uriParsedResult.getURI());break;case TEXT:bundle.putString(Intents.Scan.RESULT, rawResult.getText());break;
}

生成二维码

Bitmap bitmap = QREncode.encodeQR(MainActivity.this,new QREncode.Builder()                .setColor(getResources().getColor(R.color.colorPrimary))//二维码颜色.setParsedResultType(ParsedResultType.URI)//二维码类型.setContents("https://github.com/mylhyl")//二维码内容.build());
imageView.setImageBitmap(bitmap);

六、样式设置

方法名 说明 默认值
toggleLight 切换闪光灯 关false
setMediaResId 设置扫描完成播放声音
setLaserFrameBoundColor 扫描框4角颜色 绿色0xff00ff00
setLaserFrameCornerLength 扫描框4角长度 15dp
setLaserFrameCornerWidth 扫描框4角宽度 2dp
setLaserColor 扫描线颜色 绿色0xff00ff00
setLaserLineResId 条形扫描线图片资源
setLaserGridLineResId 网格扫描线资源
setLaserLineHeight 扫描线高度 2dp
setLaserFrameSize 设置扫描框大小 屏幕5/8
setLaserFrameTopMargin 设置扫描框与屏幕距离 屏幕5/8-状态
setDrawText text -> 内容 
textSize -> 文字大小 
textColor -> 文字颜色 
isBottom -> 是否在扫描框下方 
textMargin -> 离扫描框间距
text -> 将二维码放入框内,即可自动扫描 
textSize -> 16sp 
textColor -> 白色 
isBottom -> true 
textMargin -> 20dp

项目下载地址:https://github.com/mylhyl/Android-Zxing

Zxing_使用说明相关推荐

  1. abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...

    高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF 高性能计算平台ABAQUS 任务调度使用说明 作者:陈林 E-Mail:chenlin@ 日期:2017-1-10 ...

  2. linux 文件拷贝并替换,Linux_cmd replace 文件替换使用说明,帮助信息: 复制代码 代码如 - phpStudy...

    cmd replace 文件替换使用说明 帮助信息: 复制代码 代码如下: 替换文件. REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [ ...

  3. Simple Dynamic Strings(SDS)源码解析和使用说明二

    在<Simple Dynamic Strings(SDS)源码解析和使用说明一>文中,我们分析了SDS库中数据的基本结构和创建.释放等方法.本文将介绍其一些其他方法及实现.(转载请指明出于 ...

  4. Delphi开发的IOCP测试Demo以及使用说明。

    Delphi开发的IOCP,此为压力测试Demo和使用说明.

  5. oracle database link mysql_oracle database link使用说明

    oracle database link使用说明 作用: 将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象. 简易语法: CREATE [PUBLIC] ...

  6. 序列拼接工具Bowtie使用说明

    序列拼接工具Bowtie使用说明 2011-06-08 ~ ADMIN Bowtie是一个超级快速的,较为节省内存的短序列拼接至模板基因组的工具.它在拼接35碱基长度的序列时,可以达到每小时2.5亿次 ...

  7. benchmarksql测试mysql_数据库压力测试工具 -- BenchmarkSQL 使用说明

    关于数据库的压力测试,之前写过3篇Blog: 数据库基准测试(Database Benchmarking) 说明 数据库压力测试工具 -- Hammerdb 使用说明 数据库压力测试工具 -- Swi ...

  8. 计算机网页基础课专业,关于《计算机应用基础》课程网页下的学习资源使用说明....

    关于<计算机应用基础>课程网页下的学习资源使用说明. 关于<计算机应用基础>课程网页下的学习资源使用说明 各位同学:大家好! 07春学期已接近一半的时间了,新生对课程还需要更多 ...

  9. gh ost mysql_MySQL在线DDL gh-ost 使用说明

    3)使用说明:条件是操作的MySQL上需要的binlog模式是ROW.如果在一个从上测试也必须是ROW模式,还要开启log_slave_updates.根据上面的参数说明按照需求进行调整. 环境:主库 ...

最新文章

  1. 差分隐私 机器学习_满足差分隐私的经验误差最小化方法
  2. Android URL
  3. Internet Explorer 8 Beta 2十大看点
  4. kali php 装mongodb,Linux系统如何安装mongodb数据库Mongo扩展
  5. PERCONA-TOOLKIT 安装
  6. 为什么我现在不建议你买 5G 手机?|CSDN博文精选
  7. Linux基础系列4(ls,cp命令详解)
  8. C代码编译过程,cmakelist基础步骤
  9. 量子场论考试题目解答
  10. Zipf,Power-laws,Pareto分布
  11. Uncode-DAL 1.0.18 发布,Java 通用数据访问层
  12. 面试时如何做好5分钟自我介绍?
  13. java俄罗斯方块七中图形类_shell中的俄罗斯方块小游戏
  14. Mac 电脑鼠标和触摸板滚动方向不一致的问题
  15. Javafinal关键字final关键字的几种用法
  16. 将正方形矩阵顺时针转动90度(Java)
  17. 3.4.10nbsp;孙正义
  18. Java程序员-日常工作技能清单
  19. 详细讲解网络协议:TCP和UDP什么区别?
  20. Win7资源管理器打开ftp站点自动跳转浏览器解决方法

热门文章

  1. 4. 模型测试 - 测试过程、模型测试方法概述
  2. 带你玩转指针——指针进阶(二)
  3. cad工具箱详细讲解_分享一个好用的工具箱
  4. [GIS算法] 拓扑关系
  5. 基于安卓/android/微信小程序的连锁药店管理系统app-#计算机毕业设计
  6. 蔬菜类别二级计算机,蔬菜计算机编码 蔬菜商品分类和代码.pdf
  7. graphviz画图软件介绍及使用感受
  8. day14 Map集合
  9. Matlab中的DSP应用中的freqs函数
  10. 使用dlt-viewer查看日志