AVCaptureDevice.DescoverySessionクラスを使用してiPhoneで使用可能なキャプチャデバイスを検出します。
使用した端末
iPhone SE(iOS 11)
コード
import UIKit
import AVFoundation
class ViewController: UIViewController {
var device = AVCaptureDevice.DiscoverySession(
deviceTypes: [
AVCaptureDevice.DeviceType.builtInWideAngleCamera,
AVCaptureDevice.DeviceType.builtInMicrophone,
AVCaptureDevice.DeviceType.builtInDualCamera,
AVCaptureDevice.DeviceType.builtInTelephotoCamera,
AVCaptureDevice.DeviceType.builtInTrueDepthCamera
],
mediaType: AVMediaType.video,
position: AVCaptureDevice.Position.unspecified
)
override func viewDidLoad() {
super.viewDidLoad()
print(type(of: device.devices), device.devices)
}
}
型推論があるのでAVCaptureDevice.DeviceTypeなどは省略可能です。
mediaTypeを変えてやればマイクなどのデバイスの検出も可能。
出力(見やすく編集してます)
Array<AVCaptureDevice>
[<AVCaptureFigVideoDevice: 0x10160d8e0 [Back Camera][com.apple.avfoundation.avcapturedevice.built-in_video:0]>,
<AVCaptureFigVideoDevice: 0x1016134d0 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]>]
これでAVCaptureDvice型のオブジェクトが取得できる。