加速计和陀螺仪

在程序中如果需要创建运动管理器的实例,应由一个实例向整个程序提供加速计和陀螺仪运动服务.因为设备中只有一个加速计和一个陀螺仪,使用单例更合乎逻辑.

创建运动管理器使用框架为:CoreMotion.framework

引入头文件#import <CoreMotion/CoreMotion.h>

//初始化运动管理器
    CMMotionManager *motionManager=[[CMMotionManager alloc]init];
    //判断设备是否支持加速计和陀螺仪

    if (motionManager.accelerometerAvailable&&motionManager.gyroAvailable) {
        //设置时间,让加速计每隔0.01秒就发送一次更新
    motionManager.accelerometerUpdateInterval=.01;
        //接受陀螺仪
        motionManager.gyroUpdateInterval=.01;
    //启动加速计更新,并制定每次加速计更新都执行程序块
    [motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        //代码块
    }];
        [motionManager startGyroUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMGyroData *gyroData, NSError *error) {
            //代码块
        }];
    }
    else
    {
        NSLog(@"设备不支持陀螺仪");
    }

如果要停止接受加速计和陀螺仪的更新
[motionManager stopAccelerometerUpdates];
[motionManager stopGyroUpdates];

时间: 2024-10-15 09:08:37

加速计和陀螺仪的相关文章

第六章:加速计与陀螺仪

iOS系统提供了加速计和陀螺仪支持,如果iOS设备提供了这些硬件支持,iOS即可通过CoreMotion框架提供的加速计来获取设备当前的加速度数据.陀螺仪数据.所处的磁场以及设备的方位等信息: 对于iOS应用开发者来说,开发传感器应用十分简单,CoreMotion框架的核心API是CMMotionManager,开发者只要创建一个CMMotionManager对象,接下来即可采用定时器周期性地从CMMotionManager对象获取加速度数据.陀螺仪数据等,也可采用基于代码块的方式来获取这些数据

ios开发——实用技术篇Swift篇&amp;加速计和陀螺仪

加速计和陀螺仪 1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 8 @IBOutlet var xLabel:UILabel! 9 @IBOutlet var yLabel:UILabel! 10 @IBOutlet var zLabel:UILabel! 11 12 @IBOutlet var orient

加速计与陀螺仪

设备静止时受到的地球引力为1g,1g是物体在地球的海平面上受到的下拉力(9.8米/秒2).假如设备从高处掉落,其加速计测量到的加速度将为0g.假如设备水平放在桌面上,则加速计测量出的加速度为1g,且方向朝上. 加速计测量3个轴(x.y和z)上的值,如图所示: 这个轴在方向上有些不同于传统坐标轴,考虑以下实际情况: 1g重力的分布情况是:y=-1.0 1g重力的分布情况是:x=1.0 1g重力的分布情况是:z=-1.0 1g重力的分布情况是:x=0.5,y=-0.5 1g重力的分布情况是:y=-0

iOS开发-CoreMotion框架(加速计和陀螺仪)

CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,不过由于UIAccelerometer比较简单,同样有人在使用.加速计由三个坐标轴决定,用户最常见的操作设备的动作移动,晃动手机(摇一摇),倾斜手机都可以被设备检测到,加速计可以检测到线性的变化,陀螺仪可以更好的检测到偏转的动作,可以根据用户的动作做出相应的动作,iOS模拟器无法模拟

CoreMotion框架--加速计和陀螺仪

iOS加速计是三轴加速计,可以监测三维空间中的运动和重力. 三轴坐标系统: *手机顶部向上时,正对手机屏幕,手机屏幕向左是X轴正方向. *沿手机屏幕向上是Y轴正方向. *垂直屏幕向外是Z轴正方向. 当手机静止不动时,地球引力将会给予手机1g加速度.

陀螺仪、加速计、磁力计等传感器汇总 (转)

转自 http://blog.csdn.net/a345017062/article/details/6459643 陀螺仪就是内部有一个陀螺,它的轴由于陀螺效应始终与初始方向平行,这样就可以通过与初始方向的偏差计算出实际方向.手机里陀螺仪实际上是一个结构非常精密的芯片,内部包含超微小的陀螺.加速计是用来检测手机受到的加速度的大小和方向的,而手机静置的时候是只受到重力加速度(这个高中学过)的.所以很多人把加速计功能又叫做重力感应功能.磁力计是测试磁场强度和方向的. 陀螺仪测量是参考标准是内部中间

iOS新加速计事件(陀螺仪和加速计)

iOS新加速计事件 [iOS新加速计事件] 1.iOS5.0以前,可以使用UIAcceleration来监听加速计事件. 2.Bug iOS5.0以后,UIAccelerometerDelegate已经被depreacated,如下: deprecated不是说不能说了,而是意味着在将来版本会删除,所以如果不想更新知识的话,就使用UIAccelerometer吧.更保险的方法是使用一个Timer来检查UIAcceleration,即不依赖于此Delegate回调. 3.针对iOS4.0以上版本,

swift目录

第二部分 实 战 第3章 UI基础 138 3.1 iOS开发平台限制和方式 138 3.2 iOS SDK介绍 141 第4章 UI开发与控件 182 4.1 窗口与视图 182 4.1.1 UIScreen.UIWindow和UIView 182 4.1.2 界面旋转和大小处理 188 4.2 图片资源的使用 191 4.3 UILabel 201 4.4 UITextField 206 4.5 UIButton 216 4.6 UITableView 221 4.6.1 UITableVi

STM32四旋翼飞行器

这个飞控是基于STM32,整合了MPU6050,即陀螺仪和重力加速计,但没有融合电子罗盘: 这是飞控程序的控制流程(一个执行周期): 比较重要的地方: 1.i2c通信方式: STM32的开发库是带有i2c通信的相关函数的,但是我最后还是没有用这些函数. 我通过GPIO模拟i2c,这样也能获得mpu6050的数据,虽然代码多了一些,但是比较好的理解i2c的原理. STM32库实现的模拟i2c代码(注释好像因为编码问题跪了): /***********************************