objective-c - 获取相机列表
问题描述
我想知道如何获取适合在应用程序中显示的相机列表(例如在警报控制器中)。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]>"
但我只需要“后置摄像头”和“前置摄像头”。先感谢您!
解决方案
captureDevices
是一个NSArray
如果AVCaptureDevice
。你想要一个NSArray
只有设备名称的?
然后,只需执行一个 for 循环:
NSMutableArray *names = [[NSMutableArray alloc] init];
for (AVCaptureDevice *aCaptureDevice in captureDevices)
{
[names addObject:[aCatpureDevice localizedName]];
}
推荐阅读
- node.js - Axios 响应未正确执行
- amazon-web-services - 调用AWS Textract API时如何指定需要支付的Key值?
- firebase - Google Cloud Build Deploy to Firebase Hosting 出现意外错误
- 3dsmax - 如何在 Maxscript 中更改文件名?
- javascript - 如何检测 React 父组件中的本地存储集
- java - 哈希表,查找函数
- javascript - 在 IF ELSE 语句中使用 props 做出反应
- angular - 为什么 Angular 默认将应用程序路由放入自己的模块中?
- laravel - Laravel:在数据库的下拉列表中显示数据
- yocto - 使用 yocto 发行版的 bitbake 编译颤振桌面应用程序