如何让Nexus7在后置摄像头缺失的情况下使用前置摄像头扫描条形码

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设备有关。 我目前没有这个设备,但我知道它只有前置摄像头,没有后置摄像头。 如果设备只有前置摄像头而没有后置摄像头,该怎么办? 如果我添加以下uses-feature android:name =“android.hardware.camera.front”android:required=“false”,它能正常工作吗?
我的唯一目的是允许用户扫描条形码,如果设备同时具有前置和后置相机,则应通过后置相机进行扫描,如果只有前置相机,则应仅通过该相机进行扫描。我该如何继续进行? 欢迎提出所有建议。:-D
1个回答

3
在Android 2.3之前,没有API可以访问前置摄像头,所有设备的摄像头都是后置的。你正在使用的API调用是原始的,仍然只会打开后置摄像头以保持兼容性。在Nexus 7上,你将得到null
你需要使用Camera.open(int)来选择另一个摄像头。在Nexus 7上,由于只有一个摄像头,它肯定会被打开Camera.open(0)。但是,你真的需要查询所有可用的摄像头并选择你想要的那个。
从zxing / Barcode Scanner的源代码可以看出,它如何打开后置摄像头,除非没有可用的后置摄像头,否则将打开前置摄像头。
(请注意,如果你安装了Barcode Scanner+,它也会让你在两者之间进行选择。)

由于您开发了条码扫描器+...是否有设备只有Gingerbread及以下版本的前置摄像头,就像某些设备(例如Nexus 7)一样是比Gingerbread大的特殊情况...只是一个随机的查询,伙计...!!! - Varun
比起姜饼,更新的设备并不算特别。我相信有些姜饼系统的设备只有前置摄像头。虽然没有API支持,但是不应该对装有前置摄像头的姜饼设备施加压力,但我见过一些中国品牌的设备就是这样。他们使用了一些奇怪的特殊API,标准API无法使用。 - Sean Owen
好的,听起来很棒。谢谢Sean...感谢你的体贴...你是一颗宝石!!! - Varun

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