iPhone - 如何检测设备是否有前置摄像头

22

苹果建议不要搜索硬件版本,而是搜索您感兴趣的特定功能。

那么我如何检测设备上是否有前置摄像头以便能够禁用某些功能?

[UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera] 只告诉我们设备上存在相机。

2个回答

45

尝试使用UIImagePickerController的这个方法:

+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice

这是一个类方法,UIImagePickerControllerCameraDevice可以接受两个值:

  • UIImagePickerControllerCameraDeviceRear
  • UIImagePickerControllerCameraDeviceFront

示例代码:

if( [UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceFront ])
{
   // do something
}

请注意,此功能仅适用于 iOS 4.0 及更高版本。


嗯,好的,但是如果这只适用于iOS 4及更高版本,那可能有些愚蠢。如果我的用户使用iOS 3上的3G,我如何检测可用的相机类型,而不需要询问硬件? - Oliver
2
使用isSourceTypeAvailable:。如果设备运行iOS3,则只有一个相机。 - Matthias Bauch
1
[UIImagePickerController respondsToSelector:@selector(isCameraDeviceAvailable:)] 当然可以。 - tc.
@Oliver:对于使用 iOS < 4.0 的设备,如果你正在为 iPhone 开发应用程序,你可以直接使用相机,因为它只有一个。 - quaertym

2
在Swift中
imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.Front

那样可以设置相机设备,但是你需要先使用 isCameraDeviceAvailable(_:) 进行检查吗? - benc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接