gpt4 book ai didi

ios - iPhone X 手电筒在启用 AR 相机时关闭

转载 作者:可可西里 更新时间:2023-11-01 06:12:56 25 4
gpt4 key购买 nike

我正在构建一个需要手电筒打开手电筒模式的 AR 应用程序。打开手电筒模式然后启用 AR 场景在我的 iPhone 8 上工作正常,但在 iPhone X 上,手电筒打开然后再次关闭。有什么办法可以解决这个问题,或者我必须做些什么才能让 iPhone X 正常工作?

- (void)turnTorchOn:(bool) on {
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]){

[device lockForConfiguration:nil];
if (on) {
[device setTorchMode:AVCaptureTorchModeOn];
} else {
[device setTorchMode:AVCaptureTorchModeOff];
}
[device unlockForConfiguration];
}
}
}

然后:

self.arConfig = [ARWorldTrackingConfiguration new];
self.arConfig.planeDetection = ARPlaneDetectionHorizontal;
self.sceneView = [[ARSCNView alloc] initWithFrame:self.view.frame];
[self.view addSubview:self.sceneView];

SCNScene *scene = [SCNScene new];
self.sceneView.scene = scene;
self.sceneView.autoenablesDefaultLighting = YES;
self.sceneView.delegate = self;
self.sceneView.session.delegate = self;

更具体地说,这条线关闭了手电筒:

self.sceneView = [[ARSCNView alloc] initWithFrame:self.view.frame];

最佳答案

我希望这段代码用 Swift 编写,逻辑略有不同(由于 guard 语句)可能适用于您的 iPhone X,但老实说,我还没有尝试过。

func toggleTorch(on: Bool) {

guard let device = AVCaptureDevice.default(for: AVMediaType.video) else {
return
}
if device.hasTorch {
do {
try device.lockForConfiguration()

if on == true {
device.torchMode = .on
} else {
device.torchMode = .off
}

device.unlockForConfiguration()

} catch {
print("Error. Torch couldn't be used")
}
} else {
print("Torch isn't available")
}
}

// CALL IT:

// toggleTorch(on: true)
// toggleTorch(on: false)

希望这对您有所帮助。

关于ios - iPhone X 手电筒在启用 AR 相机时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50491228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com