iOS7 Programming Cookbook 第十五章学习笔记

####Detecting and Probing the Camera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133

#import <MobileCoreServices/MobileCoreServices.h>
#import <AssetsLibrary/AssetsLibrary.h>

@implementation AppDelegate

- (BOOL) isCameraAvailable{

return [UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera];

}

- (BOOL)cameraSupportsMedia:(NSString *)paramMediaType
sourceType:(UIImagePickerControllerSourceType)paramSourceType{

__block BOOL result = NO;

if ([paramMediaType length] == 0){
NSLog(@"Media type is empty.");
return NO;
}

NSArray *availableMediaTypes =
[UIImagePickerController
availableMediaTypesForSourceType:paramSourceType];

[availableMediaTypes enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) {

NSString *mediaType = (NSString *)obj;
if ([mediaType isEqualToString:paramMediaType]){
result = YES;
*stop= YES;
}

}];

return result;

}

- (BOOL) doesCameraSupportShootingVideos{

return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeMovie
sourceType:UIImagePickerControllerSourceTypeCamera];

}

- (BOOL) doesCameraSupportTakingPhotos{

return [self cameraSupportsMedia:(__bridge NSString *)kUTTypeImage
sourceType:UIImagePickerControllerSourceTypeCamera];

}


- (BOOL) isFrontCameraAvailable{
//UIImagePickerController类管理可定制,系统提供的用户界面支持拍照和电影设备,和选择保存图片和电影在你的应用程序使用
//isCameraDeviceAvailable 相机设备可用
//UIImagePickerControllerCameraDeviceFront 指定设备的相机在前面。
return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];

}

- (BOOL) isRearCameraAvailable{

return [UIImagePickerController
isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];

}

- (BOOL) isFlashAvailableOnFrontCamera{

return [UIImagePickerController isFlashAvailableForCameraDevice:
UIImagePickerControllerCameraDeviceFront];

}

- (BOOL) isFlashAvailableOnRearCamera{

return [UIImagePickerController isFlashAvailableForCameraDevice:
UIImagePickerControllerCameraDeviceRear];

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

//前置摄像头
if ([self isFrontCameraAvailable]){
NSLog(@"The front camera is available.");
if ([self isFlashAvailableOnFrontCamera]){
NSLog(@"The front camera is equipped with a flash");
} else {
NSLog(@"The front camera is not equipped with a flash");
}
} else {
NSLog(@"前置摄像头不可用");
}

//后置摄像头
if ([self isRearCameraAvailable]){
NSLog(@"The rear camera is available.");
if ([self isFlashAvailableOnRearCamera]){
NSLog(@"The rear camera is equipped with a flash");
} else {
NSLog(@"The rear camera is not equipped with a flash");
}
} else {
NSLog(@"后置摄像头不可用");
}

if ([self doesCameraSupportTakingPhotos]){
NSLog(@"The camera supports taking photos.");
} else {
NSLog(@"相机不支持拍照");
}

if ([self doesCameraSupportShootingVideos]){
NSLog(@"The camera supports shooting videos.");
} else {
NSLog(@"相机不支持视频拍摄。");
}

self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

@end

Reference

坚持原创技术分享,您的支持将鼓励我继续创作!
0%