繁体   English   中英

如何检测Android设备是纵向还是横向锁定

[英]How to detect whether Android device is locked in portrait or landscape orientation

如果在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;
    }
}

如果您需要针对应用程序的特定方向(如肖像或横向),则可以使用android:screenOrientation在清单文件上进行设置。

要获得当前的方向:

科特林

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为肖像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM