一. UIIMagePickerController
1. 检测是否可用
+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;
//sourceType:UIImagePickerControllerSourceTypePhotoLibrary/Camera/SavedPhotosAlbum
2. 检测摄像头有那些类型(视频或拍照)
+ (NSArray*)availableMediaTypesForSourceType:(UIIMagePickerControllerSourceType)sourceType;
// kUTTypeImage; kUTTypeMovie;
3. 获得更多关于前后摄像头
a. isCameraDeviceAvailable:
指定的摄像头是否可用,cameraDevice是枚举类型:
UIImagePickerControllerCameraDeviceRear:前置摄像头
UIImagePickerControllerCameraDeviceFront:后置摄像头
b. isFlashAvailableForCameraDevice:
指定摄像头的闪光灯是否可用
c. availableCaptureModesForCameraDevice:
获得指定摄像头上的可用捕获模式,捕获模式是枚举类型:
UIImagePickerControllerCameraCaptureModePhoto:拍照模式
UIImagePickerControllerCameraCaptureModeVideo:视频录制模式
4. allowsEditing 是否允许编辑
5.
视频质量:videoQuality
视频时间:videoMaximumDuration
6.
iPhone时,一个页面可选择从图库里选择或拍摄;
iPad时,图库选择和拍摄时不同页面,拍摄时是全屏。
7. delegate
- (void)imagePickerController:(UIImagePickerCOntroller*)picker
didFinishPickingMediaWithInfo:(NSDictionary*)info {
[self dismissViewControllerAnimated:YES completion:...];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker {
}
dictionary 里存放:
UIImagePickerControllerMediaType(OriginalImage/EditedImage ...)
8. 保存照片到图库
ALAssetsLibrary
9. demo 摄像头拍照
二. Core Motion
1. CMMotionManager
a. 检测感应器的有效性(测量加速器,陀螺仪测量,磁力计,运动设备(运动设备可以认为是前面几个的集合))
@property(readonly) BOOL {accelerometer,gyro,magnetometer,deviceMotion}Available;
b. 开启感应器
- (void)start{Accelerometer,Gyro, Mannetometer,DeviceMotion}Updates; 或block方式
- (void)startAcceleromnterUpdatesToQueue:(NSOperationQueue*)queue
withHandler:(CMAccelerometerHandler)handler;
typedef void (^CMAccelerometerHandler)(CMaccelerometerData *data, NSError *error);
c. 是否开启了感应器,并收集数据
@property (readonly)BOOL {accelerometer, gyro, magnetometer, deviceMotion}Active;
d. 停止感应器
- (void)stop{Accelerometer,Gyro, Mannetometer,DeviceMotion}Updates;
e. 设置block 回调频率
@property NSTimeInterval {accelerometer, gyro, magnetometer, deviceMotion}UpdateInterval;
/// 10次/秒,设置该值为0.1;
f. 同时调用多个startAcceleromnterUpdatesToQueue时,多个block可以以相同频率被调用;
g. demo
三. Application State
1. 当app UI 开始、停止接收事件时,Application Delegate :
- (void)applicationDidBecomeActive:(UIApplication*)sender;
- (void)applicationWillResignActive:(UIApplication*)sender;
或者任何类都可以注册消息:
UIApplicationDidBecomeActiveNotification
UIApplicationWillResignActiveNotification
2. 进入后台后:
- (void)applicationDidEnterBackground:(UIApplication*)sender;
或
UIApplicationDidEnterBackgroundNotification3. 回到前台:
- (void)applicationWillEnterForeground:(UIApplication*)sender;
或
UIApplicationWillEnterForegroundNotification4. Local Notifications : 设置定时器在特定时间启动你的app;
5. State Restoration : 保存UI状态,在app再次起来后恢复UI,即使app被关掉;
6. Data Protection : 当用户的设备锁屏后,文件被保护起来;
7. Open URL :在Info中设置,当其他app调用这个URL时,会调起你的app并传进该URL;