Frage

Ich sehe, dass ich abrufen kann Cmattitude Von einem Gerät und von ihm kann ich 3 Werte lesen, die ich brauche (Tonhöhe, Rollen und Gier). Wie ich weiß, wird dieses Cmattitude -Objekt durch Coremotion verwaltet, bei dem es sich um einen Sensor -Fusion -Manager handelt, um korrekte Ergebnisse aus Kompass-, Gyro- und Beschleunigungsmesser zusammen zu berechnen (auf Android It Is Sensormanager -Klasse).

Also meine Fragen sind:

  1. Sind diese Werte (Tonhöhe, Rollen und Gier) relativ zum magnetischen Norden und zur Schwerkraft?

  2. Wenn oben richtig ist, wie kann ich es ändern, um mir relativ zum geografischen Norden Ergebnisse zu erzielen?

  3. Wenn ein Gerät (z. B. iPhone 3GS) kein Gyroskop hat, muss ich es dem Manager sagen oder kann ich es einfach sagen, dass ich mir die Einstellung des Geräts basierend auf den Sensoren gibt, die es hat (((ACC + Gyro + Compas ODER ACC + Compas)

War es hilfreich?

Lösung

  1. und 2:

iOS 5.0 vereinfacht diese Aufgabe. CMMotion Manager hat eine neue Methode:


- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame

Als Referenzrahmen können Sie diese Werte verwenden:

  • Cmattitudereferenceframexmagneticnorthzvertical für Magnetic North,
  • CmattitudereferenceframexTruenorthzvertical für True North.

Wenn Sie dies mit älteren iOS tun möchten, müssen Sie dies mit dem aktuellen Benutzerstandort selbst kalibrieren.

Probieren Sie diese Ressourcen aus:

3. Wenn Geräte kein Kreisel enthält, ist die devicemotionAbleable -Eigenschaft von CMMotionManger "nein" (es entspricht einer gyroAvabilierbaren Eigenschaft) und Sie können mithilfe von Gerätebewegungen keine Einstellung erhalten. Das einzige, was Sie tun können, ist, Beschleunigungsmesser- und Magnetometerdaten direkt zu lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top