1 . iOS设备的传感器简介 (注释 所有的调试设备必须是真机)
1.1 环境传感器 Ambient Light sensor 作用 让眼睛更舒适,照相的时候自动开启闪光。
1.2 距离传感器 Proximity sensor 作用:用于检测是否含有其他的物体靠近设备。(例如当你打电话的时候设备靠近耳朵,手机的屏幕就会自动关闭,好处是节约电量,防止耳朵或面部触摸屏幕引起一些意外的操作)
代码如下:
开启:距离传感器
[UIDevice currentDevice].ProximityMonitoringEnabled = YES;
监听距离传感器的方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changes) name:UIDeviceProximityStateDidChangeNotification object:nil];
}
实现监听的方法
-(void)changes{
[UIDevice currentDevice].proximityState 是一个BOOL值。通过bool值来判断是靠近还是远离。
if ([UIDevice currentDevice].proximityState) {
NSLog(@"有物品靠近");
}else{
NSLog(@"有物品离开");
}
1.3.加速计传感器
(检测那个方向有力的作用,用处:摇一摇,计步器)。
1.3.1在iOS 5.0以前实现的方法非常简单
// 加速器 这是一个单例
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
设置代理(UIAccelerometerDelegate)
accelerometer.delegate = self;
accelerometer.updateInterval = 1.0;
// 实现代理方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
NSLog(@"x:%f,y:%f,z:%f",acceleration.x,acceleration.y,acceleration.z);
}
通过这个代理方法在这里就可以看到那个方向有受力。
1.3.2
iOS 5.0 以后加速器有全面升级了,并且引入了陀螺仪 与运动相关的编程越来越重要 apple 在ios4.0 中增加了专门处理Motion的框架 Coremotion.framework 。不仅能够提供实时的加速值 和旋转速速,而且apple 还集成了很多牛逼的算法。
Core Motion 获取数据的两种方式
push
创建运动管理者
导入头文件 #import <CoreMotion/CorMotion.h>
首先在扩展中 定义一个属性 @property (nonatomic, strong) CMMotionManager *manager;
self.manager = [[CMMotionManager alloc]init];
判断是否可用
if (!_manager.isAccelerometerAvailable) {
NSLog(@"加速计不可用");
return;
}
设置采样间隔
[_manager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
// 当采样到加速计信息就会执行
if (!error) {
// 获取加速剂信息
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"x:%f,y :%f, z:%f",acceleration.x,acceleration.y,acceleration.z);
}
}];
在这里面可以得到加速计的信息
post 方式
self.manager = [[CMMotionManager alloc]init];
判断是否可用
if (!_manager.isAccelerometerAvailable) {
NSLog(@"加速计不可用");
return;
}
// 开始采样
self.manager startAccelerometerUpdates];
// 获得加速计的信息
CMAcceleration accertino = self.manger.ccccelerometerData.acceleration;
1.4 陀螺仪
// 陀螺仪
if (![self.manager isGyroActive]) {
NSLog(@"你的手机不支持陀螺仪");
return;
}
// 设置时间间隔
self.manager.gyroUpdateInterval = 1.0;
// 开始采样
[self.manager startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData * _Nullable gyroData, NSError * _Nullable error) {
CMRotationRate rate = gyroData.rotationRate;
NSLog(@"%f,%f,%f",rate.x,rate.y,rate.z);
}];
其他的传感器 和以上的使用方法都是一样的。
传感器的使用 手机摇一摇功能 直接实现者三个方法就可以以可
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"监听到用户摇一摇,可以在这里面执行你想要的操作");
}
-(void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"监听到摇一摇被取消");
}
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"监听到摇一摇结束");
}
网友评论