} else {
ro = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
}
}
catch (RemoteException e) {
Log.v(TAG, "!!! getRotation fail !!!");
}
try {
//旋转屏幕
mWindowManager.setRotation(ro, true, Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE);
//最后可跟不同的参数,可实现一些旋转效果
}
catch (RemoteException e) {
Log.v(TAG, "!!! mWindowManager.setRotation fail !!!");
}
return true;
}
if(!down) {
MenuKeyUp = true;
}
}
2 修改实现选择的函数
/frameworks/base/services/java/com/android/server/WindowManagerService.java
找到该函数
public boolean setRotationUncheckedLocked(int rotation, int animFlags)
将以下妨碍选择的内容注释掉
//rotation = mPolicy.rotationForOrientationLw(mForcedAppOrientation,
// mRotation, mDisplayEnabled);
3、当然也可以新作一个rotate键来选择屏幕,以下是引用代码
+ } else if (code == KeyEvent.KEYCODE_ROTATE) {
+ // ROTATE KEY pressed
+ if (down) {
+ mButtonPushFlg = true;
+
+ try {
+ int ro = mWindowManager.getRotation(); // Orientation vertical
+ if (ro == 3 ) {
+ mWindowManager.setRotation (Surface.ROTATION_0,true,mFancyRotationAnimation); //Orientation
landscape
+ } else {
+ mWindowManager.setRotation
(Surface.ROTATION_270,true,mFancyRotationAnimation); //Orientation
portlate
+ }
+ } catch (RemoteException e) {
+ // Igbore
+ Log.i("info", "Rotation failed ");
+ }
+ }
+ return true;
}
OK,重新编译后,长按Menu键即可实现屏幕旋转。