Jak uzyskać prawidłowe łożysko (orientacja magnetyczna) niezależnie od orientacji ekranu?

Chcę uzyskać bieżącą orientację magnetyczną niezależnie od bieżącej orientacji ekranu (poziomej lub pionowej).

znalazłemto przykład, ale nie jest niezależny od orientacji, prawda? Ito mi też nie pomógł. Czytałem teżhttp://android-developers.blogspot.de/2010/09/one-screen-turn-deserves-another.html.

To jest moje obecne podejście z przestarzałym sposobem, którego nie chcę używać (krótki):

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;
        }

Ale ostatnia część jest zdecydowanie błędna! Jak korzystać z nowszej metodygetRotationMatrix() poprawnie w tym przypadku? (Orientacja niezależna) Czy po prostu muszę użyć innych wartościevent.values[] tablica oparta na macierzy rotacji? A może będę musiał „zmienić współrzędne”? Więc jestże prawidłowy sposób osiągnięcia tego?

Zajmuję się urządzeniami z rotacją ekranu 360 ° i interfejsem API poziomu 11+.

Wiem, że te pytania są zadawane bardzo często, ale po prostu nie mogę przekazać ich odpowiedzi na moje pytanie.

questionAnswers(3)

yourAnswerToTheQuestion