Ich habe schon viel zu lange Probleme damit. Dieser Code sollte dx, dy, dz für den Beschleunigungssensor und eine laufende Summe des dx ausgeben. Es sollte auch Azimut, Tonhöhe und Roll ausgeben.
Ich habe die verwendet Informationen hier gegeben , aber ohne Erfolg.
Dieser Code gibt Tonhöhe, Azimut oder Roll nicht korrekt aus. Es gibt 0,0, -0,0, -0,0 für die letzten drei Textansichten aus.
%Vor%Ich könnte etwas vermissen (und Sie haben das vielleicht bereits gelöst), aber für mich sieht es so aus, als wäre Ihre switch-Anweisung falsch:
%Vor% Wenn Ihr Sensorereignis TYPE_ACCELEROMETER
ist, werden die Werte aus dem Ereignis in accelerometerValues
und geomagneticMatrix
geklont und sensorReady
wird auf true gesetzt. Ich denke, dass Sie möglicherweise die Reihenfolge dieses Blocks ändern müssen, oder möglicherweise fügen Sie break;
nach Ihrem ersten Fall hinzu.
Der Grund dafür, dass Sie 0.0, -0.0, -0.0 von getOrientation () erhalten, ist, dass getRotationMatrix () nicht immer ein gültiges Ergebnis liefert. Sie müssen den Rückgabewert von getRotationMatrix () überprüfen, der falsch ist, wenn das Ergebnis ungültig ist, oder true, wenn er erfolgreich war.
Hinzugefügt: Eigentlich ist das nicht richtig herausgekommen. Sie erhalten ein ungültiges Ergebnis aus dem Grund, auf den Agander hingewiesen haben. Die Überprüfung des Rückgabewerts wäre lediglich ein Hinweis darauf, dass Sie tatsächlich ein ungültiges Ergebnis erhalten haben.