iOS
Swift

【iOS開発メモ】AVFoundationでキャプチャデバイスの検出

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型のオブジェクトが取得できる。