2016-07-31 14 views
0

мне нужно к образцу 3 по оси магнитного поля, 3-оси ускорения и скорости вращения 3-оси, так что я использовать DeviceMotion, а вот мой код:Почему значения магнитного поля поля фиксированы в нуле?

if manager.deviceMotionAvailable { 
     if manager.magnetometerAvailable { 
     manager.magnetometerUpdateInterval=0.01 
     manager.deviceMotionUpdateInterval = 0.01 
      manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {(data: CMDeviceMotion?, error: NSError?) -> Void in 
     if(standard_time) { 
     let data = [ 
        "ax":data!.userAcceleration.x,"ay":data!.userAcceleration.y,"az":data!.userAcceleration.z,      
        "gax":data!.gravity.x,"gay":data!.gravity.y,"gaz":data!.gravity.z, 
        "gx":data!.rotationRate.x,"gy":data!.rotationRate.y,"gz":data!.rotationRate.z, 
        "mmx":data!.magneticField.field.x,"mmy":data!.magneticField.field.y,"mmz":data!.magneticField.field.z, 
        "roll":data!.attitude.roll, "pitch":data!.attitude.pitch, "yaw":data!.attitude.yaw] 
       } 
       )} 
    } 
} 

Однако значения 3- осевое магнитное поле, которое я получил, фиксировано в ноль, независимо от того, насколько сильно я пытаюсь переместить свой iphone. Не могли бы вы мне помочь ???

+0

мне нужно ускорение 3-оси и скорости вращения 3-оси, в то же время, так что не могу использовать startDeviceMotionUpdatesToQueue и startMagnetometerUpdatesToQueue, потому что его время выборки его different.In факт, хотя я установить один и тот же magnetometerUpdateInterval с deviceMotionUpdateInterval, если Я использую startDeviceMotionUpdatesToQueue и startMagnetometerUpdatesToQueue, не только время выборки разное, но и номер выборки –

ответ

1

Вы, кажется, вызываете неправильный метод для получения данных магнитометра.

if manager.deviceMotionAvailable { 
     if manager.magnetometerAvailable { 
      manager.magnetometerUpdateInterval = 0.01 
      manager.deviceMotionUpdateInterval = 0.01 
      manager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (data: CMMagnetometerData?, error: NSError?) in 
       // Do something with data 
       print(data) 
      }) 

     } 
    } 
+0

, но мне нужно 3-осевое ускорение и 3-осевое вращение одновременно, я попытался использовать startMagnetometerUpdatesToQueue и startDeviceMotionUpdatesToQueue, но он не может образец этих данных в то же время ... поэтому я не знаю, что делать ... –