Как автоматически сделать снимок, не нажимая кнопку фотосъемки на контроллере imagepicker? - PullRequest
3 голосов
/ 20 февраля 2012

В моем проекте мне нужно делать снимки автоматически каждую минуту.Но я не могу найти какие-либо решения.

Это код, который я реализовал, но он не работает ...

Я использовал NSTimer для вызова камеры, чтобы делать снимкикаждые 4 сек.И мне нужен только восприятие

//This method is all for the time setup. You can ignore it.

-(NSDate *)userInfo {

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm:ss"];

NSDate *date = [[[NSDate alloc]init]autorelease];

NSString *formattedDateString = [dateFormatter stringFromDate:date];

NSLog(@"formattedDateString: %@", formattedDateString);   

return date;    
}


- (void)targetMethod:(NSTimer *)theTimer {
   NSDate *startDate = [self userInfo];

   //newly changed lines.
   UIImagePickerController *myPicker;
   [myPicker takePicture];
   NSLog(@"Timer started on %@", startDate);

}


- (IBAction) showCameraUI {


   [NSTimer scheduledTimerWithTimeInterval:4.0
                                 target:self
                               selector: @selector(targetMethod:)
                               userInfo:[self userInfo]
                                repeats:YES];

}

Ответы [ 2 ]

5 голосов
/ 20 февраля 2012

Вы можете вызвать метод - (void)takePicture; из UIImagePickerController, чтобы сделать снимок программно.Например, вы можете вызывать его каждую минуту, используя таймер.

Редактировать

Сначала вы должны отобразить интерфейс камеры (подробнее здесь ),Вы можете сделать это в методе showCameraUI.Также следует сохранить ссылку на созданный UIImagePickerController.

- (IBAction) showCameraUI
{
    UIImagePickerController *picker;
    // create and display picker

   self.imagePicker = imagePicker;
   [NSTimer scheduledTimerWithTimeInterval:4.0
                             target:self
                           selector: @selector(targetMethod)
                           userInfo:nil
                            repeats:YES];
}

- (void)targetMethod
{
    [self.picker takePicture];
    // ...
}
1 голос
/ 06 марта 2012

Наконец-то я разобрался с решением.

Я использую

 AVCaptureVideoDataOutputSampleBufferDelegate

, чтобы делать фотографии автоматически.

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer   
   fromConnection:(AVCaptureConnection *)connection 

Это довольно просто, и спасибо @щ все равно за вашу помощь:)

...