📷

AVFoundationでカメラ種類判定(二眼・三眼など)

2020/09/27に公開
var defaultVideoDevice: AVCaptureDevice?
               
if let tripleCameraDevice = AVCaptureDevice.default(.builtInTripleCamera, for: .video, position: .back) {
   //トリプルカメラ
   defaultVideoDevice = tripleCameraDevice
} else if let dualCameraDevice = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .back) {
   //デュアルカメラ(広角・望遠)
   defaultVideoDevice = dualCameraDevice
} else if let dualWideCameraDevice = AVCaptureDevice.default(.builtInDualWideCamera, for: .video, position: .back) {
   //デュアルカメラ(広角・超広角)
   defaultVideoDevice = dualWideCameraDevice
} else if let backCameraDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) {
   //シングルカメラ
   defaultVideoDevice = backCameraDevice
}  else if let frontCameraDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front) {
   //インカメラ
   defaultVideoDevice = frontCameraDevice
}

必ずカメラが多いものから判定していく。(トリプル→デュアル→シングル)
例えば、トリプルカメラ(超広角・広角・望遠)はデュアルカメラ(広角・望遠)の要素を満たしているため .builtInTripleCamera より先に .builtInDualCamera の判定をおこなうとトリプルカメラがデュアルカメラだと誤判定されてしまう。

Discussion