andoird zxing实现原理

一 / 结构

分为三个主要目录:

android 就是Barcode Scanner,

android-integration: 提供一种简单的途径将 Barcode Scanner 整合到调用方app

androidtest : 模拟调用方app ,通过android-integration,整合Barcode Scanner;

zxing 项目本意是将 bs作为一个独立的app,可单独使用可以作为第三方调用,

包结构:

android:与CaptureACtivity 直接相关的核心组件,包含了震动管理器 和闪光灯等

book:如果查询的是书籍,可以进一步查看书籍信息

camera:摄像头组件 核心类是CameraManager;

clipboard: 剪切板;

encode:编码功能的各个组件集合,核心类QRCodeEncoder ,最终的编码类是 MultiFormatWriter

history: 扫描历史l核心类是 HistoryManager

result:结果页面, 根据不同的类型有不同的处理方法,封装了XXhandler,还提供了要展示几个button 及需要绑定的事件

share: 分享二维码

概述

打开预览就调用camera.startPrevirw(),在previewing 状态页面中,随时都可以捕获,调用Camera.setOneShotPreviewCallback()

当开始预览后就会向Camera.PrevirewCallback.onpreviewFrame() 中回传当前画面的字节数组。之后在core 中使用native解码

界面中对应的设置功能在代码中是利用了PreferenceFramment 类,将扫描行为的设置保存在sharePreference 中。

1.配置camera 并启动

CaptureActivity .initCamera 中cameraManager.openDriver(surfaceHolder)并维护一个 handler 在CameraConfigurationManager 是相机的辅助类,设置长宽闪烁对焦等 维护一个CameractivityHandler 接受扫描结果 在分线程里面进行扫描。开启预览。预览和handler帮顶

相机有自己的preview 界面,我们要构造一个自己的扫描窗口,引导用户放置手机完成扫描

构造窗口在 CaptureActivityHandler.restartPrevireandDecode 中,通过drawViewfinder来重构viewfinderview


当相机preview显示了就可以通过previreCallback 向 Decodehandler 发送一个decode消息,进行解码

因会将结果返回给app.启动的时候需要startactivityForResult


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
最近2013-11-29(Nov 29, 2013)更新的Android ZXing 2.3.0 release源码及编译后的core-2.3.0.jar和android-integration-2.3.0.jar打包亲测可用,如大家有兴趣自己编译的话请参考下面的教程。 下面我写的教程修改自sonikk的csdn博客http://blog.csdn.net/sonikk/article/details/9228481在此向博主sonikk表示敬意! 下载后解压缩ZXing-2.3.0 目录当中我们用的文件夹有: android ——这是一个Android的示例工程 android-integration ——这是使用QR码工程需要引用的一个源码 androidtest ——这是一个Android的简单测试工程,好像是需要先安装android目录中的应用才能运行 core ——这是核心代码 其它文件夹都用不到的。。。 第一步: 下面将android目录下的工程带入Eclipse 包名:com.google.zxing.client.android 默认工程名:CaptureActivity 第二步: 导入引用代码: 右键工程名 -> Properties -> Java Build Path -> Source -> Link Source... -> 用browse..按钮 选择ZXing-2.3.0\core\src\main\java这个绝对路径,起名core 选择ZXing-2.3.0\android-integration\src\main\java这个绝对路径,起名android-integration (名称需要手动修改,可以起不一样的名字,但是我个人感觉这样命名比较合理) 第三步: 清除android-integration路径下的IntentIntegratorSupportV4.java文件的报错: 我把android的Project Build Target改成了4.0.3(API-15)并在其他的项目的libs中复制了一个android-support-v4.jar到CaptureActivity新建的libs文件夹下。(eclipse没有其他项目的话手动建一个就有了,Android是在Android 3.0 (API level 11)开始引入Fragment的,3.0以上开始起为了兼容3.0以下的需要加入这个jar)。 第四步: 右键分别点击core目录和android-integration目录,选择Export.. 打开Java目录,选中JAR file 勾选 Export generated class files and resources Export Java source files and resources 勾选Options: Compress the contents of the JAR file 单击Browse...导出选择的目录,起名: core-2.3.0.jar android-integration-2.3.0.jar 大功告成!这样需要的jar文件就生成好了。 zxing主页 https://code.google.com/p/zxing/ 源码下载: https://code.google.com/p/zxing/downloads/list Eclipse生成jar的一般方法,请参考: http://www.cnblogs.com/lan0725/archive/2008/08/28/1873947.html 下一步,如何精简代码?请参考这篇文章: http://www.cnblogs.com/keyindex/archive/2011/06/08/2074900.html 接着,如何将横屏更改为竖屏?请参考这篇文章: http://blog.csdn.net/duqiuke/article/details/8289921 扫描时如何打开闪光灯?请参考: http://www.cnblogs.com/lee0oo0/archive/2012/04/05/2433815.html 希望对大家有所帮助,有问题请加我QQ472950043,android开发大家一起进步!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值