如何检测android手机是否有双背相机

问题描述 投票:4回答:3

如何检测Android手机是否有双背相机

我试过了

CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
    try {
        for(String id: manager.getCameraIdList())
            Log.e("dualtest", id);
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }

但它只给我2个0和1。

java android camera
3个回答
1
投票

你可以使用Camera.getCameraInfo如下。如果你使用api lvl 9

List<Integer> camID = new ArrayList<Integer>();    
        for(int i=0;i<Camera.getNumberOfCameras();i++){
            CameraInfo cameraInfo = new CameraInfo();
            Camera.getCameraInfo(i,cameraInfo);
            if(cameraInfo.facing==CameraInfo.CAMERA_FACING_BACK) {
                camID.add(i);
                break;
            }
        }

如果你使用的是api level 21,你可以使用Camera2 api

List<String> camID = new ArrayList<String>(); 

    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    for(String cameraId:manager.getCameraIdList()){
        CameraCharacteristics cameraCharacteristics = manager.getCameraCharacteristics(cameraId);
        Integer facing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
        if(facing==CameraMetadata.LENS_FACING_BACK) {
            camID.add(cameraId);
            break;
        }
    }

参考

https://developer.android.com/reference/android/hardware/camera2/CameraManager.html

https://developer.android.com/reference/android/hardware/Camera.html#getCameraInfo(int,%20android.hardware.Camera.CameraInfo)


0
投票

这里只是个人意见,但我不认为这是可能的(虽然我没有任何证据)。通常,2个双摄像头本身非常不同:光圈,变焦,颜色等。它们可能不会自行运行,但在软件结合两者的输入时做得很好。但如果处理软件非常好,你甚至不需要双摄像头设置(使用谷歌的相机应用程序,这在这方面做得很好)。总而言之,这种双摄像头的制作方式有很多种,如果单个摄像头在某些设置上工作,在其他设备上则可能完全没用。这就是为什么我相信即使背面有2个摄像头,它们也被系统视为一个摄像头。此外,考虑到Android手机制造商的数量,为了开发统一的API,很难对齐所有这些。根据制造商的不同,他们可能会为您提供一些API,只能访问一台摄像头,但这只能在他们的手机上使用,直到谷歌没有切换到双摄像头设置,我不相信会有一个API提供此功能。


0
投票

Nishant,我在Mi A1上测试了同样的东西,发现我只有两台摄像机。你能找到答案吗?

for(String camera_id : cameraManager.getCameraIdList()){
    Log.d(TAG, "Available Cameras: id: " + camera_id + " and rear facing = " + (cameraManager.getCameraCharacteristics(camera_id).get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_BACK));
}

输出:

可用的相机:id:0和后方饰面= true

可用的摄像头:id:1,后面饰面= false

还发现了LG双摄像头访问的this link。如果有人可以帮助回答如何在Mi A1上启用第二个后置摄像头,将会很有帮助

© www.soinside.com 2019 - 2024. All rights reserved.