gpt4 book ai didi

ios - 在 iPhone 上打开手电筒/闪光灯

转载 作者:IT王子 更新时间:2023-10-29 07:38:32 27 4
gpt4 key购买 nike

我知道在 iPhone 4 上打开闪光灯并使其保持打开状态的唯一方法是打开摄像机。我不太确定代码。这是我正在尝试的:

-(IBAction)turnTorchOn {
AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
AVCaptureDevice *videoCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoCaptureDevice error:&error];

if (videoInput) {
[captureSession addInput:videoInput];

AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];
[videoOutput setSampleBufferDelegate:self queue:dispatch_get_current_queue()];

[captureSession addOutput:videoOutput];

[captureSession startRunning];

videoCaptureDevice.torchMode = AVCaptureTorchModeOn;
}
}

有谁知道这是否可行,或者我是否遗漏了什么? (我还没有要测试的 iPhone 4 - 只是尝试一些新的 API)。

谢谢

最佳答案

这是一个较短的版本,您现在可以使用它来打开或关闭灯:

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOn]; // use AVCaptureTorchModeOff to turn off
[device unlockForConfiguration];
}

更新:(2015 年 3 月)

在 iOS 6.0 及更高版本中,您可以使用以下方法控制手电筒的亮度或级别:

- (void)setTorchToLevel:(float)torchLevel
{
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
if (torchLevel <= 0.0) {
[device setTorchMode:AVCaptureTorchModeOff];
}
else {
if (torchLevel >= 1.0)
torchLevel = AVCaptureMaxAvailableTorchLevel;
BOOL success = [device setTorchModeOnWithLevel:torchLevel error:nil];
}
[device unlockForConfiguration];
}
}

您可能还想监控 setTorchModeOnWithLevel: 的返回值(成功)。如果您尝试将级别设置得太高并且手电筒过热,则可能会失败。在这种情况下,将级别设置为 AVCaptureMaxAvailableTorchLevel 会将级别设置为给定手电筒温度所允许的最高级别。

关于ios - 在 iPhone 上打开手电筒/闪光灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190034/

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