2013-05-15 53 views
2

我正在尝试为橘子果酱打开和关闭iPhone中的相机闪光灯。我指的是SO上的this answer关于使用相机闪光灯。我已经提供了他提到的确切代码,并且[device setTorchMode:AVCaptureTorchModeOn];也被调用。但闪光灯没有响应,好像什么也没有发生。有什么我需要做的,使它作为静态库工作,以便我可以在我的扩展中使用它?相机闪光灯不能正常工作

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

+0

更新了问题 – noob

回答

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

我猜一定是一些错别字。不管怎么说,多谢拉。

3

您复制的代码可能有错误。请尝试以下操作:

-(void)turnOnFlash 
{ 
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
     if ([device hasTorch]) { 
      [device lockForConfiguration:nil]; 
      [device setTorchMode:AVCaptureTorchModeOff]; 
      [device unlockForConfiguration]; 
     } 
} 
+0

它看起来像我一样的代码。让我试试看看是否有效。谢谢 – noob

+0

没有,没有工作 – noob

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]; 
    } 
} 
} 
+0

现在,我也提到了完全相同的答案。你可以指出它可能有什么问题,而静态使用这个方法? – noob

+0

我不明白你使用这段代码时面临的实际问题是什么......你能告诉我吗? – Divyu

+0

这不起作用。尽管所有方法都运行完好,但没有闪烁闪烁。 – noob