如何在安卓设备中使用前置摄像头集成ZXing API?

8

我想在我的安卓应用中集成ZXing API,但找不到合适的文档。

3个回答

9

按照以下步骤操作:

1)在此处下载源代码:http://code.google.com/p/zxing/source/checkout

2)将源代码作为新项目导入Eclipse,并将项目的根目录设置为源代码中的 /android 文件夹。

3)确保还将 /core/src 下的所有内容复制到此项目中,因为导入步骤2中的源代码需要它们。

4)在Eclipse中将编译器设置为Java 1.6(右键单击项目,选择属性,选择Java编译器),否则你将会遇到关于 @Override 注释的某些错误。

5)按以下方式编辑 com.google.zxing.client.android.camera.open.GingerbreadOpenCameraInterface 类:

  while (index < numCameras) {
       Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
       Camera.getCameraInfo(index, cameraInfo);


       if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
           break;
       }
       /*//Original code (gets the back camera. This is NOT what you want!)
       if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
    break;
  }*/
  index++;
}

5) 将此项目制作成一个库,可以按照以下链接进行简单描述:http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

6) 将该项目引用到您的实际项目中(右键单击实际项目,属性,Java构建路径,项目,添加)。

7) 完成!=)

希望有所帮助。


很好的描述,Tiago :) - Arpit Garg
嗨,Tiago,我按照你的要求实现了前置摄像头。但是它无法扫描并获取结果。只显示一个简单的相机视图。如果我把条形码放在它前面,什么也不会发生。没有堆栈跟踪。可能是什么问题?你能帮我吗? - Rethinavel
问题很可能是您使用的前置相机没有自动对焦,这使得读取条形码非常困难。前置摄像头通常会锁定其焦点(以降低成本),这使它们不适合拍摄近距离物体。我也曾因为缺乏自动对焦而遇到前置相机读取条形码的问题。有时候我需要等待一分钟以上才能成功识别条形码,其他时候,相机根本无法读取条形码。问题不在软件中,而在相机本身。 - Bitcoin Cash - ADA enthusiast
能否再详细解释一下?下载。现在我看到了4个不同的项目。Core/src中有一个文件。更让人担心的是,整个档案中根本没有GingerbreadOpenCameraInterface。也许他们改变得太多了。如果是这种情况,那么你使用的版本会很有帮助。更好的方法是把你的示例发布在某个地方。 - StarWind0

5

我在首选项中搜索但找不到设置。你怎么做到的? - Natim
@Natim 我记得这是自动处理的。默认情况下使用后置摄像头,但如果没有这样的摄像头,则改用前置摄像头。 - Adam Nybäck
我的后置摄像头坏了,希望我能尝试使用前置摄像头。 - Natim
它不在设置中。我认为你是不正确的。另外,我需要能够直接启动它。 - StarWind0

0

更新:

自从我发布这个答案以来,ZXing的常见问题解答已经更新,因此下面的内容已经不准确了:

你读过ZXing的常见问题解答吗?

这个应用程序可以在只有前置摄像头的Android设备上使用吗,比如Nexus 7平板电脑?目前还不能。该应用程序需要相机。在Android中,只有后置摄像头被认为是“真正的”相机,因此只有前置摄像头的设备不兼容。此外,API对前置摄像头的支持出现在比应用程序当前要求的Android版本更晚的版本中。前置摄像头往往具有较低的CCD灵敏度和缺乏自动对焦功能,使其难以扫描。

然而,Barcode Scanner+支持只有前置摄像头的设备。

此外,如果您可以连接前置摄像头,我认为这并非完全不可能。因此,我建议您查看Android文档中的相机部分:这里这里

这已经不再是真实情况,FAQ条目已被删除。 - Sean Owen
@SeanOwen 谢谢,我已经划掉了我的答案。 - dumbfingers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接