学习笔记-斯坦福iOS7-第十七课:摄像头、Core Motion、Application Stat

来源:互联网 发布:centos ffmpeg安装 编辑:程序博客网 时间:2024/06/06 09:49

一. 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; 

UIApplicationDidEnterBackgroundNotification


3. 回到前台:

- (void)applicationWillEnterForeground:(UIApplication*)sender; 

UIApplicationWillEnterForegroundNotification


4. Local Notifications : 设置定时器在特定时间启动你的app;
5. State Restoration : 保存UI状态,在app再次起来后恢复UI,即使app被关掉;
6. Data Protection : 当用户的设备锁屏后,文件被保护起来;

7. Open URL :在Info中设置,当其他app调用这个URL时,会调起你的app并传进该URL;


0 0