Android Camera2 没有获得物理相机

问题描述

我正在开发一个 React Native 包,以获取有关 Android 设备上摄像头的信息。问题是并非所有摄像头都显示出来。

我的代码如下:

try {
    Context context = getReactApplicationContext();
    CameraManager cameraManager = (CameraManager)context.getSystemService(Context.CAMERA_SERVICE);

    for (String cameraId : cameraManager.getCameraIdList()) {
        CameraCharacteristics cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId);

        Set<String> physicalCameraIds = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
            physicalCameraIds = cameraCharacteristics.getPhysicalCameraIds();
        }

        Log.d(TAG,"logic ID: " + cameraId + " Physics under ID: " + Arrays.toString(physicalCameraIds.toArray()));

        int[] capabilities = cameraCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
        Log.d(TAG,Arrays.toString(capabilities));
    }

} catch(Exception e) {
    promise.reject("Error",e);
}

这段代码返回以下内容:

D/Debug: logic ID: 0 Physics under ID: []
D/Debug: [0,9,3,7,4,5,1,6,2]

D/Debug: logic ID: 1 Physics under ID: []
D/Debug: [0,2]

这表明它缺少 REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA。然而,我正在测试的手机有 3 个后置摄像头和 1 个前置摄像头。我错过了什么?

解决方法

遗憾的是,并非所有制造商都支持逻辑相机 API,即使他们提供相机集群也是如此。在他们这样做之前,可能无法直接访问物理摄像头。

有时,也不会自动切换变焦,因此您完全只能使用常规 FOV 相机。

这些设备中的大多数都有特定于 OEM 的方式来访问所有摄像头,但这些方式因设备而异,并且可能根本无法由常规应用访问。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...