Frage

Ich habe mit dem Android Accelerometer in dem letzten Zeit mit dem Android SDK und das Adobe AIR für Android SDK auf meinem Motorola Droid herum spielen. Was ich bemerkt habe ist, dass das Beschleunigungsmesser ganz gut funktioniert, aber ich frage mich, ob es möglich ist, in irgendeiner Weise zu kompensieren, so dass ich das Gerät nicht in einer horizontalen Position zu verwenden. Mit anderen Worten, ich möchte den Beschleunigungssensor verwenden, um meine visuelle Anzeige zu steuern, sondern initialisieren (oder in irgendeiner Weise zu ändern), so dass ich es vollkommen eben nicht halten müssen (nicht viel Spaß, das Telefon zu bücken haben).

Wer weiß, wie ich das Gerät bequem in der Hand halten kann, sagen 45 Grad, und verwende immer noch das Beschleunigungsmesser vorwärts / rückwärts Lesungen zur Verfügung stellen? Ist das möglich? Alle Beispiele hierfür diese verfügbar?

War es hilfreich?

Lösung

Sie müssen einige einfache Matrixmultiplikation Mathe dafür. „Kalibrieren“ die Drehung durch die aktuelle Matrix zu nehmen, wenn Sie die App und Invertzucker es zu starten, dann multiplizieren alle nachfolgenden Matrizen mit ihm -., Dass Sie das Delta in die Ausgangsposition geben

Andere Tipps

hatte ich eine Anwendung lange geschrieben vor langer Zeit, die mit relativen Drehungen behandelt. Ich habe vergessen, was der Code hat, aber von dem, was ich sehen kann, wie es scheint -

1) I erhalten, die anfängliche Rotationsmatrix unter Verwendung von - SensorManager.getRotationMatrix (R, I, gravity.clone (), geomagnetic.clone ()); (Schwerkraft und geomagnetischen sind die jeweiligen accleration und geomagnetischen Matrizen. Keine Ahnung, warum ich Klone verwenden, aber es muss einen Grund geben.) 2) Jetzt in jeder Phase, die aktuelle Rotationsmatrix und nennt es R. 3) Berechnen der Inversen der Anfangs-Matrix und nenne es „initialInverse“. 4) Multiplizieren R mit initialInverse (oder umgekehrt, müssen Sie es herauszufinden). 5) Holen Sie sich Ihre endgültige Ausrichtung mit SensorManager.getOrientation (Delta, Werte)

Es tut mir leid, aber ich habe ganz vergessen, was die oben genannten Code tut. Ich glaube, ich erinnere mich an die Worte Euler Lesen irgendwo Trans, wenn ich diese App geschrieben, so das ist, was sie tun könnte. Leider kann ich Ihnen den vollständigen Code nicht, da ich wahrscheinlich diese App auf dem Markt herausbringen. Wenn Sie weitere Informationen benötigen jedoch, lass es mich wissen. - Ich in den Code aussehen würde und zu Ihnen zurück

Ich arbeite in einem Projekt mit ähnlicher Art, wo die Beschleunigungs-Funktion wird nicht durch die Position beschränkt. Meine Art, es ist die Handhabung sehr einfach, initialisieren den Beschleunigungssensor mit dem aktuellen Messwerte als Standard. Mit anderen Worten, Sie haben eine Taste, die Sie drücken, sobald Sie das Telefon in der richtigen Position haben, auf die Taste drückt, werden die aktuellen Messwerte des Beschleunigungsmessers (Maßnahmen von G) Ihre Referenz (Nullwerte), und Änderungen vornehmen, wenn gehen Sie über oder unter diesen Lesungen ... Hope this jemand hilft ... cheers

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