我需要问一个与条形码扫描相关的问题,我正在使用一个扫描条形码并在网络上搜索结果的应用程序。 现在这是我创建相机对象实例的方法
/** 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
最佳答案
在 Android 2.3 之前,没有访问前置摄像头的 API,所有设备摄像头都是后置摄像头。您正在使用的 API 调用是原始的,并且仍然只会打开一个后置摄像头,以实现兼容性。在 Nexus 7 上,您将获得 null
。
您需要Camera.open(int)
来选择另一个相机。在 Nexus 7 上,由于只有一个摄像头,因此肯定会使用 Camera.open(0)
打开。但实际上,您需要询问所有可用的摄像头并选择您想要的摄像头。
source code from zxing/Barcode Scanner 显示它如何打开后置摄像头,除非没有可用的摄像头,在这种情况下会打开前置摄像头。
(请注意,Barcode Scanner+ 也会让您在它们之间进行选择,如果您有的话。)
关于android - 如何让Nexus7在没有后置摄像头的情况下使用前置摄像头扫码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926493/