在我的应用中,我使用前camera
创建preview frame
,然后再打开camera
,我想知道Orientation
中设备的Landscape Mode
是clockwise
(右侧)或anticlockwise
(左侧)。
我得到Orientation
,
getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
但是让我知道如何检查它是顺时针还是逆时针?
答案 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
}
}