2013-05-15 4 views
2

Я пытаюсь сделать расширение для мармелада, которое включает и выключает вспышку камеры в iPhone. Я имею в виду this answer о SO об использовании вспышки камеры. Я поставил точный код, что он упомянул, и [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

 Смежные вопросы

  • Нет связанных вопросов^_^