Android Camera2 没有获取物理相机
Android Camera2 not getting physical cameras
我正在开发一个 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);
}
这段代码returns如下:
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, 3, 5, 1, 6, 2]
这表明它缺少 REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA。然而,我正在测试的 phone 有 3 个后置摄像头和 1 个前置摄像头。我错过了什么?
不幸的是,并非所有制造商都支持逻辑相机 API,即使他们提供相机集群也是如此。在他们这样做之前,可能无法直接访问物理相机。
有时,也没有自动打开变焦功能,因此您完全只能使用普通的 FOV 相机。
这些设备中的大多数都有特定于 OEM 的方式来访问所有相机,但这些方式因设备而异,并且可能根本无法被常规应用访问。
我正在开发一个 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);
}
这段代码returns如下:
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, 3, 5, 1, 6, 2]
这表明它缺少 REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA。然而,我正在测试的 phone 有 3 个后置摄像头和 1 个前置摄像头。我错过了什么?
不幸的是,并非所有制造商都支持逻辑相机 API,即使他们提供相机集群也是如此。在他们这样做之前,可能无法直接访问物理相机。
有时,也没有自动打开变焦功能,因此您完全只能使用普通的 FOV 相机。
这些设备中的大多数都有特定于 OEM 的方式来访问所有相机,但这些方式因设备而异,并且可能根本无法被常规应用访问。