一、问题现象
安装了一堆apk在跑。用着用着偶尔触摸屏就没反应了。
二。通过分析找原因发现驱动是好的能正常上报数据。发现这些apk有些会横竖屏切换。会不会是切换的时候导致的了?查找代码发现
旋转屏幕的时候会冻结触摸输入,旋转成功后会解冻。猜测是这些旋转屏幕的apk把触摸冻结了后没有成功解冻导致的。直接修改代码
vi frameworks/base/services/java/com/android/server/wm/WindowManagerService.java 禁止掉自动旋转的功能。什么也不干直接返回
成功。修改如下:
boolean updateOrientationFromAppTokensLocked(boolean inTransaction) {
long ident = Binder.clearCallingIdentity();
try {
/* int req = getOrientationFromWindowsLocked();
if (req == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
req = getOrientationFromAppTokensLocked();
}
if (req != mForcedAppOrientation) {
mForcedAppOrientation = req;
//send a message to Policy indicating orientation change to take
//action like disabling/enabling sensors etc.,
mPolicy.setCurrentOrientationLw(req);
if (updateRotationUncheckedLocked(inTransaction)) {
// changed
return true;
}
}*/
return true;
//return false;
} finally {
这样就可以解决问题了。根据的原因没有找,因为我本来只需要横屏。
附上先关资料贴。
http://m.2cto.com/kf/201507/414034.html
http://blog.csdn.net/guoqifa29/article/details/40504189