Reputation: 499
In my project, I need to take pictures automatically every one minute. But I can't find out any solutions.
This is the code which I implemented but it doesn't work...
I used a NSTimer to call up the camera to take pictures every 4 sec. And I only need the takepic
//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];
}
Upvotes: 3
Views: 4675
Reputation: 88
Maybe a little late but the piker function has a property takePicture
double delayInSecondse = 3.0;
dispatch_time_t epopTime = dispatch_time(DISPATCH_TIME_NOW, delayInSecondse * NSEC_PER_SEC);
dispatch_after(epopTime, dispatch_get_main_queue(), ^(void){
[picker takePicture];
});
Upvotes: 0
Reputation: 499
Finally I figured out the solution.
I use the
AVCaptureVideoDataOutputSampleBufferDelegate
to take pictures automatically.
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
It is pretty simple and thank you @sch all the same for your help :)
Upvotes: 1
Reputation: 27506
You can call the method - (void)takePicture;
of UIImagePickerController
to take a picture programmatically. You can call it every one minute using a timer for example.
Edit
You should display the camera interface first (more info here). You can do this in the method showCameraUI
. You should also keep a reference to the created 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];
// ...
}
Upvotes: 6