一切入口从CaptureActivity 扫码窗口类开始,扫码分析一种可以通过摄像头,一种通过相册来处理,现在分别对这两种方法进行分析,以及讨论如何解决扫码乱码的问题。
1.摄像头扫码DecodeThread创建解码线程
1.1初始化摄像头initCamera
// 打开Camera硬件设备
cameraManager.openDriver(surfaceHolder);
// 创建一个handler来打开预览,并抛出一个运行时异常
if (handler == null) {
handler = new CaptureActivityHandler(this, cameraManager);
}
1.2创建CaptureActivityHandler(协调相机是否拍照成功,然后把图片抛导解码线程解码)->DecodeThread->DecodeHandler
//DecodeThread创建解码消息线程,相机拍摄完会通过DecodeHandler通知其解码。
//关联相机与解码线程
cameraManager.requestPreviewFrame(decodeThread.getHandler(), Constant.DECODE);
//拍照成功后向DecodeHandler发消息
theCamera.setOneShotPreviewCallback(previewCallback);
1.3通过触发DecodeHandler.decode方法,用multiFormatReader去解码
1.4解码成功触发事件
//获取CaptureActivityHandler把解码成