iOS传感器

作者: cj小牛 | 来源:发表于2016-04-27 08:57 被阅读273次

    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(@"监听到摇一摇结束");

    }

    相关文章

      网友评论

        本文标题:iOS传感器

        本文链接:https://www.haomeiwen.com/subject/dunqrttx.html