Пример 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 ));