智能手机的传感器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kangli_1990/article/details/80674272

1、摄像头:https://blog.csdn.net/wyb2018/article/details/49426519

2、麦克风:https://www.jianshu.com/p/81adddd41dcb

3、GPS:  

     是否开启:https://blog.csdn.net/wang1018960145/article/details/47153861

     iOS GPS点的处理方法: https://www.jianshu.com/p/646caf195b29

     iOS自带的GPS定位:https://blog.csdn.net/wenhaiwang/article/details/52163709

4、电子罗盘:(方位传感器)是利用地磁场来定位北极的方法。它配合GPS和地图使用时,可以快速定位方向。

    https://blog.csdn.net/sifenkesi1/article/details/52621873

5、重力感应器:感知手机重心变化,来获取相关数据。当手机拿在手里是竖的,页面显示是竖的;当手机横过来,页面显示也变为横向。由苹果公司率先开发。

    http://www.osjoin.com/ios/60.html

6、加速度传感器:测量手机的加速度。

当手机在任何方向上运动时,加速度传感器就会有信号输出,手机静止不动时加速度传感器则没有信号输出。加速度传感器还能测量手机在三个方向上的角度。应用可利用加速度传感器的信号判断手机的状态是平放,还是有一定角度?显示屏向上还是向下。

    https://www.jianshu.com/p/37a65f683bb9

四. 加速计/陀螺仪/磁力计

  1. 加速计/陀螺仪/磁力计这三种感应器使用也很简单,直接通过CMMotionManager对象处理,获取数据的方法大同小异;
  1. CMMotionManager对象可以检测设备的可用性、获取数据、设置数据的更新频率,有需要的可以直接去头文件看看
  2. 通过计步器制作摇一摇、计步器:按我理解呢,如果考虑周全,摇一摇、记步也需要比较复杂的算法,自己做难免不全面;并且这些苹果已经有对应API,直接调用就好
  3. CMMotion的使用可以参考这篇文章详说CMDeviceMotion

由于这三种感应器获取数据方式一致,就只对加速计进行举例说明

  1. 成员变量及方法

     // 存储加速计数据
    @property(readonly, nullable) CMAccelerometerData *accelerometerData;
    
    // 开始更新加速计数据,不带回调,可以添加定时器定时去获取CMMotionManager对象的accelerometerData数据
    - (void)startAccelerometerUpdates;
    
    // 开始更新加速计数据,带回调,由于数据可能更新频率快,不建议使用主队列
    - (void)startAccelerometerUpdatesToQueue:(NSOperationQueue *)queue withHandler:(CMAccelerometerHandler)handler;
    
    // 不再需要更新数据的时候需要调用停止更新的方法
    - (void)stopAccelerometerUpdates;
    
  2. 使用步骤
    // 1. 初始化CMMotionManager对象并设置属性存储,设置数据的更新间隔
    - (CMMotionManager *)motionManage {
    if (!_motionManage) {
    _motionManage = [[CMMotionManager alloc] init];
    // 控制传感器的更新间隔
    _motionManage.accelerometerUpdateInterval = 0.2;
    _motionManage.gyroUpdateInterval = 0.2;
    _motionManage.magnetometerUpdateInterval = 0.2;
    }
    return _motionManage;
    }

    // 2. 开始/结束更新数据,只举例带回调的方法
    - (IBAction)accelerometerTest:(UIButton *)sender {
        BOOL start = !sender.selected;
    
        // 2.1 根据设置的时间间隔定期更新数据
        if (start) {
            // 可用性检测
            if(![self.motionManage isAccelerometerAvailable]){
                [self showWithTitle:@"加速计不可用" message:nil];
                return;
            }
            sender.selected = YES;
            __weak typeof (self) weakSelf = self;
    
            // 数据更新有可能比较频繁,不建议使用主队列
            NSOperationQueue *queue = [NSOperationQueue new];
            [self.motionManage startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
                // 回到主线程
                dispatch_async(dispatch_get_main_queue(), ^{
                    // 数据显示
                    weakSelf.accelerationXLbl.text = [NSString stringWithFormat:@"%.2f", accelerometerData.acceleration.x];
                    weakSelf.accelerationYLbl.text = [NSString stringWithFormat:@"%.2f", accelerometerData.acceleration.y];
                    weakSelf.accelerationZLbl.text = [NSString stringWithFormat:@"%.2f", accelerometerData.acceleration.z];
                });
            }];
        } else {
    
        // 2.2 停止获取数据
            sender.selected = NO;
            [self.motionManage stopAccelerometerUpdates];
        }
    }
    
  3. 自带摇一摇功能
    UIResponder类中已经封装好了摇一摇功能,当对象成为第一响应者之后,
    系统就会通知对象摇一摇的开始/结束状态,实现以下方法就可以

    - (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event;
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event;
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event;
    



作者:YaoYaoX
链接:https://www.jianshu.com/p/37a65f683bb9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

7、光线传感器:检测环境的亮度。

https://blog.csdn.net/ModalYin/article/details/78401549

8、距离传感器:由一个红外LED灯和红外辐射光线探测器构成。距离传感器位于手机的听筒附近,其工作原理是,红外LED灯发出的不可见红外光由附近的物体反射后,被红外辐射光线探测器探测到。

https://www.cnblogs.com/liuwj/p/6869983.html

9、气压传感器:测量气压。它的数据能用来判断手机所处位置的海拔高度,有助于提高GPS的精度。摩托罗拉XOOM和三星Galaxy Nexus是两款首批配置气压传感器的Android手机。

https://blog.csdn.net/u013263917/article/details/54980734

10、三轴陀螺仪:同时测定6个方向的位置、移动轨迹和加速度。三轴的体积小、重量轻、结构简单、可靠性好,这样手机可以获取到精度更高的角度信息。借助陀螺仪,手机可以判断在哪个方向上旋转了多少度。

https://www.jb51.net/article/130954.htm

https://www.jb51.net/article/94428.htm


************************************我**是**分**割**线*******************************************************

欢迎在留言区补充!


    

猜你喜欢

转载自blog.csdn.net/kangli_1990/article/details/80674272