普通、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 コメント:
コメントを投稿