iOS5的发布就有这个核心功能列为已弃用 https://developer.apple.com/library/prerelease/ios/#documentation/UIKit/Reference/UIAccelerometerDelegate_Protocol/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/occ/intfm/UIAccelerometerDelegate/accelerometer:didAccelerate:。有谁知道什么会取代它?我假设苹果不会从 iPhone 5 中移除加速计。
我还没有使用 iOS 5,但在 4.x 中 UIAccelerometer 和 UIAccelerometerDelegate 已经被 CoreMotion 框架取代。它更复杂,考虑陀螺仪信号并执行传感器融合,即为您校准诸如偏差计算之类的东西。
基本上 CMDeviceMotionHandler 块回调现在是等效的。它每隔 deviceMotionUpdateInterval 秒调用一次,或者您可以使用自己的计时器循环并提取数据。它非常简单且易于使用。看着简单的 iPhone 运动检测 https://stackoverflow.com/questions/5214197/simple-iphone-motion-detect/5220796#5220796并点击 SDK 文档的三个链接。
您必须牢记三件事:
- 使用 Device Motion 需要 iPhone 版本 >= 4 或最新一代 iPod touch,因为它依赖于陀螺仪支持
- 使用设备运动时,您不得使用低通滤波来提取重力,因为它是为您完成的
- 如果您想支持较旧的硬件,则必须使用原始数据。这是通过创建 CMAccelerometerHandler 并调用来完成的startAccelerometerUpdatesToQueue:withHandler: http://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html#//apple_ref/occ/instm/CMMotionManager/startAccelerometerUpdatesToQueue:withHandler:。然后你必须像 didAccelerate 一样通过低通滤波来提取重力
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)