android之二维码扫描的实现

二维码扫描引擎有 ZBar 和ZXing 

 

一、 使用开源ZXing扫描的缺点

1、原始代码是横屏模式,尽管可以改成竖屏,但是扫描界面的自定义和多屏幕适配不好做

2、有效扫描区域不好控制,可能是我自己技术不成熟,没找到好方法

3、ZXing是Java写的,对二维码的解析效率没有ZBar快

二、 使用iOS开发经常使用的ZBar扫描的缺点

1、 ZBar是C实现的二维码解析,但是在解析中文时会乱码

2、 ZBar的扫描界面对相机的控制没有ZXing封装的好

基于以上一些原因,将二者结合起来,用ZXing来控制摄像头取得图像,用ZBar来解析扫描到的数据,最终形成目前的项目。

 

 

ZBar可以直接扫二维码和条形码, 

ZXing可以直接扫二维码, 如果要扫条形码,则需要去改改代码花点功夫了。

 

维码库有两个,分别是ZXing和ZBar,其中ZXing在Android开发中较为常见,而ZBar则在IOS开发中较为常见,更重要的一点是,这两个库都是开源

 

1、相机的获取及相机的交互处理

2、二维码图片的获取

3、二维码图片的解析

 

//获取照相机的方法
public static Camera getCameraInstance()
{
Camera mCamera = null;
try
{
mCamera = Camera.open();
//没有后置摄像头,尝试打开前置摄像头*******************
if (mCamera == null)
{
Camera.CameraInfo mCameraInfo = new Camera.CameraInfo();
int cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++)
{
Camera.getCameraInfo(camIdx, mCameraInfo);
if (mCameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
{
mCamera = Camera.open(camIdx);
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
return mCamera;
}

 

posted @ 2015-05-04 13:23  Android开发8585  阅读(414)  评论(0编辑  收藏  举报