【问题标题】:Iphone flashlight not working while app is in background应用程序在后台时,iPhone手电筒不工作
【发布时间】:2015-08-21 09:03:39
【问题描述】:

嗨,我正在使用基于位置的应用程序,并且想在后台使用 iphone 相机手电筒。不幸的是,手电筒仅在前台工作,即使代码正在执行,它也会自动关闭后台闪光灯。 em>

我使用的代码只在前台工作

#import <AVFoundation/AVFoundation.h>
//flashcode
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if ([device hasTorch] && [device hasFlash]){

        [device lockForConfiguration:nil];
        if (device.torchMode == AVCaptureTorchModeOff)
        {
            [device setTorchMode:AVCaptureTorchModeOn];
            [device setFlashMode:AVCaptureFlashModeOn];
            //torchIsOn = YES;
        }
        else
        {
            [device setTorchMode:AVCaptureTorchModeOff];
            [device setFlashMode:AVCaptureFlashModeOff];
            // torchIsOn = NO;
        }
        [device unlockForConfiguration];
    }
}

【问题讨论】:

  • 如果有人解释一下当应用程序处于后台时苹果沙盒如何杀死手电筒会很好
  • 我编辑了我的答案以进一步解释。

标签: objective-c ios8 background camera flashlight


【解决方案1】:

这是正常现象。
Apple 的沙盒功能不允许您在应用处于后台时保持闪光灯开启。
除非我们谈论的是越狱应用程序,否则没有解决方法。

编辑:
Apple 对其系统的 API 使用非常严格。尤其是涉及到:
- 用户隐私
- 电池寿命
- 用户体验

在手电筒的情况下,最后两项是相关的。 Apple 不会让应用程序在不在前台时耗尽电池电量,iOS 用户已经习惯了手电筒、相机、麦克风……在进入后台时会立即禁用(某些后台模式下的麦克风除外)例)。

为了回答您最初发布的评论,iOS 控制着您的硬件。因此,由于 Apple 决定在用户​​关闭应用程序时不希望灯一直亮着,iOS 只会在您的应用程序进入后台时关闭闪光灯。您的应用无权阻止它。

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 2021-08-28
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多