Hi,
ich habe aktuell eine App entwickelt die schon einen guten Stand hat aber mir jetzt ein paar Logikfehler große Probleme bereiten.
Hintergrund ist, dass ich auf dem Motorrad mir mit dem Handy die aktuelle Schräglage anzeigen lassen will.
Folgenden Code habe ich hierfür:
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
CreateGPS(sensorEvent);
accels = sensorEvent.values;
}
if (sensorEvent.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mags = sensorEvent.values;
if (accels != null && mags != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, accels, mags);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
azimuth = orientation[0]; // orientation contains: azimuth, pitch and roll
pitch = orientation[1];
roll = orientation[2];
this.SetAngle(Math.toDegrees(-pitch));
}
Alles anzeigen
Klingt in der Theorie logisch und funktioniert auch. Jedoch habe ich folgende Probleme die ggf. zusammen hängen.
Wenn ich das Handy im Auto hinstelle und in eine Kurve fahre dann hab ich auch einmal 40 Grad Neigung in meinem Auto (G Kräfte müssen irgendwie aus der Logik raus gerechnet werden)
Auf dem Motorrad sind Vibrationen die dafür sorgen das ebenfalls falsche Werte angezeigt werden (Hängt denke ich ebenfalls mit den G-Kräften zusammen)
Wie kann ich am besten den Code bearbeiten um Sinnvolle Werte angezeigt zu bekommen? Hänge hier etwas auf dem Logik Schlauch.
this.SetAngle ist eine Methode die mir den Winkel grafisch anzeigt.
Danke für eure Hilfe.