gpt4 book ai didi

ios - 如何使用swift获取磁力计数据?

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:20 25 4
gpt4 key购买 nike

我正在尝试使用 CoreMotion 从我的 iphone 6 获取磁场数据。

我使用以下代码访问原始数据没有问题:

if available {
motionMangager.magnetometerUpdateInterval = updateInterval
motionMangager.startMagnetometerUpdatesToQueue(queue, withHandler: {
(data, error: NSError!) -> Void in
println("x: \(data.magneticField.x), y: \(data.magneticField.y), z: \(data.magneticField.z)")
})
}

但是:我需要使用设备运动实例派生的数据。

所以我做了以下事情:

if motionMangager.deviceMotionAvailable {
motionMangager.magnetometerUpdateInterval = updateInterval
motionMangager.startDeviceMotionUpdatesUsingReferenceFrame(CMAttitudeReferenceFrameXArbitraryZVertical, toQueue: queue, withHandler: {
(deviceMotion: CMDeviceMotion!, error: NSError!) -> Void in
// If no device-motion data is available, the value of this property is nil.
if let motion = deviceMotion {
println(motion)
var accuracy = motion.magneticField.accuracy
var x = motion.magneticField.field.x
var y = motion.magneticField.field.y
var z = motion.magneticField.field.z
println("accuracy: \(accuracy.value), x: \(x), y: \(y), z: \(z)")
}
else {
println("Device motion is nil.")
}
})
}

问题是:

对于场坐标 x、y 和 z,我总是得到零。准确度也是-1。根据 Apple 文档,精度为 -1 表示“CMMagneticFieldCalibrationAccuracyUncalibrated”表示“设备没有磁力计”......但是没有!这是一部 iPhone 6...

那我做错了什么?我尝试了所有四个 CMAttitudeReferenceFrame。我需要帮助。有什么想法吗?

最佳答案

好的..我解决了。

零点的原因是磁力计未校准!但这并不意味着没有苹果文档中所述的磁力计。不管怎样,我从来没有预料到这一点。

我只需要添加指南针校准的功能。这很容易添加:

motionMangager.showsDeviceMovementDisplay = true

(参见:https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/)

所以现在就像:当我得到零和 -1 的准确性时,弹出要求校准的警报。移动后它消失了,我得到了正确的值。

关于ios - 如何使用swift获取磁力计数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28365121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com