方法一:android4.0/frameworks/base/services/java/com/android/server/wm/WindowManagerService.java
- int computeForcedAppOrientationLocked() {
- int req = getOrientationFromWindowsLocked();
- if (req == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
- req = getOrientationFromAppTokensLocked();
- }
- // req = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; //强制横屏0度
- // req = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //强制竖屏左转90度
- return req;
- }
方法二: (此种方法最好用)
android4.0/frameworks/base/services/surfaceflinger/SurfaceFlinger.cpp
- void GraphicPlane::setDisplayHardware(DisplayHardware *hw)
- {
- mHw = hw;
- // initialize the display orientation transform.
- // it's a constant that should come from the display driver.
- int displayOrientation = ISurfaceComposer::eOrientationDefault;
- char property[PROPERTY_VALUE_MAX];
- if (property_get("ro.sf.hwrotation", property, NULL) > 0) {
- //displayOrientation
- switch (atoi(property)) {
- case 0:
- displayOrientation = ISurfaceComposer::eOrientationDefault;
- break;
- case 90:
- displayOrientation = ISurfaceComposer::eOrientation90;
- break;
- case 180:
- displayOrientation = ISurfaceComposer::eOrientation180;
- break;
- case 270:
- displayOrientation = ISurfaceComposer::eOrientation270;
- break;
- }
- }
- /* 强制旋转90度 */
- displayOrientation = ISurfaceComposer::eOrientation90;
- const float w = hw->getWidth();
- const float h = hw->getHeight();
- GraphicPlane::orientationToTransfrom(displayOrientation, w, h,
- &mDisplayTransform);
- }
方法三:
修改device.mk中的ro.sf.hwrotation的值为90,或在init.rc中增加一行:setprop ro.sf.hwrotation 90