¿Cómo obtengo el rumbo correcto (orientación magnética) independientemente de la orientación de la pantalla?
Quiero obtener la orientación magnética actual independientemente de la orientación de la pantalla actual (horizontal o vertical).
encontréesta Ejemplo, pero no es orientación independiente, ¿verdad? Yesta Tampoco me ayudó. Yo tambien leihttp://android-developers.blogspot.de/2010/09/one-screen-turn-deserves-another.html.
Este es mi enfoque actual con la forma obsoleta que no quiero usar (breve):
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
private SensorEventListener sensorEventListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
/* Get measured value */
float current_measured_bearing = (float) event.values[0];
/* Compensate device orientation */
switch (((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay().getRotation()) {
case Surface.ROTATION_90:
current_measured_bearing = current_measured_bearing + 90f;
break;
case Surface.ROTATION_180:
current_measured_bearing = current_measured_bearing - 180f;
break;
case Surface.ROTATION_270:
current_measured_bearing = current_measured_bearing - 90f;
break;
}
¡Pero la última parte es definitivamente incorrecta! ¿Cómo uso el método más nuevo?getRotationMatrix()
correctamente en este caso? (Orientación independiente) O simplemente tengo que usar otros valores de laevent.values[]
matriz basada en la matriz de rotación? ¿O tendré que 'reasignar las coordenadas'? Asi esese ¿La forma correcta de lograr esto?
Estoy desarrollando dispositivos con rotación de pantalla de 360 ° y en API Level 11+.
Sé que esas preguntas se hacen con mucha frecuencia, pero simplemente no puedo transferir sus respuestas a mi pregunta.