2012/10/07

[iOS][Objective-C]AVFoundationを使ってカメラ画面を起動

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

コメントを投稿