如何检查设备是否具有前置和后置摄像头?

6

我需要检测手机是否有前置摄像头,并且如果有的话,需要计算其兆像素。同样的,对于后置摄像头也是如此。

我知道如何获取“Camera”对象的兆像素,但我不知道如何检查其他信息。

另外,如果您知道一种检查相机是否具有闪光灯以及其他有关相机的酷炫统计数据的方法,那将非常好。

2个回答

4

我总是尝试创建辅助工具,检查你是否有前置摄像头:

public static boolean checkCameraFront(Context context) {
    if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)) {
        return true;
    } else {
        return false;
    }
}

检查您的设备是否配备摄像头

public static boolean checkCameraRear() {
    int numCamera = Camera.getNumberOfCameras();
    if(numCamera > 0) {
        return true;
    } else {
        return false;
    }
}

你能帮我吗?我遇到了一个问题,我的设备有前置摄像头但没有后置摄像头。我该如何检查呢? - Gaurang Goda

3
http://developer.android.com/reference/android/hardware/Camera.html#getNumberOfCameras()是一个API 9引入的函数,它可以获取您手机上可用摄像头的数量。 http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html中包含了摄像头镜头朝向的信息。
如果计算出来的话,http://developer.android.com/reference/android/hardware/Camera.Parameters.html#getPictureSize()返回的是以百万像素为单位的照片分辨率。
如果没有闪光灯,http://developer.android.com/reference/android/hardware/Camera.Parameters.html#getFlashMode()将返回null。
相机对象还可以获取许多其他参数。 http://developer.android.com/reference/android/hardware/Camera.html提供了使用相机的逐步说明。只要您理解任何面向对象的语言,就可以遵循这些说明。

是的,我可以获取相机数量,但是如何实例化每个相机并检查两个相机的朝向呢?有代码示例会很好,我找不到实现它的方法。 - Pableras84
1
一只手抱着婴儿,无法编写代码。API文档中有示例。 - Gjordis
谢谢提供的链接,但我仍然不知道如何获取前置摄像头和后置摄像头的信息。我只知道如何获取相机数量以及其中一个相机的信息。但我不知道如何实例化前置摄像头和后置摄像头的相机对象。在这些链接中我找不到相关信息。 - Pableras84
两个摄像头都有自己的ID,你需要将其提供给open(int)函数。当你使用open()打开相机时,会得到一个Camera对象。使用open(0)打开前置摄像头,使用open(1)打开后置摄像头,或者反之。然后,你可以调用每个对象的getPictureSize等方法来获取前置和后置摄像头的属性。如果我没记错的话,一次只能打开一个摄像头。你需要释放一个摄像头才能使用另一个摄像头。 - Gjordis
嗯,不错!我要去看看! - Pableras84
如果它真的展示了如何做到这一点,我本来会给一个加号的。应该只是一个快速的片段(因为我几年前就写过它..) - StarWind0

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