博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Zxing的二维码扫描解析库——ZxingPlus
阅读量:4164 次
发布时间:2019-05-26

本文共 2391 字,大约阅读时间需要 7 分钟。

             二维码几乎成为现在安卓手机不可或缺的功能之一,不论是推广还是相互关注功能的需求,都需要二维码生成和扫描解析等等。Zxing是安卓手机二维码生成中非常好用的了。但是导入Zxing还需要自定义很多功能,那么我们可不可以把这些常用的功能封装好,做一个三方库,方便自己更方便大家呢。是的,方便方便....(手动偷笑)

这里我只写一下使用方法和我封装的大概思路。

大致的逻辑以图的形式展示出来,使用时只需要导入gradle。

compile 'com.singleshu:ZxingPlus:1.1.0'

使用方法

1:导入gradle: compile 'com.singleshu:ZxingPlus:1.1.3'
 2:6.0以上版本在自己的Activity中动态申请权限,封装好了一个权限请求工具类,
只是请求当前相机需要的权限。 PermissionUtils.getInstance().requestPermission(this);
 3:我将二维码的扫描和图片解析,生成逻辑封装了在抽象父类BaseQRScanActivity,同事将
XML布局进行了分离。可以高扩展。自定义布局,自己设定界面以及扫描动画背景设定。为了方便调用,在抽象基础上再次抽象出一个默认的扫描界面,该界面有二维码扫描,闪光灯,图片解析三个基本功能。考虑到每个项目都有不同需求,所以将各个控件都通过get方法暴露给调用层,可以修改图片颜色背景,或者隐藏。
然后把扫描结果暴露给调用层。给出示例代码

public class QRCodeScanAtivity extends DefaultQRScanActivity {    //对控件的自定义,可以修改隐藏默认控件    @Override    protected void initCustomViewAndEvents() {    }    //扫描图片结果解析回调 recode二维码字符串    @Override    protected void onAlbumResult(int requestCode, int resultCode, String recode) {        Bundle bundle = new Bundle();        bundle.putString("result",recode);        startActivity(new Intent(QRCodeScanAtivity.this,ResultActivity.class).putExtras(bundle));        finish();    }    //二维码图片解析回调  rawResult 二维码字符串    @Override    protected void handleDecodeResult(String rawResult, Bundle bundle) {        bundle.putString("result",rawResult);        startActivity(new Intent(QRCodeScanAtivity.this,ResultActivity.class).putExtras(bundle));        finish();    }}
但是记住6.0的要手动申请权限

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        test = (TextView) findViewById(R.id.test);        imageView = (ImageView) findViewById(R.id.image1);        //6.0加上动态权限申请,需要在外面Acitvity做申请        PermissionUtils.getInstance().requestPermission(this);    }

 版本更新

# 1.1.4 #

新加入功能,生成带图标二维码,图标默认是取3/4显示,可自定义大小。

## 使用介绍 ##

//生成二维码带图标,这和图片大小相关,默认取3/4显示            case R.id.scorewithlogo:                imageView.setImageBitmap(QRCodeUtil.createWithLogo(test.getText().toString(),                BitmapFactory.decodeResource(getResources(), R.drawable.timg)));                break;
//生成带图标二维码,自设置大小  取 multipart/divisor显示            case R.id.custom_scorewithlogo:                imageView.setImageBitmap(QRCodeUtil.createWithLogo(test.getText().toString(),                BitmapFactory.decodeResource(getResources(), R.drawable.timg),1,4));                break;

具体使用请参照项目:

你可能感兴趣的文章
C语言chdir()函数:改变当前的工作目录
查看>>
Linux下的函数执行时间的统计方法(测试某个函数的执行时间)
查看>>
调整内核printk的打印级别(启动脚本中运行 echo 0 4 0 7 > /proc/sys/kernel/printk 关闭所有内核打印)
查看>>
临时关闭打开console办法
查看>>
Linux中gmtime和localtime的区别(time_t格式转换为tm格式)
查看>>
如果函数传递的是结构体,小心在调用的参数中给指针重新赋值(拿tm结构体举例)
查看>>
使用nm命令获取linux的可执行文件里或动态库中的所有函数名称
查看>>
动态库编写 头文件.h注意事项
查看>>
多个动态库的依赖问题(先后顺序务必注意)
查看>>
二叉树的最大深度
查看>>
N 叉树的最大深度
查看>>
剑指 Offer 52. 两个链表的第一个公共节点 & 相交链表
查看>>
剑指offer 03.数组中的重复数字(四种办法!哎,就是全!)
查看>>
三层--对你的认识再多一点
查看>>
数据库初级篇--EA & ER & SQL Server
查看>>
离线安装.net framework3.5
查看>>
抽象工厂+反射(一)
查看>>
12月英语--Sowing
查看>>
泛型--datatable TO List
查看>>
存储过程
查看>>