Как определить, заблокировано ли устройство Android в книжной или альбомной ориентации - PullRequest
0 голосов
/ 24 апреля 2019

Если на устройстве Android опция автоповорота отключена - как я могу проверить, выбрал ли пользователь блокировку устройства в портретном или альбомном режиме?

Я не могу полагаться на фактическую ориентацию, в которой было устройство, когда пользователь изменил настройки - на некоторых устройствах (в основном на телефонах) есть только портретная блокировка, которая будет включена, даже если устройство находится в горизонтальной ориентации .

Я использую этот фрагмент кода, но он возвращается, только если автоповорот включен или выключен, но не фактическая ориентация блокировки.

Это для приложения, разработанного в Unity, поэтому будут приняты предложения как для Unity, так и для Android.

Спасибо!

private static bool DeviceAutoRotationIsOn()
{
    using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
    {
        var context = actClass.GetStatic<AndroidJavaObject>("currentActivity");
        var systemGlobal = new AndroidJavaClass("android.provider.Settings$System");
        var rotationOn = systemGlobal.CallStatic<int>("getInt",
            context.Call<AndroidJavaObject>("getContentResolver"), "accelerometer_rotation");

        return rotationOn == 1;
    }
}

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Чтобы получить текущую ориентацию:

Kotlin

val display = (baseContext.getSystemService(Context.WINDOW_SERVICE) as WindowManager).defaultDisplay
val rotation = display.rotation

Java

Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();

Результат может быть:

Surface.ROTATION_0 
Surface.ROTATION_90 
Surface.ROTATION_180
Surface.ROTATION_270

90 и270 для пейзажа

0 и 180 для портрета

0 голосов
/ 24 апреля 2019

Если вам нужно определенную ориентацию, например, только книжную или альбомную ориентацию для вашего приложения, вы можете установить ее в файле манифеста с помощью android: screenOrientation.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...