一 / 结构
分为三个主要目录:
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