iOSでよく見られるボタンを押して、リアカメラとフロントカメラを切り替える処理は、下のように書けばおk
/*-------------------------------------------------- AVCaptureSession *session; AVCaptureDeviceInput *frontFacingCameraDeviceInput; AVCaptureDeviceInput *backFacingCameraDeviceInput; ----------------------------------------------------*/ -(void)changeDevice{ [session beginConfiguration]; //初回設定 if([session.inputs count] == 0){ [session addInput:backFacingCameraDeviceInput]; //2回目以降 }else{ AVCaptureDeviceInput *deviceInput = (AVCaptureDeviceInput *)[session.inputs objectAtIndex:0]; AVCaptureDevice *device = deviceInput.device; AVCaptureDeviceInput *nextDeviceInput; if (device.position == AVCaptureDevicePositionBack) { nextDeviceInput = frontFacingCameraDeviceInput; }else{ nextDeviceInput = backFacingCameraDeviceInput; } [session removeInput:deviceInput]; [session addInput:nextDeviceInput]; } [session commitConfiguration]; } -(void)setCameraDeviceInput{ NSArray *devices = [AVCaptureDevice devices]; for (AVCaptureDevice *device in devices) { if ([device hasMediaType:AVMediaTypeVideo]) { NSError *error = nil; if (device.position == AVCaptureDevicePositionBack) { backFacingCameraDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; }else{ frontFacingCameraDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; } } } }setCameraDeviceInputメソッドでAVCaptureDeviceInputクラスのfrontFacingCameraDeviceInput変数とbackFacingCameraDeviceInput変数を初期化して、実際の、切り替えは、changeDeviceメソッドが担当しています。
こうしてまとめておけば、次回以降、コピペで済むので便利かなと。
0 コメント:
コメントを投稿