В моем приложении используется камера. Чтобы отобразить предварительный просмотр камеры, как правильно, я должен учитывать ориентацию активности относительно ориентации физического устройства. I. e. если ориентация активности заблокирована и никогда не изменяется, мне не нужно предпринимать никаких дальнейших шагов - по мере поворота устройства изображение предварительного просмотра будет вращаться соответственно. Однако представьте, что моей деятельности разрешено изменять ориентацию. Вы поворачиваете устройство - и просматриваете - пока не достигнете портретного режима (при условии, что это был пейзаж первоначально), после чего активность поворачивается для адаптации к новой ориентации. Но изображение предварительного просмотра вращается вместе с ним, и теперь оно не синхронизируется с камерой и окружающей реальностью. То, что я должен сделать, это определить ориентацию активности и соответственно повернуть изображение.Как получить истинное вращение активности относительно тела устройства
Кажется, что для этого можно использовать Display.getRotation()
. Но, видимо, это не может: https://groups.google.com/forum/#!topic/android-developers/ij_0QbApKKc
Проблема в том, что точка происхождения не установлена Android API. Некоторые планшеты возвращают вращение 0 в нормальной ориентации (пейзажные кнопки, кнопки увеличения вверх) и некоторые другие (например, мой Nexus 7 2013). Возврат 1.
Как решить эту проблему?
Может также обновить вопросы название и содержание, что неясно, что вы хотите. Вращение или ориентация. – Simas
Трудно понять, о чем вы спрашиваете. Но похоже, что вам просто нужно знать, работаете ли вы в портретном или ландшафтном режиме. Это легко сделать, сравнивая ширину/высоту экрана. Если высота> ширина, то она находится в портретном режиме, иначе она находится в ландшафтном режиме. –
@GregMiller: Извините, я не понимал, что мой английский так плохо. Не знаю, как еще сформулировать вопрос. Нет, вы ошибаетесь, это не то, что я имею в виду. Это не мой первый год разработки Android, и мне, конечно, не нужно было задавать новый вопрос для чего-то такого простого, не говоря уже о том, чтобы выделить щедрость. Короче: мне нужно именно то, что делает 'Display.getRotation()'. Не больше, не меньше. Проблема в том, что 'Display.getRotation()' не работает, и точный способ, которым это не работает, описано в вопросе. –