前言

  Android开发里二维码开发经常用到,这里简单的介绍下Android开发里的二维码.

最广泛使用的二维码库zxing

  zxing是最广泛的二维码库各个平台都可以适用它,但是Android平台使用它好像需要进行JNI处理.但是,github上大神已经帮我们做好了,下面我会介绍一个好用的二维码框架.这里提zxing是让你知道很多二维码框架的封装源头都是它.

github地址:https://github.com/zxing/zxing

implementation 'com.google.zxing:core:3.4.0'

barcodescanner 第三方二维码框架

github地址:https://github.com/dm77/barcodescanner

这个框架已经将zxing打包封装好了,你直接使用即可,甚至还能使用依赖它后独立使用zxing的功能.(比如生成二维码图片)

ps: 这个框架也支持条形码

依赖

repositories {
jcenter()
}
implementation 'me.dm7.barcodescanner:zxing:1.9.13'

扫码识别内容

这里偷懒引用作者的代码...

activity里

public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView; @Override
public void onCreate(Bundle state) {
super.onCreate(state);
mScannerView = new ZXingScannerView(this); // 初始化扫描仪视图
setContentView(mScannerView);
} @Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this); // 将自己注册为扫描结果的处理程序。
mScannerView.startCamera(); // 在启动相机
} @Override
public void onPause() {
super.onPause();
mScannerView.stopCamera(); // 暂停相机
} @Override
public void handleResult(Result rawResult) {
// 扫描结果
Log.v(TAG, rawResult.getText()); // Prints scan results
Log.v(TAG, rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.) // If you would like to resume scanning, call this method below:
mScannerView.resumeCameraPreview(this);
}

其他API

        // 设置闪光灯
void setFlash(boolean); // 切换自动对焦
void setAutoFocus(boolean); // 指定感兴趣的条形码格式
void setFormats(List<BarcodeFormat> formats); // 指定cameraId
void startCamera(int cameraId);

QRCodeReaderView 第三方二维码框架

缺点,无法扫描条形码

优点,可以自定义页面布局

github地址:https://github.com/dlazaro66/QRCodeReaderView

基于zxing的库生成二维码图片

利用第三方库里的zxing库生成二维码,请注意!图片生成是耗时工作需要在子线程中运行

/**
* 二维码工具类
* @version 创建时间:2014年12月5日 下午5:15:47
*/ public class QrCodeUtils { /**
* 传入字符串生成二维码
* @param str
* @return
* @throws WriterException
*/
public static Bitmap Create2DCode(String str) throws WriterException {
// 生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败
BitMatrix matrix = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, 300, 300);
int width = matrix.getWidth();
int height = matrix.getHeight();
// 二维矩阵转为一维像素数组,也就是一直横着排了
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (matrix.get(x, y)) {
pixels[y * width + x] = 0xff000000;
}else{
pixels[y * width + x] = 0xffffffff;
} }
} Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
// 通过像素数组生成bitmap,具体参考api
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}
}

基于zxing库解析二维码图片文件

请注意!二维码图片解析是耗时工作需要在子线程中运行

/**
* zxing解码二维码图片
*
* @param bitmap
* @return
* @throws NotFoundException
* @throws IOException
*/
private String zxingScanQrcodePicture(Bitmap bitmap) throws NotFoundException, IOException {
Map<DecodeHintType, Object> hints = new EnumMap<DecodeHintType, Object>(DecodeHintType.class);
Collection<BarcodeFormat> decodeFormats = EnumSet.noneOf(BarcodeFormat.class);
decodeFormats.addAll(EnumSet.of(BarcodeFormat.QR_CODE));
hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats);
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); int lWidth = bitmap.getWidth();
int lHeight = bitmap.getHeight();
int[] lPixels = new int[lWidth * lHeight];
bitmap.getPixels(lPixels, 0, lWidth, 0, 0, lWidth, lHeight);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new RGBLuminanceSource(lWidth, lHeight, lPixels))); Result lResult = new MultiFormatReader().decode(binaryBitmap, hints);
return lResult.getText();
}

End

Android开发 QRCode二维码开发第三方框架的更多相关文章

  1. 【转】Android平台下利用zxing实现二维码开发

    http://www.cnblogs.com/dolphin0520/p/3355728.html 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描 ...

  2. Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  3. (转载)Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  4. java二维码开发

    之前就写过很多关于二维码的东西,一直没有时间整理一下,所以呢今天就先来介绍一下如何利用java开发二维码.生成二维码有很多jar包可以实现,例如Zxing,QRcode,前者是谷歌的,后者日本的,这里 ...

  5. [二维码开发]二维码开发入门级demo

    最近开发一个项目,涉及到二维码开发,于是乎就到网上找下直接可用的资源,遇到两个问题: 1.网上资源不够完整,找到完整的资源,需要下载分,这个你知道的 2.ThoughtWorks.QRCode版本不对 ...

  6. Android进阶笔记06:Android 实现扫描二维码实现网页登录

    一. 扫描二维码登录的实现机制: 详细流程图: (1)PC端打开网页(显示出二维码),这时候会保存对应的randnumber(比如:12345678). (2)Android客户端扫码登录,Andro ...

  7. (转)QRCODE二维码介绍及常用控件推荐

    什么是QR Code码? QR Code码是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防 ...

  8. Android Wear和二维码

    这是一篇发布在Android官方开发者社区博客,15年年初的时候就看到了这篇文章,直到现在才有时间把它翻译下来. 这是一篇如何在Android Wear上面如何正确地展示二维码的文章,里面有许多的经验 ...

  9. android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)

    写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载   zbarLib编译project  project下载0积分 bug 在2.3的系统中Hol ...

随机推荐

  1. 三.Python数据类型详述

    Python第三节数据类型详述 一.多变量赋值 python允许多变量赋值 多变量赋相同的值a = b = c = 1 多变量赋不同的值a, b, c = 1, 2, "fuckyou&qu ...

  2. apache+tomcat配置负载均衡,实现http与websocket接口分压

    一.应用场景 在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量.Apache本身带有一些模块,可以完成对应用 ...

  3. true - (成功的)什么都不做

    总览 (SYNOPSIS) true [忽略命令行参数] true OPTION 描述 (DESCRIPTION) 程序 结束 时, 产生 表示 成功 的 状态码. 下列的 选项 没有 简写 形式. ...

  4. zic2xpm - 将 ZIICS 象棋片段 (chess pieces) 转换为 XBoard (XPM/XIM) 片段的工具。

    总览 SYNOPSIS zic2xpm file1 [file2 ...] 描述 zic2xpm 将一个或多个 ZIICS 片段文件转换为 XBoard 可用的格式.如果你给出一个以上的文件名,小心同 ...

  5. IOS 表单含有input框和有position: fixed导致错位的问题

    在input框聚焦失焦的时候,都调用以下js即可 setScrollTop() { let scrollTop = document.body.scrollTop + document.documen ...

  6. time 类

    timeStamp = time.time() #获取当前的时间戳 print(timeStamp) # 1555555453.6283455 timeTuple = time.localtime(t ...

  7. Eclipse导入Maven项目解决Build Path不能配置问题

    Eclipse Mars Release (4.5.0)导入Maven项目时,发现项目Build Path不能配置,如下图所示: 解决办法: 1修改Project Facets 项目右键---> ...

  8. html标签注意事项

    1,关于媒体的video标签 在同一个页面上如果有多个video标签,并且初始化都赋值,则video不会播放, 解决办法,用计时器每隔50ms给后面的video标签设置src,设置完为止 2,关于ch ...

  9. d3操作svg路径动画,及dom移动

    图片跟随路径循环运动,dom也跟着路径运动(利用实时获取坐标位置的方法,改变transform) 1,准备路径 a,自己脑补路径 b,在ps上画好,然后在保存成png-24图片,背景透明,在网站htt ...

  10. EasyUI - 简介

    1. EasyUI : 简单的界面设计框架, 基于jQuery的UI插件, 主要用来设计网站的后台管理系统 2. EasyUI使用 : 将EasyUI提供的js文件和主题(themes)样式存放到项目 ...