Detecting Hardware Differences
Because your application will likely support multiple devices, you’ll need to write code to check which features are supported and adjust your application’s behavior as appropriate.
Camera Availability
We cover the camera in detail in Chapter 2, however it is simple matter to determine whether a camera is present in the device:
BOOL available = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
Once you have determined that a camera is present you can enquire whether it supports video by making a call to determine the available media types the camera supports:
NSArray *media = [UIImagePickerController availableMediaTypesForSourceType:
UIImagePickerControllerSourceTypeCamera];If the kUTTypeMovie media type
is returned as part of the array, then the camera will support video
recording:
if ( [media containsObject:(NSString *)kUTTypeMovie ] ){
NSLog(@"Camera supports movie capture.");
}Audio Input Availability
An initial poll of whether audio input is available can be done
using the AVAudioSession class by
checking the inputIsAvailable class
property:
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; BOOL audioAvailable = audioSession.inputIsAvailable;
Note
You will need to add the
AVFoundation.Framework (right-click/Control-click
on the Frameworks folder in Xcode, then choose Add→Existing Frameworks). You’ll also need
to import the header (put this in your declaration if you plan to
implement the AVAudioSessionDelegate ...