Ich muss die Ausrichtung meines Telefons abrufen. Im Moment habe ich dies:Android - SensorManager seltsames Verhalten von getOrientation
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()){
case Sensor.TYPE_MAGNETIC_FIELD:
this.mag_vals = event.values.clone();
this.sensorReady = true;
break;
case Sensor.TYPE_ACCELEROMETER:
this.acc_vals = event.values.clone();
break;
}
if (this.mag_vals != null && this.acc_vals != null && this.sensorReady) {
this.sensorReady = false;
float[] R = new float[ProjectConstants.SIZE_MATRIX];
float[] I = new float[ProjectConstants.SIZE_MATRIX];
SensorManager.getRotationMatrix(R, I, this.acc_vals, this.mag_vals);
SensorManager.getOrientation(R, this.actual_orientation);
...
Dieser Code ermöglicht es mir, um die Ausrichtung des Telefons zu erhalten, wenn ich das Telefon auf eine ebene Fläche verlassen und ich drehen sie über die Oberfläche.
Was ich nicht verstanden habe ist, warum, wenn ich das Telefon nach oben den Wert von this.actual_orientation[0]
, die Rotation auf der Zed Achse wie beschrieben [hier] [1], der Wert erhöht, obwohl es keine Rotation gab.
Hat jemand wissen was passiert?
EDIT
Eine weitere seltsame Sache ..
ich bei der Arbeit meiner Anwendung im Büro versucht, und es hatte das seltsame Verhalten ich vorher beschrieben .. ich im selben Büro versuchte (gleiche Situation) eine Kompass-App, die ich vom Markt genommen habe und es hat das gleiche Verhalten von mir..wenn ich das Telefon nach oben bewegte, änderte sich der Wert konsequent. Ich versuchte im selben Büro (gleiche Situation) den I-Phone-Kompass und es hatte dieses merkwürdige Verhalten nicht!
Dann, wenn ich zu Hause angekommen habe ich versucht, beide, meine Anwendung und der Kompass-App von meinem Android-Handy, und sie arbeiteten !! selbst wenn ich den Wert stabil ...
Dank nach oben das Telefon bewegen, um eine Menge.
[1]: http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[], float [])