Android屏幕在旋转前翻转180度以正确方向

时间:2013-07-05 09:40:34

标签: android rotation screen

由于硬件问题,我们必须将我们开发的Android平板电脑上下颠倒180度。我们通过进行以下更改设法将屏幕翻转回正确方向:

“frameworks / base / services / surfaceflinger / SurfaceFlinger.cpp”

void GraphicPlane :: setDisplayHardware(DisplayHardware * hw) 。 。      displayOrientation = ISurfaceComposer :: eOrientation90;      打破;      +案例180:      + displayOrientation = ISurfaceComposer :: eOrientation180; // CDH      +休息;      案例270:      displayOrientation = ISurfaceComposer :: eOrientation270;      打破;

“system / core / rootdir / init.rc”

# Set this property so surfaceflinger is not started by system_init 
setprop system_init.startsurfaceflinger 0 
    +#cdh 
    + setprop ro.sf.hwrotation 180 

    class_start core 
    class_start main

一切看起来都不错,但不知何故,屏幕将翻转180度,然后在旋转过程中显示正确的方向。这款平板电脑在Android ICS上运行,带有陀螺仪和加速计传感器。

我尝试从“frameworks / base / core / jave / android / view / WindowOrientationListener.java”检查Window Orientation Listener日志,并确保旋转期间的方向正确。

我对传感器轴方向做了一些改动(在传感器驱动器上),但不知怎的,这没有帮助。有什么建议可以帮助解决这个问题吗?

感谢所有评论。

谢谢, MM

1 个答案:

答案 0 :(得分:1)

看一下“frameworks / base / services / surfaceflinger / LayerScreenshot.cpp”及其方法:“LayerScreenshot :: initTexture”。修改这些参数:

mTexCoords[0] = 0;         mTexCoords[1] = v;
mTexCoords[2] = 0;         mTexCoords[3] = 0;
mTexCoords[4] = u;         mTexCoords[5] = 0;
mTexCoords[6] = u;         mTexCoords[7] = v;

为:

mTexCoords[0] = u;         mTexCoords[1] = 0;
mTexCoords[2] = u;         mTexCoords[3] = v;
mTexCoords[4] = 0;         mTexCoords[5] = v;
mTexCoords[6] = 0;         mTexCoords[7] = 0;

或其他可以解决您情况的人。 希望能帮助你