Necesito recuperar la orientación de mi teléfono. En el momento de escribir este:Android - SensorManager comportamiento extraño de 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);
...
Este código permite que consiga la orientación del teléfono si dejo el teléfono en una superficie plana y girarlo sobre la superficie.
Lo que no entendí es por qué si muevo el teléfono hacia arriba el valor de this.actual_orientation[0]
, que es la rotación en el eje zed como se describe [aquí] [1], el valor aumenta aunque no haya rotación.
¿Alguien supo qué sucede?
EDITAR
Otra cosa extraña ..
Probé mi solicitud en la oficina en el trabajo y tenía el comportamiento extraño he descrito antes .. Probé en la misma oficina (misma situación) una aplicación de brújula que tomé del mercado y tiene el mismo comportamiento mío ... cuando moví el teléfono hacia arriba el valor cambió consistentemente ... Probé en la misma oficina (misma situación) la brújula i-phone y no tenía ese comportamiento extraño!
Luego, cuando llegué a casa me trataron tanto, mi solicitud y la aplicación de la brújula de mi teléfono Android, y trabajaron !! incluso si me muevo hacia arriba el teléfono el valor son estables ...
Gracias a mucho.
[1]: http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[], flotador [])