3

我需要问一个与条形码扫描相关的问题,我正在使用一个扫描条形码并在网上搜索结果的应用程序。现在这是我创建相机对象实例的方法

   /** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance() {
    Camera c = null;
    try {
        c = Camera.open();
    } catch (Exception e) {
    }
    return c;
}

对于扫描,我使用的是 Zbar 库。我的问题是关于设备 Asus Nexus 7。我目前没有那个设备,但我知道它只有前置摄像头,没有后置摄像头。如果设备只有前置摄像头而没有后置摄像头,如何使其工作?我的代码可以正常工作吗?如果我添加以下使用功能 android:name = "android.hardware.camera.front" android:required="false"

我的唯一目的是允许用户扫描条形码,如果有前后摄像头,它应该通过后置摄像头扫描,如果它只有前置摄像头,它应该只通过那个摄像头扫描,我该如何继续它?欢迎所有建议。:-D

4

1 回答 1

3

在Android 2.3之前,没有访问前置摄像头的API,所有设备摄像头都是后置摄像头。您使用的 API 调用是原始调用,为了兼容性,仍将只打开后置摄像头。在 Nexus 7 上,您将获得null.

您需要Camera.open(int)选择另一台相机。在 Nexus 7 上,因为只有一个摄像头,所以肯定会用Camera.open(0). 但实际上,您需要询问所有可用的相机并选择您想要的相机。

zxing / Barcode Scanner的源代码显示了它如何打开后置摄像头,除非没有可用的,在这种情况下打开前置摄像头。

(请注意,如果您有Barcode Scanner+,您也可以在它们之间进行选择。)

于 2013-04-10T13:38:54.363 回答