ZXing android使用前置摄像头

时间:2014-06-02 16:29:32

标签: android zxing

我正在尝试按照本教程构建QR码阅读器

http://code.tutsplus.com/tutorials/android-sdk-create-a-barcode-reader--mobile-17162

我设法让一切正常,除了我需要相机作为我的设备的前置摄像头而不是后置摄像头。我在教程中找不到允许我更改此内容的任何地方。我尝试了this回答,但我仍然无法让它发挥作用。

主要是我的问题是导入库。我收到以下错误。

operator is not allowed for source level below 1.7

当我将编译器设置设置为1.7时,我得到了这个

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead

我对Android并不十分熟悉,如果这可能不是一个好问题我会道歉。

那么,在我的应用中,我可以用任何方式将ZXing与前置摄像头配合使用吗?有链接吗?

非常感谢。

3 个答案:

答案 0 :(得分:7)

源代码使用Java 7. Android不需要Java< = 6.您可以看到项目中提供的构建愉快地将Java 7字节码提供给dex并生成一个可用的应用程序。我不确定你使用的是什么工具。也许它已经老了。

您不应该复制和编译项目的代码。为什么这有必要?使用core.jar文件。

您不需要使用前置摄像头。只需通过Intent(https://github.com/zxing/zxing/wiki/Scanning-Via-Intent)调用并将额外的SCAN_CAMERA_ID设置为您想要的摄像机的ID - 通常为前一个摄像机的ID。

示例:

        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        intent.putExtra("SCAN_CAMERA_ID", 1);

答案 1 :(得分:2)

经过不少搜索,我发现如何使用前置摄像头。 com.google.zxing.client.android.camera.CameraConfigurationManager.java

中有这段代码
public void openDriver(SurfaceHolder holder) throws IOException {
Camera theCamera = camera;
if (theCamera == null) {
  theCamera = Camera.open();
  if (theCamera == null) {
    throw new IOException();
  }
  camera = theCamera;
}
theCamera.setPreviewDisplay(holder);

Camera.open()更改为 Camera.open(1) 我工作得很好

答案 2 :(得分:2)

如果您使用IntentIntegrator,则可以使用setCameraId()指定前置摄像头:

IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.setCameraId(1);
integrator.initiateScan();