如何确定iOS设备上是否有可用的相机闪光灯

时间:2010-12-12 21:35:42

标签: ios iphone

整体而言,我的应用程序适用于所有iOS设备但是我的功能仅适用于iPhone 4,因此如果用户没有iPhone 4,我想显示警告,让他们知道此功能不起作用在他们的设备上?

我该怎么做?

我正在尝试检查设备是否有相机闪光灯

5 个答案:

答案 0 :(得分:10)

如果您没有使用UIImagePicker

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
BOOL hasFlash = [device hasFlash];

如果您需要,还有[device hasTorch]

答案 1 :(得分:8)

您是否尝试过各种UIDevice方法?也就是说,这很可能是一种更简单的方法,具体取决于您的可选功能需要什么特定功能,但不知道这是什么,很难给出一个具体的例子。

N.B。:我还建议不要基于检测到的设备本身设置功能集,以便将来兼容。

<强>更新

就相机闪光而言,我知道你可以使用UIImagePickerController的isFlashAvailableForCameraDevice:方法。 (您可能希望在首次通过isCameraDeviceAvailable:方法验证相机的存在后调用此方法。)

答案 2 :(得分:3)

您无需知道正在运行的设备,检查您要使用的功能是否可用,如果不可用则显示警告。

如果您告诉我们您要查找的具体功能,我们可以提供检查该功能的具体方法。

虽然,我在这里建议,弹出一个对话框,上面写着:“如果你有一部新手机,你就可以做到这一点!”真的只是在揉搓你的用户的脸事实上,他们有一部旧电话,现在不是吗?处理它的一个更好的方法是1)在你的AppStore页面中明确表示某些功能在非iPhone 4手机上不可用; 2)使你的应用程序的行为在非iPhone 4上优雅地降低。

答案 3 :(得分:0)

这个问题有点尘土飞扬,但是如果您遇到它,这里是一些最新信息。

首先,您可以通过UIRequiredDeviceCapabilities文件中info.plist的以下值来要求设备具有闪存。

camera-flash
  

如果您的应用需要(或特别是,   禁止)使用相机闪光灯拍照或   拍摄视频。应用程序使用UIImagePickerController接口来   控制此功能的启用。

Documentation link

接下来,您可以检查自己的UIImagePickerController,看看是否有空。这很有用,因为并非每个设备上的每个摄像头都有闪光灯。

isFlashAvailable(for:)
  

指示给定的相机是否具有闪光灯照明功能。

Documentation link

或者,如果您使用的是AVFoundation,则可以查询AVCaptureDevice

captureDevice.hasFlash
  

指示捕获设备是否具有闪光灯。

Documentation link

答案 4 :(得分:0)

快速4.0

apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nanoserver-iis
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aci-helloworld
      template:
      metadata:
        labels:
          app: nanoserver-iis
      spec:
        containers:
        - name: nanoserver-iis
          image: microsoft/iis:nanoserver
          ports:
        - containerPort: 80
        nodeSelector:
          kubernetes.io/hostname: virtual-kubelet-aci-connector-windows-westeurope
        tolerations:
        - key: virtual-kubelet.io/provider
          operator: Equal
          value: azure
          effect: NoSchedule