如何确定AVCaptureDevice.DeviceType对应iOS硬件及相机默认排序?
AVCaptureDevice.DeviceType 硬件对应与排序指南
一、各DeviceType对应的iOS硬件列表
.builtInTripleCamera:iPhone 11 Pro/Pro Max、iPhone 12 Pro/Pro Max、iPhone 13 Pro/Pro Max、iPhone 14 Pro/Pro Max、iPhone 15 Pro/Pro Max.builtInDualWideCamera:iPhone 11全系列、iPhone 12全系列、iPhone 13全系列、iPhone 14全系列(除SE)、iPhone 15全系列(除SE).builtInDualCamera:iPhone 7 Plus、iPhone 8 Plus、iPhone X、iPhone XS/XS Max、iPhone XR.builtInWideAngleCamera:所有配备后置相机的iOS设备(包括上述所有机型,以及iPhone SE全系列、iPhone 6/6s/7/8等单摄机型).builtInUltraWideCamera:没有仅搭载该类型的设备,它始终作为双摄/三摄系统的一部分存在,比如iPhone 11及以后的非SE机型都包含该镜头,但单独的DeviceType仅用于指定调用超广角镜头场景
二、匹配原生相机默认顺序的DeviceType排序
原生相机默认优先启动广角镜头,要让DiscoverySession的设备枚举逻辑匹配原生逻辑,建议按「设备支持的最高规格相机系统优先,默认镜头为广角」的规则排序:
let deviceTypes: [AVCaptureDevice.DeviceType] = [ .builtInTripleCamera, .builtInDualWideCamera, .builtInDualCamera, .builtInWideAngleCamera, .builtInUltraWideCamera ]
.builtInTripleCamera排在最前:三摄机型的原生相机默认调用三摄系统中的广角镜头,枚举时优先识别完整三摄系统.builtInDualWideCamera需在.builtInDualCamera之前:双摄广角系统(带超广角)是后续机型的新配置,原生逻辑会优先识别更新的相机系统.builtInUltraWideCamera必须加入:虽然没有单摄超广角设备,但当用户切换到超广角时,该类型可被正确识别;由于原生相机默认不启动超广角,放在最后即可
三、确认硬件对应关系与排序的方法
- 真机测试:在目标机型上打印
DiscoverySession枚举的设备列表,查看每个设备的deviceType和position,验证实际返回顺序 - 对照硬件发布参数:苹果每代iPhone的相机配置在发布会或官网参数页有明确说明,比如三摄仅对应Pro系列,双摄广角对应后续非Pro机型等
- API验证:遍历
DiscoverySession返回的devices数组,打印每个设备的localizedName和deviceType,对比原生相机默认启动的镜头信息
内容的提问来源于stack exchange,提问作者Ethan Allen
相关产品推荐
相关产品推荐

