15.3. Taking Videos with the Camera
Problem
You want to allow your user to shoot a video using his iOS device, and you would like to be able to use that video from inside your application.
Solution
Use UIImagePickerController
with the UIImagePickerControllerSourceTypeCamera
source
type and the kUTTypeMovie
media
type:
-
(
void
)
viewDidAppear:
(
BOOL
)
animated
{
[
super
viewDidAppear
:
animated
];
static
BOOL
beenHereBefore
=
NO
;
if
(
beenHereBefore
){
/* Only display the picker once as the viewDidAppear: method gets
called whenever the view of our view controller gets displayed */
return
;
}
else
{
beenHereBefore
=
YES
;
}
if
([
self
isCameraAvailable
]
&&
[
self
doesCameraSupportTakingPhotos
]){
UIImagePickerController
*
controller
=
[[
UIImagePickerController
alloc
]
init
];
controller
.
sourceType
=
UIImagePickerControllerSourceTypeCamera
;
controller
.
mediaTypes
=
@
[(
__bridge
NSString
*
)
kUTTypeMovie
];
controller
.
allowsEditing
=
YES
;
controller
.
delegate
=
self
;
[
self
presentViewController
:
controller
animated
:
YES
completion
:
nil
];
}
else
{
NSLog
(
@"Camera is not available."
);
}
}
Note
The isCameraAvailable
and
doesCameraSupportShootingVideos
methods used in this sample code are implemented and discussed in
Recipe 15.1.
We will implement the delegate methods of the image picker controller like so:
-
(
void
)
imagePickerController:
(
UIImagePickerController
*
)
picker
didFinishPickingMediaWithInfo:
(
NSDictionary
*
)
info
{
NSLog
(
@"Picker returned successfully."
);
NSLog
(
@"%@"
,
info
);
NSString
*
mediaType
=
info
[
UIImagePickerControllerMediaType ...
Get iOS 7 Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.