首页 > 解决方案 > 获取相机列表

问题描述

我想知道如何获取适合在应用程序中显示的相机列表(例如在警报控制器中)。AVCaptureDeviceDiscoverySession现在我通过执行以下操作获得阵列相机:

AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera]
                                              mediaType:AVMediaTypeVideo
                                               position:AVCaptureDevicePositionUnspecified];
NSArray *captureDevices = [session devices];

问题是 NSArray 包含多余的信息:

"<AVCaptureFigVideoDevice: 0x10ff0bb80 [Back Camera][com.apple.avfoundation.avcapturedevice.built-in_video:0]>",
    "<AVCaptureFigVideoDevice: 0x10ff107f0 [Front Camera][com.apple.avfoundation.avcapturedevice.built-in_video:1]>"

但我只需要“后置摄像头”和“前置摄像头”。先感谢您!

标签: objective-cavfoundation

解决方案


captureDevices是一个NSArray如果AVCaptureDevice。你想要一个NSArray只有设备名称的?

然后,只需执行一个 for 循环:

NSMutableArray *names = [[NSMutableArray alloc] init]; 
for (AVCaptureDevice *aCaptureDevice in captureDevices) 
{ 
    [names addObject:[aCatpureDevice localizedName]];
}

推荐阅读