由于硬件问题,我们必须将我们开发的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
答案 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;
或其他可以解决您情况的人。 希望能帮助你