Как включить свет факела без использования режима камеры / видео в iPhone? - PullRequest
0 голосов
/ 20 декабря 2011

Я использую этот код для включения фонарика в приложении iphone.Работает нормально.Проблема в том, что когда мы нажимаем кнопку, режим горелки меняется на «Вкл», но свет горелки появляется только при входе пользователя в экран камеры.Я хочу включить свет факела, не используя экран камеры.Может ли кто-нибудь, пожалуйста, вести меня?Пожалуйста, предложите мне, где я не прав.Вот мой код,

captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if (captureDevice.torchMode == AVCaptureTorchModeOff)  
    {
        AVCaptureSession *session = [[AVCaptureSession alloc] init];
        [session beginConfiguration];

        [captureDevice lockForConfiguration:nil];
        [captureDevice setTorchMode:AVCaptureTorchModeOn];
        [captureDevice unlockForConfiguration];

        [session commitConfiguration];
        [session startRunning];

        [self setTorchSession:session];
        [session release];
    }
    else 
    {
        [torchSession stopRunning];
        [captureDevice setTorchMode:AVCaptureTorchModeOff];
    }

Это правильный код для Torch Light в iPhone?Пожалуйста, помогите мне.Заранее спасибо.

1 Ответ

2 голосов
/ 20 декабря 2011

Этот код работает для меня

- (void) internal_setFlashOn: (BOOL) turnOn {
  AVCaptureDevice *theDevice = self.captureDevice;

  if ([theDevice hasTorch]) {
    [theDevice lockForConfiguration: nil];
    AVCaptureTorchMode currentMode = [theDevice torchMode];
    BOOL isAlreadyTurnedOn = (AVCaptureTorchModeOn == currentMode);
    if (isAlreadyTurnedOn != turnOn) {
      [theDevice setTorchMode: turnOn? AVCaptureTorchModeOn: AVCaptureTorchModeOff];
    }

    [theDevice unlockForConfiguration];
  }
}

- (AVCaptureDevice *) captureDevice {
  if (nil == internal_captureDevice) {
    internal_captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    [internal_captureDevice retain];
  }
  return internal_captureDevice;
}

Это работает на iPhone4 и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...