Core Motion
使用CMMotionManager。首先检查你想用的硬件是否可用,接下来说明你要获取数据的频率,最后注册一个闭包,每次得到新值时执行。
在这里可调用的硬件传感器有:加速度传感器,陀螺仪,磁感应器。他们都通过CMMotionManager来访问。由于整个设备只有一个这些设备,所以这样的访问放在一个全局的地方比放在某一个Class里妥当,AppDelegate成为了最合适的地方。在使用前先引包。
import UIKit
import CoreMotion
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
struct Motion {
static let manager = CMMotionManager()
}
}
获取到了这个Manager以后,就可以在其他类里使用了:
let motionManager = AppDelegate.Motion.manager
if motionManager.accelerometerAvailable {//检查加速度传感器是否可用
//在新值传回来之后会在指定的队列执行下面的闭包
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue())
{ (data, error) ->