iOS传感器

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

首先在扩展中  定义一个属性 @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(@"监听到摇一摇结束");

}

你可能感兴趣的:(iOS传感器)