我正在尝试为橘子酱做一个扩展,它可以打开和关闭iPhone中的相机闪光灯。关于使用相机闪光灯,我指的是this answer。我把确切的代码放在他提到的内容中,[device setTorchMode:AVCaptureTorchModeOn];
也被调用了。但闪光灯没有响应,好像什么也没发生过。有什么我需要做的,让它作为静态库工作,以便我可以在我的扩展中使用它吗?
更新: -
我使用iOS-SDK 6.1编译扩展,并在iPhone 4(iOS版本4.3.1)上进行测试。但现在我正在测试iPhone 5(iOS版本6.0.0),现在闪光灯正在开启,但没有关闭。我想这可能会有所帮助。
答案 0 :(得分:3)
您复制的代码可能有错误。请尝试以下方法:
-(void)turnOnFlash
{
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOff];
[device unlockForConfiguration];
}
}
答案 1 :(得分:3)
我不知道为什么,但下面的代码对我有用。
void TurnFlashOn_platform(bool turnOn) {
AVCaptureDevice* device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]){
[device lockForConfiguration:nil]; //you must lock before setting torch mode
[device setTorchMode:turnOn ? AVCaptureTorchModeOn : AVCaptureTorchModeOff];
[device unlockForConfiguration];
}
}
我想一定是个错字。不管怎样,谢谢。
答案 2 :(得分:2)
使用此功能打开和关闭闪光灯......
#import <AVFoundation/AVFoundation.h>
- (void) turnTorchOn: (bool) on {
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch] && [device hasFlash]){
[device lockForConfiguration:nil];
if (on) {
[device setTorchMode:AVCaptureTorchModeOn];
[device setFlashMode:AVCaptureFlashModeOn];
torchIsOn = YES;
} else {
[device setTorchMode:AVCaptureTorchModeOff];
[device setFlashMode:AVCaptureFlashModeOff];
torchIsOn = NO;
}
[device unlockForConfiguration];
}
}
}