Zxing_使用说明
2016-07-18 11:16
302 查看
一、概述
相信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.ScannerView android: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 |
相关文章推荐
- python爬虫神器PyQuery的使用方法
- android系统的启动逻辑01
- cannot be read or is not a valid ZIP file
- LightOJ 1220 Mysterious Bacteria
- WebView
- javascript时间差插件分享
- 内存泄漏汇总
- Android Studio 项目目录结构 英文版
- mysql修改表和列
- javaweb基础(37)_mysql数据库自动生成主键
- UINavigationController使用详解
- struts2中redirect action的参数传递
- 用jconsole监控tomcat线程
- android跨进程通信(IPC):使用AIDL
- Android 修改厂商信息
- iOS学习之Socket使用简明教程- AsyncSocket
- opencv人脸检测和跟踪
- Android随VierPager滑动的导航栏
- composer入门教程--安装项目依赖(4)
- Sublime Text + CTags + Cscope (部分替代Source Insight)