CMDeviceMotion 数据访问
CMDeviceMotion data access
我在访问 CMDeviceMotion 数据时遇到问题。我拥有所需的一切,但我的 startDeviceMotionUpdates 函数似乎被忽略了(我认为处理程序有问题)。这是我的代码:
let manager = CMMotionManager()
if manager.isDeviceMotionAvailable {
manager.startDeviceMotionUpdates()
manager.deviceMotionUpdateInterval = 0.1
manager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: {
(data, error) -> Void in
self.digit.text = String (describing: data!.gravity.z)
self.digit2.text = String (describing: data!.gravity.y)
self.digit3.text = String (describing: data!.gravity.z)
})
digit、digit2 和 digit3 是编辑文本字段,我要将重力数据写入其中。一切都在 iPhone 上进行了测试 6 - deviceMotion 可用且处于活动状态。我设法在没有 startMotionUpdates 函数的情况下访问数据,但我只得到了 NIL 值。知道有什么问题吗?谢谢!
好的,我明白了。要在 Swift 3.0 中 访问 Core Motion(在中使用 CMDeviceMotion class我的情况,但也可以是 CMGyroData 或 CMAccelerometerData):
let manager = CMMotionManager()
if manager.isDeviceMotionAvailable {
manager.deviceMotionUpdateInterval = 0.05 //The lower the interval is, the faster motion data is read
manager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: {
(motion: CMDeviceMotion?, Error) -> Void in
//Do whatever U want with data provided by CMDeviceMotion
}
})
}
else{
print("Core Motion access denied")
}
如果不再需要,请不要忘记停止从 Core Motion 检索数据,例如
ovveride func viewWillDisappear(_ animated: Bool) {
manager.stopDeviceMotionUpdates()
}
基本上,我的主要问题是处理程序的实现。希望对您有所帮助!
问题出在这一行:
manager.startDeviceMotionUpdates()
别了。稍后您将开始更新,当您说:
manager.startDeviceMotionUpdates(to: //...
让你感到困惑的是两者。
我在访问 CMDeviceMotion 数据时遇到问题。我拥有所需的一切,但我的 startDeviceMotionUpdates 函数似乎被忽略了(我认为处理程序有问题)。这是我的代码:
let manager = CMMotionManager()
if manager.isDeviceMotionAvailable {
manager.startDeviceMotionUpdates()
manager.deviceMotionUpdateInterval = 0.1
manager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: {
(data, error) -> Void in
self.digit.text = String (describing: data!.gravity.z)
self.digit2.text = String (describing: data!.gravity.y)
self.digit3.text = String (describing: data!.gravity.z)
})
digit、digit2 和 digit3 是编辑文本字段,我要将重力数据写入其中。一切都在 iPhone 上进行了测试 6 - deviceMotion 可用且处于活动状态。我设法在没有 startMotionUpdates 函数的情况下访问数据,但我只得到了 NIL 值。知道有什么问题吗?谢谢!
好的,我明白了。要在 Swift 3.0 中 访问 Core Motion(在中使用 CMDeviceMotion class我的情况,但也可以是 CMGyroData 或 CMAccelerometerData):
let manager = CMMotionManager()
if manager.isDeviceMotionAvailable {
manager.deviceMotionUpdateInterval = 0.05 //The lower the interval is, the faster motion data is read
manager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: {
(motion: CMDeviceMotion?, Error) -> Void in
//Do whatever U want with data provided by CMDeviceMotion
}
})
}
else{
print("Core Motion access denied")
}
如果不再需要,请不要忘记停止从 Core Motion 检索数据,例如
ovveride func viewWillDisappear(_ animated: Bool) {
manager.stopDeviceMotionUpdates()
}
基本上,我的主要问题是处理程序的实现。希望对您有所帮助!
问题出在这一行:
manager.startDeviceMotionUpdates()
别了。稍后您将开始更新,当您说:
manager.startDeviceMotionUpdates(to: //...
让你感到困惑的是两者。