检查 android 设备旋转是否可行

Check if android device rotation possible

我想知道 android 设备是否支持设备旋转。 我以为任何 Android 设备都支持屏幕旋转,但我的 Samsung Galaxy View 不支持任何旋转。

我只找到这段代码:

if (android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1){
    Toast.makeText(getApplicationContext(), "Auto Rotate is ON", Toast.LENGTH_SHORT).show();

} else {
    Toast.makeText(getApplicationContext(), "Auto Rotate is OFF", Toast.LENGTH_SHORT).show();
}

但这只能让我知道用户是否将屏幕旋转设置为关闭或打开,我想知道这是否完全可行。

请帮帮我, 祝福

狮子座

您可以检查 传感器 的可用性。这是官方的 docs

PackageManager manager = getPackageManager();
boolean hasAccelerometer = manager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);

加速度计的作用

The accelerometer is a built-in electronic component that measures tilt and motion. It is also capable of detecting rotation and motion gestures such as swinging or shaking.

The most common use for it is to activate auto screen rotation on mobile devices when the user changes their orientation from portrait to landscape or vice-versa.

也许可以尝试将应用程序屏幕简单地锁定在一个位置,这样如果可以旋转就可以跳过结帐步骤:)

在 Kishore Jethava 的回答的帮助下,它应该是这样的。

public static boolean isRotationPossible(Context context) {
    boolean hasAccelerometer = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);

    return (hasAccelerometer && android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1);
}

虽然每个设备都支持旋转功能,但您无法检查任何一个设备是否支持旋转。如果设备是纵向或横向,您只能检查传感器和旋转模式。