为什么在IOS5中加速计:didAccelerate:被弃用?

23

IOS5发布后,这个核心功能被列为不赞成使用的API。有人知道它将被什么替代吗?我猜想苹果不会从iPhone 5中删除加速度计。

1个回答

29

我还没有使用过iOS 5,但已经在4.x中将UIAccelerometer和UIAccelerometerDelegate替换为CoreMotion框架。它更加复杂,考虑了陀螺仪信号并执行传感器融合,即为您执行校准工作,例如偏差计算。

基本上,CMDeviceMotionHandler块回调现在是等效的。它每隔deviceMotionUpdateInterval秒调用一次或者您可以使用自己的定时器循环并拉取数据。它非常简单易用。查看Simple iPhone motion detect并按照三个链接进入SDK文档。

有三件事情需要记住:

  • 使用设备运动需要iPhone版本>= 4或最新的iPod touch生成,因为它依赖于陀螺仪支持。
  • 当使用设备运动时,您不能使用低通滤波来提取重力,因为这是为您完成的。
  • 如果要支持旧硬件,则必须使用原始数据。这是通过创建CMAccelerometerHandler并调用startAccelerometerUpdatesToQueue:withHandler:来完成的。然后,您必须使用低通滤波提取重力,就像在didAccelerate中一样。

那么,你知道什么替代了accelerometer:didAccelerate:吗?我的应用程序使用它,但我希望在iOS5发布时支持该应用程序。谢谢。 - jcpennypincher
1
@jcpennypincher:请查看更新的答案,并跟随所提供的参考答案中的3个链接(Simple iPhone...)。 - Kay
1
在Kay回答这个问题的时候,“最新的iPod touch”是iPod Touch 4。根据Apple的说法,以下是具有陀螺仪功能的基本型号:iPhone 4、iPad 2和iPod Touch 4。从我的研究来看,如果您使用的是iOS 7或更高版本,则肯定是具有陀螺仪功能的设备。iOS 6由iPhone 3GS支持,因此我认为任何iOS 6或以下的版本都需要测试陀螺仪功能。 - henryaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接