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