点击(此处)折叠或打开
-
方法一:
-
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);
- }