Accelerometer实际是有三个accelerometer组成的,分别代表x y z三个坐标,根据计算这三个坐标的运动探测出设备的移动和方向。
访问设备数据的三种不同方式:
如果只是想探测设备的方向,不必知道方向矢量,使用UIDevices就够了。
如果想设备在设备晃动的时候响应,通过UIKit的motion-event处理方法
如果上述两个都不能满足需求,使用Core Motion Framework访问accelerometer、gyroscope和 device motion classes
Motion Event使用responder chain来处理事件。当用户开始晃动设备的时候,iOS发送第一个motion event给第一个responder来处理。如果第一个放弃处理,则转交给下一个。
处理Motion Event事件可以重载方法 motionBegan:withEvent: ,  motionEnded:withEvent: , and  motionCancelled:withEvent:  了
需要在Info.plist文件里添加相应访问权限,包括:accelerometer, gyroscope
Core Motion Framework通常用来获取accelerometer和gyroscope数据并传给app层进行处理。
Core Motion不会跟UIEvent链接也不会使用responder chain,而是直接和需要的app交互。
CMAccelerometerData  捕获加速感应器的每一个空间轴
CMGyroData  捕获围绕三个空间轴的旋转度
CMDeviceMotion  封装各个测量值,包括坐标、旋转和加速度等
CMMotionManager 是Core Motion的重要一个类,用来管理Motion Event各流程;有两个方式来处理motion data:
Pull app申请获得更新的数据 
Push app指定更新的间隔、实现   block 来处理数据;
Handling Accelerometer Events:
Pull:   startAccelerometerUpdates
Push:  startAccelerometerUpdatesToQueue:withHandler:  
Handling Rotation Rate Data:处理该类事件首先创建一个CMMotionManager然后:
Pull: startGyroUpdates  持续更新CMMotionManger的   gyroData  属性
Push:  startGyroUpdatesToQueue:withHandler:
Handling Processed Device Motion Data
Pull: startDeviceMotionUpdates  持续更新CMMotionManger的   deviceMotion  属性
Push:  startDeviceMotionUpdatesToQueue:withHandler:
Remote Control Events: 允许用户控制app的多媒体,包括音视频内容
为了接受remote control events,app需要做到:
Be the first responder: view或view controller可能需要重载   canBecomeFirstResponder 并发送自己 becomeFirstResponder  
Turn on the delivery of remote control events 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

// Turn off remote control event delivery
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
 
    // Resign as first responder
    [self resignFirstResponder];

Begin playing audio
  remoteControlReceivedWithEvent: 来处理Remote control events

iOS: Motion Event相关推荐

  1. iOS事件拦截(实现触摸任意位置隐藏指定view)

    项目里有一个需求,类似新浪或者腾讯微博的顶部title栏的类别选择器的消失(在选择器展开的时候,触摸屏幕任何地方使其消失). 最开始的想法是当这个选择器(selectorView)展开的时候,在当前屏 ...

  2. 深度解析~iOS应用程序~生命周期

    摘要:iOS应用程序一般都是由自己编写的代码和系统框架组成,系统框架提供一些基本infrastructure给App来运行,而开发者则自己编写代码定制App的外观和行为,了解iOS Infrastru ...

  3. 2021年大厂iOS 面试题 - 前篇

    Swift好多坑,一个人填不来,怎么办 问身边同事吧,又怕被暗笑技术差劲 1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上. ...

  4. [转]那些著名或非著名的iOS面试题(上)

    1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和 ...

  5. iOS开发入门——基础篇一

    文章目录 1. iOS应用生命周期 1.1 应用程序的架构 1.2 iOS应用的5种状态: 1.2.1做一些操作对应的生命周期调用的顺序 1.2.2全面的生命周期执行流程图 1.3 Main函数入口 ...

  6. iOS app崩溃率,如何解决线上闪退

    //联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.cra ...

  7. iOS 如何追踪app

    1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和 ...

  8. 那些著名或非著名的iOS面试题-前编

    原文链接: http://www.jianshu.com/p/8f16613861fa 1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志, ...

  9. ios中级面试题(二)

    1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和 ...

最新文章

  1. 第二阶段个人总结06
  2. 给table里面的添加图标_刺激!微信“变色”了!换个带quot;色quot;的图标吧
  3. 大屏设计的视觉统一_视觉设计中的统一
  4. GDAL源码剖析(四)之命令行程序说明二
  5. 非常详细的机器学习知识点汇总(一)
  6. 【转】PCDATA和CDATA的区别究竟是什么呢?
  7. 在VS中安装nuget离线包nupkg文件
  8. mongodb数据的导入导出备份恢复
  9. 学习Java还是学习大数据,哪个好?
  10. 系统内核溢出漏洞提权之Windows Exploit Suggester
  11. [eNSP]→ospf基本配置、区域划分
  12. 【AVL】宠物收养所
  13. WordPress手动开启WP错误调试
  14. CentOS7 通过 cups 与 Windows 共享 HP 1020 打印机
  15. 编程的同时还能盯股票基金?VSCode这款神器插件绝了!
  16. 学术会议墙报_第十三届全国振动理论及应用学术会议顺利召开
  17. 作用域-函数包围代码
  18. 【自动化】DCS PLC区别;PLC常见的六大应用
  19. JS基础_Unicode编码表
  20. 一键获取电脑的系统安装时间、硬盘序列号、MAC地址、补丁安装信息

热门文章

  1. 泰森多边形(Voronoi彩图)的matlab绘制——2
  2. mysql---分表分库
  3. spark读取文件夹数据
  4. 【JDK编译】Centos7编译OpenJDK7
  5. 几种典型的立体匹配算法
  6. 如果用一个循环数组q[0..m-1]表示队列时,该队列只有一个队列头指针front,不设队列尾指针rear,求这个队列中从队列投到队列尾的元素个数(包含队列头、队列尾)。
  7. 怎么将sql文件加载到数据库
  8. Java语法理论和面经杂疑篇《七. 数据结构与集合源码》
  9. 【论文阅读】【综述】3D Object Detection 3D目标检测综述
  10. 利用opencv带你玩转人脸识别-下篇(人脸录入,数据训练,人脸识别小案例快速入门)