diff --git a/README.md b/README.md index dff4b5b..5ecbee2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,154 @@ -# Android-Zxing -在精简官方客户端,抽出主要代码构造为自定义View,达到能自定义样式,使用方便 +###一、概述 + +相信Adnroid开发都知道,有四款扫描器,[Zxing](https://github.com/zxing/zxing) 、[Zbar](https://github.com/zbar/zbar) ,[Barcode4J](https://sourceforge.net/projects/barcode4j/files/)、[OkapiBarcode](https://github.com/woo-j/OkapiBarcode) 前二者应用较广泛,至于介绍与区别就在此阐述,网上有很多。此文主要介绍在在使用过程中,官方客户端各种达不到需求。相信很多童鞋都有此体会,所以借此机会就在Zxing 官方客户端基础上修改,去除无用功能并二次封装达到可扩展。 +- 官方客户端目前问题汇总 + - 设置功能多余 + - 竖屏后不能正向扫描条形码 + - 扫描框大小、颜色、扫描线配置不够灵活 + - 无生成二维码、主动识别二维码功能 +- 介于以上问题,于是该库就华丽的诞生 + - 修复竖屏不能正向扫描条形码 + - 可定制扫描框与扫描线样式 + - 加入创建二维码、识别图片中的二维码功能 + +###二、效果图 +![这里写图片描述](http://img.blog.csdn.net/20160708110951092) + +###三、使用 +直接在`layout xml`使用`ScannerView`即可 + +```xml + +``` + +重写`onResume`调用`mScannerView.onResume();` + +```java +@Override +protected void onResume() { + mScannerView.onResume(); + super.onResume(); +} +``` + +注册扫描成功监听器`setOnScannerCompletionListener` + +```java +/** + * 扫描成功后将调用 + * + * @param rawResult 扫描结果 + * @param parsedResult 结果类型 + * @param barcode 扫描后的图像 + */ +void OnScannerCompletion(Result rawResult, ParsedResult parsedResult, Bitmap barcode); +``` + +调用如下方法获取类型 + +```java +ParsedResultType type = parsedResult.getType(); +``` + +可根据`type`强转为相应的对象,按项目需求处理。每个项目都有不同的需求,所以此库将最终处理结果丢给你们自己咯,想怎么玩就怎么玩,下面代码是在 sample 中 + +```java +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; +} +``` + +生成二维码 + +```java +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