Пример Android-компаса не работает в ландшафтном режиме

Я разработал компас на основе этого примера: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Compass.html

Поскольку мое приложение работает только в ландшафтном режиме, компас тоже будет работать. Тем не менее, похоже, что этот код не работает правильно в ландшафтном режиме. Север указывает больше на восток. Если я запускаю пример кода Android, я получаю ту же проблему.

Кто-нибудь еще заметил это, и еще лучше, у кого-нибудь есть решение?

Кстати, я тестирую это на Nexus One. Не уверен, что это проблема, связанная с телефоном.

С наилучшими пожеланиями

п

1 ответ

Решение

Вы должны вычесть 90 градусов из поворота, потому что магнит находится на верхней части телефона.

int test = getResources().getConfiguration().orientation;
if(Configuration.ORIENTATION_LANDSCAPE == test) {
            rotation = -90f;
        }
        else {
            rotation = 0f;
        }
canvas.rotate((float) (-Math.toDegrees(mOrientation[0]) + rotation ));
Другие вопросы по тегам