【问题标题】:Camera Flash is not working相机闪光灯不工作
【发布时间】:2013-05-15 05:31:33
【问题描述】:

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

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

【问题讨论】:

    标签: ios marmalade ios-camera camera-flash


    【解决方案1】:

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

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

    【讨论】:

    • 对我来说它看起来像相同的代码。让我试试这个看看是否有效。谢谢
    【解决方案2】:

    我不知道为什么,但下面的代码对我有用。

    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】:

      使用此功能可以打开和关闭闪光灯...

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

      【讨论】:

      • 现在这与我所指的答案完全相同。你能指出它在静态使用这种方法时可能会出现什么问题吗?
      • 我不明白您在使用此代码时遇到的实际问题是什么。您能告诉我吗?
      • 它不工作。尽管所有方法都运行良好,但没有闪烁。
      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      相关资源
      最近更新 更多