如何查看横向模式下设备的方向是顺时针还是逆时针?

时间:2018-07-23 04:26:40

标签: android orientation

在我的应用中,我使用前camera创建preview frame,然后再打开camera,我想知道Orientation中设备的Landscape Modeclockwise(右侧)或anticlockwise(左侧)。

我得到Orientation

getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE

但是让我知道如何检查它是顺时针还是逆时针?

2 个答案:

答案 0 :(得分:1)

使用context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation()

您只需要注意不同类型的风景,设备通常使用的风景以及其他风景即可。要指定手机的旋转方式,

    private String clockOrAntiClockWiseRotation(Context context){

    final int rotation = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
    switch (rotation) {
        case Surface.ROTATION_0:
            return "portrait";
        case Surface.ROTATION_90:
            return "Clockwise";
        case Surface.ROTATION_180:
            return "reverse portrait";
        default:
            return "Anti Clockwise";
    }
}

答案 1 :(得分:1)

查看以下代码段: Activity.class

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
    if(getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_0){
        // clockwise
    }else if(getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_180){
        // anti-clockwise
    }
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
    //portrait
}

不仅要在开始时进行检查,还应该检查它是否在运行时也被更改了。

AndroidManifest.xml

<activity
    android:name=".MainActivity"
    android:configChanges="orientation"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar">

MainActivity.java

@Override
public void onConfigurationChanged(Configuration newConfig) {
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //landscape
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        //portrait
    }
}