首页 > 解决方案 > CMCalibratedMagneticField 字段始终为 0

问题描述

我试图获取轴 x、y 和 z 的 magnometerData。但它总是返回 0。准确度为 -1。

这意味着运动未校准。但是我该如何校准呢?

    func detect() {
       motionManager.startMagnetometerUpdates()
       motionManager.startDeviceMotionUpdates()

       var motion = CMDeviceMotion()
       //var mmd = CMMagnetometerData()
       motionManager.showsDeviceMovementDisplay = true
       if motionManager.deviceMotion != nil &&      motionManager.magnetometerData != nil{
           motion = motionManager.deviceMotion!
           //mmd = self.motionManager.magnetometerData!
           print("motion ", motion.magneticField.accuracy.rawValue)
           let _magfield = CMCalibratedMagneticField(field: motion.magneticField.field, accuracy: motion.magneticField.accuracy)
           print("_magfield ",_magfield.accuracy.rawValue)
           let magnetometerData = _magfield.field
           x.text = "X: " + String(format:"%f", magnetometerData.x)
           y.text = "Y: " + String(format:"%f", magnetometerData.y)
           z.text = "Z: " + String(format:"%f", magnetometerData.z)
           let _strenght = sqrt(pow(magnetometerData.x, 2) + pow(magnetometerData.y, 2) + pow(magnetometerData.z, 2))
           textarea.insertText("\n" +  String(format:"%.2f", _strenght))
    }

标签: swiftxcodemagnetometer

解决方案


推荐阅读