Tzo*_*ker 5 objective-c magnetometer ipad ios swift
我正在开发具有罗盘功能的iOS应用程序.我试图使用CMMagnetometerData更新,提供未经校准但正常的结果.
在那之后,我试图得到CMDeviceMotion更新,结果总是给出零磁场的CMMagneticFieldCalibrationAccuracyUncalibrated准确性.我唯一的设备是iPad,因此无法测试其他设备.
可能是场为零,因为传感器未校准,但我找不到任何方法来执行校准.
如何解决?
更新:
这里建议使用startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:,但它并没有为我工作.
这里建议设置showsDeviceMovementDisplay到true.然而它也没有用,校准窗口就不会弹出.
最后,求助了.根据我的观察:
1)使用startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:与referenceFrame不等于allZeros或XArbitraryZVertical.
2)设置showsDeviceMovementDisplay为true.
经过精确的零值更新后,CMMagneticFieldCalibrationAccuracyUncalibrated它将正常化.
码:
...
motionManager.deviceMotionUpdateInterval = 0.05
motionManager.showsDeviceMovementDisplay = true
motionManager.startDeviceMotionUpdatesUsingReferenceFrame(CMAttitudeReferenceFrame.XArbitraryCorrectedZVertical, toQueue: NSOperationQueue.mainQueue(), withHandler:handleUpdate)
...
private func handleUpdate(data: CMDeviceMotion!, error: NSError!) {
if data != nil {
let field = data.magneticField.field
println("\(field.x), \(field.y), \(field.z)")
}
}
Run Code Online (Sandbox Code Playgroud)
Tzo*_*ker 10
最后,根据我自己的观察:
1)使用startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:与referenceFrame不等于allZeros或XArbitraryZVertical.
2)设置showsDeviceMovementDisplay为true.
经过精确的零值更新后,CMMagneticFieldCalibrationAccuracyUncalibrated它将正常化.
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |