我正试图为果酱做一个扩展,它可以打开和关闭iPhone中的相机闪光灯。我指的是这个关于使用相机闪光灯的答案。我已经写了他提到的代码[device setTorchMode:AVCaptureTorchModeOn];
也被调用了。但是闪电没有反应,好像什么都没发生过。有什么我需要做的,使它作为一个静态库工作,这样我就可以使用它在我的扩展?
更新:-
我使用iOS- sdk 6.1来编译扩展,并在iPhone 4 (iOS版本4.3.1)上进行测试。但现在我在iPhone 5 (iOS版本6.0.0)上进行测试,现在闪光灯打开了,但没有关闭。我想这可能有帮助。
您复制的代码可能有错误。试试以下命令:
-(void)turnOnFlash
{
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOff];
[device unlockForConfiguration];
}
}
我不知道为什么,但是下面的代码对我有效。
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];
}
}
我猜一定是一些打字错误。不管怎样谢谢你。
使用此功能打开和关闭闪光灯
#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];
}
}
}