2011-12-20 1 views
0

Я использую этот ниже код для включения факела в приложении iphone. Он отлично работает. Проблема в том, что когда мы нажимаем кнопку, режим факела будет изменен на «Вкл.», Но свет горит только тогда, когда пользователь входит в экран камеры. Я хочу включить факел без использования экрана камеры. Может ли кто-нибудь направить меня? Пожалуйста, предложите мне, где я ошибаюсь. Здесь мой код,Как включить факел без использования режима камеры/видео в 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]; 
    } 

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

ответ

2

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

- (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 и выше.

+0

Спасибо за ваш ответ. У меня есть одно разъяснение, пожалуйста, очистите меня. Если включить лампу горелки, она появится на месте или свет появится при выборе экрана камеры. У меня есть изменение типа AVCaptureDevice для текста. Это работа? Благодарю. – Gopinath

+0

Я думаю, что в вашем коде мне не нужно использовать Camera (UIImagePickerController). Это верно. Пожалуйста, помогите мне. Благодарю. – Gopinath

+0

Да, на iPhone4 это работает без отображения экрана камеры – Denis