相机闪光灯无法使用

时间:2013-05-15 05:31:33

标签: ios marmalade ios-camera camera-flash

我正在尝试为橘子酱做一个扩展,它可以打开和关闭iPhone中的相机闪光灯。关于使用相机闪光灯,我指的是this answer。我把确切的代码放在他提到的内容中,[device setTorchMode:AVCaptureTorchModeOn];也被调用了。但闪光灯没有响应,好像什么也没发生过。有什么我需要做的,让它作为静态库工作,以便我可以在我的扩展中使用它吗?

更新: -
我使用iOS-SDK 6.1编译扩展,并在iPhone 4(iOS版本4.3.1)上进行测试。但现在我正在测试iPhone 5(iOS版本6.0.0),现在闪光灯正在开启,但没有关闭。我想这可能会有所帮助。

3 个答案:

答案 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];
    }
}
}