内置加速计是智能手机最酷的特性之一,ios可以通过这个小设备知道用户握持手机的方式,以及用户是否移动了手机,ios使用加速计处理自动旋转,并且许多游戏都是用它作为控制机制,它还可以用于检测摇动和其他突发的运动,此功能在iphone4之后得到进一步的拓展,还包括了一个内置的陀螺仪,可用于确定设备的方向与每条坐标轴之间的夹角。

第一  加速计

通过感知特定方向的惯性力总量,加速计可以测量出加速度和重力,ios设备内的加速计是一个三轴加速计,这意味着它能够检测出三维空间中的运动或重力引力。因此加速计不但可以指示握持电话的方式(如自动旋转功能),而且如果电话放在桌子上的话还可以指示电话的正面朝上还是朝下。

加速计可以测量g引力(g代表重力),因此加速计返回值为1.0时,表示在特定的方向上感知到1g。

1 .如果是静止握持iphone而没有任何运动,那么地球引力对其施加的力大约为1g

2. 如果是纵向竖直握持,那么设备会检测并报告在其y轴上施加的力大约为1g

3.如果是以一定的角度握持,那么1g的力会分布到不同的轴上,这取决于握持的方式,在以45度握持时,1g的力会均匀的分解到两个轴上。如果检测到加速计值远大于1g,那么可以判断是突然运动,,正常使用时加速计在任何一个轴上都不会检测到远大于1g的值,如果摇动、坠落或投掷设备,那么加速计便会在一个或多个轴上检测到很大的力

下图所示加速计所使用的三轴结构

第二  陀螺仪

陀螺仪可用于读取描述设备围绕其轴的旋转的值。

如果其传感器与加速计之间的区别看起来不那么明显,可以考虑平放在桌面上的iphone,如果在保持电话平放时旋转它,加速计的值不会改变,这是因为让电话移动的力(在这种情况下,只有重力直接施加在z轴上)没有改变

 

第三 CoreMotion 和动作管理器

在ios4和更高版本中,加速计和陀螺仪只可以使用CoreMotion框架访问,此框架提供了CMMotionmanager类(当然还有其他的类),该类用作描述用户如何移动设备所有值的途径

cmmotionmanager类实际上不是一个独立的实体,但应用程序应该将他视为独立的,应该仅为每个应用程序创建一个CMMotionmanager类,并且使用普通的alloc和init方法

ios 关于屏幕旋转和屏幕晃动的更多相关文章

  1. 【iOS】屏幕旋转,屏幕自适应方向变化

    1. iOS有四个方向的旋转,为了保证自己的代码能够支持旋转,我们必须首先处理一个函数: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInter ...

  2. Android 7.1 屏幕旋转流程分析

    Android 7.1   屏幕旋转流程分析 一.概述 Android屏幕的旋转在framework主要涉及到三个类,结构如图 PhoneWindowManager:为屏幕的横竖屏转换的管理类. Wi ...

  3. iOS实现屏幕旋转

    iOS实现屏幕旋转有两种方式 1. 应用本身支持 2. 手动旋转UIView (这种方式我没找到旋转 系统控件的方法 如:键盘.导航.UIAlertView) 如果你只是要把竖屏的播放器,做成支持横屏 ...

  4. ios实现屏幕旋转的方法

    1.屏蔽AppDelegate下面的屏幕旋转方法 #pragma mark - 屏幕旋转的 //- (UIInterfaceOrientationMask)application:(UIApplica ...

  5. 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b

    -(void)rotation_icon:(float)n { UIButton *history_btn= [self.view viewWithTag:<#(NSInteger)#>] ...

  6. OpenGL ES 响应屏幕旋转 iOS

    iOS下使用OpenGL 如果使用GLKit View 那么不用担心屏幕旋转的问题,说明如下: If you change the size, scale factor, or drawable pr ...

  7. iOS屏幕旋转 浅析

    一.两种orientation 了解屏幕旋转首先需要区分两种orientation 1.device orientation 设备的物理方向,由类型UIDeviceOrientation表示,当前设备 ...

  8. OpenGL ES: iOS 自定义 UIView 响应屏幕旋转

    iOS下使用OpenGL 如果使用GLKit View 那么不用担心屏幕旋转的问题,说明如下: If you change the size, scale factor, or drawable pr ...

  9. iOS学习笔记(3)— 屏幕旋转

    一.屏幕旋转机制: iOS通过加速计判断当前的设备方向和屏幕旋转.当加速计检测到方向变化的时候,屏幕旋转的流程如下: 1.设备旋转时,系统接收到旋转事件. 2.系统将旋转事件通过AppDelegate ...

随机推荐

  1. codevs 2010 求后序遍历

    时间限制: 1 s空间限制: 64000 KB题目描述 Description输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列.输入描述 Input Description共两行,第一行一个字符 ...

  2. JBoss和tomcat的区别

    JBoss和tomcat的区别 注意JBoss和tomcat是不一样,JBoss是一个可伸缩的服务器平台,当你的EJB程序编制完成后,如果访问量增加,只要通过增加服务器硬件就可以实现多台服务器同时运算 ...

  3. mysql导入source注意点

    mysql的导入导出要注意字符集,防止查询乱码! 导入前设置字符集 set names utf8; //导入指定编码source /xxx.sqlcommit;

  4. 图标资源: http://www.easyicon.net/ 可以按关键词搜索

      搜索图标    

  5. T-Sql常用语句

    1.用bcp导出txt数据 DECLARE ), ) BEGIN , ), '/', '-'); SET @bcp = 'bcp WebStat.dbo.[PV_HIS_' + @date + '] ...

  6. 十问Android NFC手机上的卡模拟(转)

    1,  问:能否在AndroidNFC手机上实现卡模拟? 答:在技术上可行,但是,对一般开发人员来讲,目前看来仅仅是技术上可行:( 2,  问:具体如何实现呢? 答:有两种方式:一种是基于硬件的,被称 ...

  7. Linux实例安装VNC Server实现图形化访问

    引自阿里云: https://help.aliyun.com/knowledge_detail/41530.html

  8. 【LeetCode】221. Maximal Square

    Maximal Square Given a 2D binary matrix filled with 0's and 1's, find the largest square containing ...

  9. C语言终极面试及答案分析

    第一部分:基本概念及其它问答题 .关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: ). 在函数体,一个被声明为静态的变量在这一函数 ...

  10. Windbg使用方法

    hgy413的专栏 http://blog.csdn.net/hgy413/article/category/1143065