普通、iOSからカメラを起動するときは、UIImagePickerControllerを起動できるのですが、AVFoundationを使って同様の実装を使うことも可能です。
で、今回はカメラ画面を起動するまでのプログラムをサンプルコードSquareCamを参考にしながら書きたいと思います。
//UIViewControllerを継承したクラス
- (void)viewDidLoad
{
[super viewDidLoad];
NSError *error = nil;
session = [AVCaptureSession new];
[session setSessionPreset:AVCaptureSessionPreset640x480];
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (error) {
}
if(!deviceInput){
}
if ( [session canAddInput:deviceInput] ){
[session addInput:deviceInput];
}else{
}
stillImageOutput = [AVCaptureStillImageOutput new];
if ( [session canAddOutput:stillImageOutput] ){
[session addOutput:stillImageOutput];
}else{
}
previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[previewLayer setBackgroundColor:[[UIColor redColor] CGColor]];
previewLayer.videoGravity = AVLayerVideoGravityResizeAspect;
UIView *previewView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 427)];
CALayer *rootLayer = [previewView layer];
[rootLayer setMasksToBounds:YES];
[previewLayer setFrame:[rootLayer bounds]];
[rootLayer addSublayer:previewLayer];
[self.view addSubview:previewView];
[session startRunning];
}
これを実機のiPod touchで試したところ、確かにカメラ画面が起動しました。UIImagePickerControllerよりも細かいカスタマイズができそうなので、便利かなと。
0 コメント:
コメントを投稿