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

eh57zj3b  于 5个月前  发布在  iOS
关注(0)|答案(6)|浏览(81)

总的来说,我的应用程序适用于所有iOS设备,但我有一个功能,只适用于iPhone 4的,因此,如果用户没有iPhone 4,我想显示一个警报,让他们知道,这个功能不会在他们的设备上工作?
我该怎么做?
我在检查这个装置有没有闪光灯

rt4zxlrg

rt4zxlrg1#

如果你不使用UIImagePicker

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

字符串
还有一个[device hasTorch]如果你需要它。

rqenqsqc

rqenqsqc2#

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

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

在相机闪光灯方面,我知道你可以使用UIImagePickerController的isFlashControlableForCameraDevice:方法。(你可能想在通过isCameraDeviceAvailable:方法首先验证相机的存在之后调用这个方法。)

wztqucjr

wztqucjr3#

您不需要知道您正在运行的设备,只需检查您想要使用的功能是否可用,如果不可用则显示警报。
如果您让我们知道您正在寻找什么特定功能,我们可以帮助您以特定的方式检查该功能。
不过,我自己的建议是,弹出一个对话框说,“如果你有一个新的手机,你就可以做到这一点!”这真的只是摩擦你的用户的脸,事实上,他们有一个旧手机,现在不是吗?一个更好的处理方法是:1)在你的AppStore页面上明确说明某些功能在非iPhone 4手机上不可用; 2)让你的应用程序的行为在非iPhone 4s上优雅地降级。

smtd7mpg

smtd7mpg4#

对于Swift 4.0

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

字符串

7nbnzgx9

7nbnzgx95#

这个问题有点模糊,但如果你遇到它,这里有一些最新的信息。
首先,您可以通过info.plist文件中的以下UIRequiredDeviceCapabilities值要求设备具有闪存。

camera-flash

字符串
如果您的应用需要(或明确禁止)使用相机闪光灯拍照或拍摄视频,请包含此键。应用使用UIImagePickerController接口来控制此功能的启用。
Documentation link
接下来,您可以检查您的UIImagePickerController,看看是否有可用的。这很有用,因为不是每个设备上的每个相机都有闪光灯。

isFlashAvailable(for:)


指示给定相机是否具有闪光灯照明功能。
Documentation link
或者,如果您使用的是AVFoundation,则可以查询AVCaptureDevice

captureDevice.hasFlash


指示捕获设备是否有闪存。
Documentation link

ct3nt3jp

ct3nt3jp6#

溶液(在BN-C中):

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

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

    return hasFlash;
}

字符串
在iPhone和iPad上测试成功。

相关问题