iOS:iPhone 11 Pro上的火炬级别

iOS:iPhone 11 Pro上的火炬级别,ios,iphone,flashlight,avcapturedevice,avcapture,Ios,Iphone,Flashlight,Avcapturedevice,Avcapture,我正在使用AVCaptureDevice.setTorchModeOn(level)方法以可变亮度打开手电筒 在我的旧iPhone SE上,它工作正常-当我将level从0更改为1时,我可以清楚地看到4种不同的亮度级别 但在iPhone11Pro上,手电筒只有在级别为1.0时才会打开!如果远离最大亮度(与控制中心的手电筒相比),它的亮度也会更高 我尝试使用maxAvailableTorchLevelconstant,但结果与使用1.0 还尝试了超过1.0的值-这将导致异常(如预期) 有人也有这个

我正在使用
AVCaptureDevice.setTorchModeOn(level)
方法以可变亮度打开手电筒

在我的旧iPhone SE上,它工作正常-当我将
level
0
更改为
1
时,我可以清楚地看到4种不同的亮度级别

但在iPhone11Pro上,手电筒只有在级别为
1.0
时才会打开!如果远离最大亮度(与控制中心的手电筒相比),它的亮度也会更高

我尝试使用
maxAvailableTorchLevel
constant,但结果与使用
1.0

还尝试了超过
1.0
的值-这将导致异常(如预期)


有人也有这个问题吗?也许有一些解决方法?

根据

该常数始终表示最大可用火炬液位, 与当前支持的实际最大值无关 装置

如果该常数始终表示最大可用火炬水平,我们不仅提取不同设备具有不同的最大可用水平,而且您提到的设备不能高于1.0


现在我们能做的最好的事情就是联系。

我记得在iOS 3.x时代,我们没有简单的LED API。我们必须开始一个完整的视频捕获会话。事实证明,对于iPhone11,这似乎是唯一的解决方案。我很想听听其他不需要这个的人

这是我经过测试的变通方法。我在这里使用的是Objective C,而不是Swift,因为这是我从2009年开始在这个老应用程序中使用的!您可以很容易地找到启动视频捕获的Swift代码(忽略输出,也应该是一样的)

AVCaptureSession* session = [[AVCaptureSession alloc] init];

AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];
if ([session canAddInput:deviceInput]) {
    [session addInput:deviceInput];
}

AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];

CALayer *rootLayer = self.view.layer;
[rootLayer setMasksToBounds:YES];

CGRect frame = self.view.frame;
[previewLayer setFrame:frame];
[rootLayer insertSublayer:previewLayer atIndex:0];

//This is where you'd save the video with AVCaptureVideoDataOutput but of course we don't.

[session startRunning];
之后,您只需像往常一样启动LED:

NSError *error = nil;

if ([inputDevice isTorchModeSupported:AVCaptureTorchModeOn])
[inputDevice setTorchModeOnWithLevel:1.0 error:&error];

这在我的iPhone 11 Pro上获得了最大亮度。我现在正在寻找相同的解决方案,而不必使用视频捕获(显然使用电池,需要许可,用户可能不喜欢。需要很好地解释)。

我刚刚检查了
AVCaptureDevice.setTorchModeOn(级别)
在iPhone 11 Pro上,在iOS 14 beta 6上,它闪闪发光!
在Control Center中,您似乎可以看到4种以上的亮度级别,最高级别的亮度非常高。

只有两个LED的顶部工作(与控制中心的手电筒相同).

有什么更新吗?我收到了关于这个问题的报告,所以我正处于紧急情况下购买iPhone 11 Pro的边缘,因为这一点:/还不是很不幸。也许苹果会在一些更新中修复它……你知道它是只安装在iPhone 11 Pro上还是所有新手机上吗?我还不确定iPhone 11是否受到影响。我收到了iPhone 1用户的投诉仅限1 pro。我尝试了一些盲修复,处理了更多的解释等,但我不知道是否有帮助,因为我还没有设备。如果你有实际的设备,你能在这里检查版本1.81,看看是否有帮助吗?我让用户告诉我,它在第一次启动时工作,但在亮度变化时失败,变暗,因此可能有解决方法。是否调用lockForConfiguration()和unlockForConfiguration()在点燃火炬之前?@antonioyaphiar,我当然知道!这是iPhone 11 Pro API中的一个错误。我遇到了同样的问题,并且使用了相同的解决方法。但是,这是一个回归错误,应该由苹果修复。请尽快提交错误报告。我已经完成了。我们报告错误的人越多,修复的可能性就越大。