Приложение для Android работает только в портретной ориентации. ландшафтный режим отключается сAndroid. Как определить ориентацию экрана, если приложение поддерживает только портретный режим?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT).
Но у меня есть диалог с видом подписи (настраиваемое представлением), и пользователь использует его для рисования своей подписи. В результате получается растровое изображение. У меня также есть ImageView для сохраненного предварительного просмотра подписи, который отображает битмап, описанный выше. Пользователь может держать свое устройство так, как он хочет, рисуя подпись. Итак, мое приложение должно вращать результирующее растровое изображение в соответствии с текущим положением экрана. Например, пользователь рисует свою подпись с углом = 90 градусов, и я хочу повернуть растровое изображение на 90 градусов, и мое приложение будет правильно отображать растровое изображение подписи в портретном режиме. Проблема заключается в том, что только портретный режим поддерживается и следующие подходы не работают:
int rotation = getResources().getConfiguration().orientation;
или
int rotation = getWindowManager().getDefaultDisplay().getOrientation();
В результате этих операторах всегда 0.
Итак, как я может получить текущую позицию устройства в случае, если изменение ориентации отключено?
Вы можете использовать аппаратные датчики, чтобы получить точную ориентацию телефона и определить, к какому пути он относится – dymmeh
Как я знаю, аппаратные датчики используют обратный вызов onChanged(), и я могу получить значение только тогда, когда этот обратный вызов произойдет. Кроме того, датчик даст мне исходные значения, и он обещает быть огромной рабочей нагрузкой для обработки их в более удобных значениях, таких как Surface.ROTATION_0, Surface.ROTATION_90, Surface.ROTATION_180, Surface.ROTATION_270. – tundundun