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

问题描述 投票:0回答:6

总的来说,我的应用程序适用于所有 iOS 设备,但我有一个功能仅适用于 iPhone 4,因此如果用户没有 iPhone 4,我想显示一条警告,让他们知道此功能不适用于他们的设备设备?

我怎样才能做到这一点?

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

ios iphone
6个回答
11
投票

如果您不使用

UIImagePicker

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

如果您需要的话,还有一个

[device hasTorch]


8
投票

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

注意:出于未来兼容性的原因,我还建议不要基于检测到的设备本身来假设功能集。

更新

就相机闪光灯而言,我知道你可以使用 UIImagePickerController 的 isFlashAvailableForCameraDevice: 方法。 (您可能需要在首先通过 isCameraDeviceAvailable: 方法验证相机是否存在后调用此函数。)


3
投票

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

如果您让我们知道您正在寻找什么特定功能,我们可以帮助您找到检查该功能的具体方法。

不过,我自己的建议是,弹出一个对话框,上面写着“如果你有一部更新的手机,你就能够做到这个!”,这实际上只是在磨蹭你的用户的脸,因为他们已经现在有一部旧手机,不是吗?更好的处理方法是 1) 在 AppStore 页面中明确指出某些功能在非 iPhone 4 手机上不可用,2) 让应用程序的行为在非 iPhone 4s 上正常降级。


2
投票

对于 swift 4.0

let device = AVCaptureDevice.default(for: .video)
         var hasFlash: Bool! = false
         hasFlash = device?.hasFlash

0
投票

这个问题有点多,但如果你遇到过,这里有一些最新信息。

首先,您可以通过

UIRequiredDeviceCapabilities
文件中的以下
info.plist
值要求设备具有闪光灯。

camera-flash

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

文档链接

接下来,您可以检查您的

UIImagePickerController
看看是否有可用的。这很有用,因为并非每个设备上的每个相机都有闪光灯。

isFlashAvailable(for:)

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

文档链接

或者,如果您使用

AVFoundation
,您可以查询
AVCaptureDevice

captureDevice.hasFlash

指示采集设备是否有闪光灯。

文档链接


0
投票

Objective-C 中的解决方案:

- (bool)hasDeviceLED {
    bool hasFlash = NO;
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo];

    if (device != nil) {
        hasFlash = device.hasFlash;
    }

    return hasFlash;
}

已在 iPhone 和 iPad 上成功测试。

© www.soinside.com 2019 - 2024. All rights reserved.