Filter out true-depth-camera in getAvailableCameraDevices
This commit is contained in:
parent
84fb076bc4
commit
9f30348053
@ -89,7 +89,14 @@ final class CameraViewManager: RCTViewManager {
|
|||||||
final func getAvailableCameraDevices(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
final func getAvailableCameraDevices(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||||
withPromise(resolve: resolve, reject: reject) {
|
withPromise(resolve: resolve, reject: reject) {
|
||||||
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: getAllDeviceTypes(), mediaType: .video, position: .unspecified)
|
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: getAllDeviceTypes(), mediaType: .video, position: .unspecified)
|
||||||
return discoverySession.devices.map {
|
let devices = discoverySession.devices.filter({
|
||||||
|
if #available(iOS 11.1, *) {
|
||||||
|
// exclude the true-depth camera. The True-Depth camera has YUV and Infrared, can't take photos!
|
||||||
|
return $0.deviceType != .builtInTrueDepthCamera
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
return devices.map {
|
||||||
return [
|
return [
|
||||||
"id": $0.uniqueID,
|
"id": $0.uniqueID,
|
||||||
"devices": $0.physicalDevices.map(\.deviceType.descriptor),
|
"devices": $0.physicalDevices.map(\.deviceType.descriptor),
|
||||||
|
@ -23,14 +23,6 @@ extension AVCaptureDevice.DeviceType {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if #available(iOS 11.1, *) {
|
|
||||||
switch self {
|
|
||||||
case .builtInTrueDepthCamera:
|
|
||||||
return "true-depth-camera"
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch self {
|
switch self {
|
||||||
case .builtInDualCamera:
|
case .builtInDualCamera:
|
||||||
return "dual-camera"
|
return "dual-camera"
|
||||||
@ -39,6 +31,7 @@ extension AVCaptureDevice.DeviceType {
|
|||||||
case .builtInWideAngleCamera:
|
case .builtInWideAngleCamera:
|
||||||
return "wide-angle-camera"
|
return "wide-angle-camera"
|
||||||
default:
|
default:
|
||||||
|
// e.g. `.builtInTrueDepthCamera`
|
||||||
fatalError("AVCaptureDevice.Position has unknown state.")
|
fatalError("AVCaptureDevice.Position has unknown state.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,9 +15,8 @@ export type PhysicalCameraDeviceType = 'ultra-wide-angle-camera' | 'wide-angle-c
|
|||||||
* * `"dual-camera"`: A combination of wide-angle and telephoto cameras that creates a capture device.
|
* * `"dual-camera"`: A combination of wide-angle and telephoto cameras that creates a capture device.
|
||||||
* * `"dual-wide-camera"`: A device that consists of two cameras of fixed focal length, one ultrawide angle and one wide angle.
|
* * `"dual-wide-camera"`: A device that consists of two cameras of fixed focal length, one ultrawide angle and one wide angle.
|
||||||
* * `"triple-camera"`: A device that consists of three cameras of fixed focal length, one ultrawide angle, one wide angle, and one telephoto.
|
* * `"triple-camera"`: A device that consists of three cameras of fixed focal length, one ultrawide angle, one wide angle, and one telephoto.
|
||||||
* * `"true-depth-camera"`: A combination of cameras and other sensors that creates a capture device capable of photo, video, and depth capture.
|
|
||||||
*/
|
*/
|
||||||
export type LogicalCameraDeviceType = 'dual-camera' | 'dual-wide-camera' | 'triple-camera' | 'true-depth-camera';
|
export type LogicalCameraDeviceType = 'dual-camera' | 'dual-wide-camera' | 'triple-camera';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses an array of physical device types into a single {@linkcode PhysicalCameraDeviceType} or {@linkcode LogicalCameraDeviceType}, depending what matches.
|
* Parses an array of physical device types into a single {@linkcode PhysicalCameraDeviceType} or {@linkcode LogicalCameraDeviceType}, depending what matches.
|
||||||
|
Loading…
Reference in New Issue
Block a user