Android快速实现二维码扫描--Zbar
Android中二维码扫描的最常用库是zxing和zbar,上一篇《Android快速实现二维码扫描–Zxing》介绍了Zxing。这次说Zbar,Zbar速度极快,我就比较常用,项目地址:https://github.com/ZBar/ZBar
同样你会发现官方库的东西太多,我们不是全部需要,照着官方demo改太耗时,所以分享一下我常用的集成方式。
先上效果图

源码已上传至Github:https://github.com/yangxch/ScanZbar
集成
1.引入jar包和so文件

如果jar文件和so文件放在libs下,需在app build.gradle的android标签中加入如下代码并Sync Now
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
2.将zbar包copy到项目

这里包名不一样肯定会报错,clean project并改掉包名就好。
3.导入相关资源文件
drawable、drawable-hdpi、drawable-xhdpi和layout

raw文件和values文件

注:values中相关资源不要直接替换,否则会覆盖之前的,需要打开文件将内容加到自己项目对应文件中。
4.AndroidManifest.xml加入相关权限和扫描的Activity
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<activity android:name=".zbar.CaptureActivity" />
5.调用扫描界面 获取扫描结果
在需要打开扫描界面的地方直接跳转至CaptureActivity(使用startActivityForResult)
/**
* 跳转到扫码界面扫码
*/
private void goScan(){
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE_SCAN);
}
在onActivityResult的回调中即可获取扫描内容,如下
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_SCAN:
// 扫描二维码回传
if (resultCode == RESULT_OK) {
if (data != null) {
//获取扫描结果
Bundle bundle = data.getExtras();
String result = bundle.getString(CaptureActivity.EXTRA_STRING);
}
}
break;
default:
break;
}
}
动态权限申请
由于扫描需要调用相机,同样需要进行权限的动态申请,源码中我已加入,具体做法和上一篇一样。
分析
zbar包下主要类作用如下
CaptureActivity:为扫码界面的Activity;
AutoFocusManager:相机自动聚焦管理类 ;
CameraConfigurationManager:相机配置参数信息的操作类 ;
CameraManager:为自定义相机操作的封装,管理相机的打开,取景,参数,回收处理;
PreviewCallback:图像数据回调处理;
DecodeThread:解码子线程;
BeepManager:扫码操作声音处理;
更多技术干货,欢迎关注我的公众号:ChaoYoung
Android快速实现二维码扫描--Zbar的更多相关文章
- Android快速实现二维码扫描--Zxing
Android中二维码扫描的最常用库是zxing和zbar,zxing项目地址为https://github.com/zxing/zxing,目前还有多个人在维护.zbar主要用C来写的,对速度有要求 ...
- Android仿微信二维码扫描
转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...
- Android之Zxing二维码扫描图片拉伸
还是这个接手项目,二维码扫描集成的是zxing,扫描界面的图像有明显的拉伸变形. 这种问题,根据以往的经验,一般是x,y轴错位引起的,处理好x,y轴的问题,一般可以解决问题. 由于这个问题,之前有很多 ...
- android中Zing二维码扫描,二维码生成
Android中二维码扫描的最常用库是zxing和zbar,zxing项目地址为https://github.com/zxing/zxing,目前还有多个人在维护.zbar主要用C来写的,对速度有要求 ...
- Android "QR二维码扫描"
支持灯 扫描结果 支持 抄.分享.浏览打开(超链接) 自己主动保存扫描记录 划删除 和源代码 git: http://git.oschina.net/892642257/QRCode csdn(0分) ...
- android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)
写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载 zbarLib编译project project下载0积分 bug 在2.3的系统中Hol ...
- 【转】Android手机客户端关于二维码扫描的源码--不错
原文网址:https://github.com/SkillCollege/QrCodeScan QrCodeScan 这是Android手机客户端关于二维码扫描的源码,使用了高效的ZBar解码库,并修 ...
- Android开发——Android中的二维码生成与扫描
0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描.本篇旨在帮助有需求的同学快速完成二维 ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
随机推荐
- VS打开SSAS或SSIS报错的解决办法
---------------------------Microsoft Visual Studio---------------------------无法加载类型为“Microsoft.Analy ...
- [leetcode]77. Combinations组合
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...
- 在桌面创建robotframework Ride的快捷方式启动RIDE
安装后robotframework-ride 后,每次启动时都要在Dos命令下启动 ,下面是创建快捷方式启动操作如下: 1.进入到python的安装目录的/Scripts目录下,找到ride.py文件 ...
- SSD性能测试第一神器:FIO
SSD性能测试第一神器:FIO 2017年8月12日 syswift 0 对于SSD性能测试来说,最好的工具莫过于FIO了. 上面这个可爱的小伙子名字叫Jens Axboe,他是丹麦哥本哈根大学计算 ...
- tween 缓动动画
在讲tween类之前,不得不提的是贝塞尔曲线了.首先,贝塞尔曲线是指依据四个位置任意的点坐标绘制出的一条光滑曲线.它在作图工具或动画中中运用得比较多,例如PS中的钢笔工具,firework中的画笔等等 ...
- redis安全删key脚本(模糊匹配,长list,大set等)
两种情况: 1.删除指定前缀开头的rediskey ,扫描和删除过程中对线上无感知 2.删除一个大的list,set,zset,hash,这种得分批次减少大小,一直缩到0再删 第一种情况:只要知道线上 ...
- windows内核对象管理学习笔记
目前正在阅读毛老师的<windows内核情景分析>一书对象管理章节,作此笔记. Win内核中是使用对象概念来描述管理内核中使用到的数据结构.此对象(Object)均是由对象头(Object ...
- Android Studio 内置SDK在 unity中使用
1 AndroidStudio 安装好后更新SDK Platforms 2 在 File -> Other Settings -> Default Project Structure 中可 ...
- 第五次spring会议
昨天所做之事: 昨天我对软件加上了换肤和透明度等功能. 今天所做之事: 我对软件加上了保密功能. private void 一键转密文ToolStripMenuItem_Click(object se ...
- C#部分试题实例
1.在C#中,下列选项中自定义方法的语句错误的是().(选择一项) 正确答案:AD 解析:本题考查自定义方法的定义及调用.A项void是无返回值类型,D项定义方法的时候没有写返回值类型:故选AD. 2 ...