MotionKit:对Core Motion的包装

 ,  , 

MotionKit

现在只要几行代码,不管是Objective-C还是Swift都可以轻松实现从加速计、磁力仪、陀螺仪和设备运动获取数据信息。

MotionKit是一款CoreMotion框架实用又简洁的的包装,并且全部使用Swift书写。Core Motion框架的作用是从设备硬件获取设备运动数据,并对获取到的数据进行了一层加工。数据来源可以是加速计,磁力仪和陀螺仪。另外你还可以从CMDeviceMotion获取提炼加工过的陀螺仪和加速计数据。

MotionKit相关文章:链接1链接2链接3

如何使用

闭包或者代理方法这两种获取数据的方式都支持。

注意:所有的方法都是异步的运行的,你的app可以保持平滑高校运行

安装

首先初始化MotionKit实例

Swift

Objective-C

获取加速计数据

仅需几行代码就可以获取加速计数据

Swift

Objective-C

获取陀螺仪数据

Swift

Objective-C

获取磁力仪数据

Swift

Objective-C

安装

要求iOS 8以上版本

使用CocoaPods安装

只需要在Podfile中添加

注意你要使用CococaPods 0.36 及以上版本(支持Swift)。

使用Carthage安装

你可以通过将下面这行添加进Cartfile来安装MotionKit

—手动安装

只需要将Motion.swift文件复制进你的Xcode工程项目中就可以了

CMDeviceMotion—小菜一碟

如果你需要获取加速计或者陀螺仪加工后的数据,你可以通过deviceMotion直接获取这些数据,或者调用单独的闭包或代理方法获取。

deviceMotion对象包括:

  • CMAccelerationData
    • userAcceleration
    • gravity
  • CMCalibratedMagneticField
    • magneticField
  • CMAttitude
    • attitude
  • CMRotationRate
    • rotationRate

所有的这些数据都可通过单独的方法或者deviceMotion获得

获取CMDeviceMotion对象

Swift

Objective-C

获取加工后的加速度数据

你可以通过CMDeviceMotion得到提炼加工后的userAccelaration数据或者通过闭合或代理方法取得

Swift

Objective-C

获取重力加速度

Swift

Objective-C

获取设备周围磁场数据

Swift

Objective-C

获取姿态角

Swift

Objective-C

获取设备的旋转速度

Swift

Objective-C

注意

性能考虑,整个app你应该只使用一个CMMotionManager实例,相应地在获取完所需数据后记得停止更新。在MotionKit中你可以用以下方法停止接收更新数据

代理

如果你想使用闭包,以上就是我们提供的相应的闭包。MotionKit 还支持以下代理方法来获取传感器数据

使用代理方法前别忘了在相应的ViewController中添加MotionKitDelegate

然后设置

上面都设置好后你就可以如下这样实现代理方法了

立即获取单项数据

如果你想立即获取单项传感器数据,你可以使用MotionKit中一些便利的方法

加速度

Swift

Objective-C

重力加速度

Swift

Objective-C

姿态角

Swift

Objective-C

磁力场

Swift

Objective-C

陀螺仪值

Swift

Objective-C

讨论

你可以加入我们的Reddit频道参与讨论。

  • 如果你需要任何其他功能你也可以在这里开启讨论
  • 别忘了订阅我们的Reddit频道
  • 我们的StackOverflow标签是’MotionKit’

要求

  • iOS 7.0以上版本
  • Xcode 6.1以上

接下来的工作

  • 添加更多方法
  • 添加后台功能

开源地址:https://github.com/MHaroonBaig/MotionKit

2 6 收藏

资源整理者简介:西西里的仔仔

简介还没来得及写 :) 个人主页 · 贡献了12个资源 · 13 ·   


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer