插拔USB键盘和无线USB鼠标屏幕会黑一下,偶尔会死机,U盘插拔没有这个现象,
黑屏一般是由于config 改变导致横竖屏切换形成的
frameworks/base/services/core/java/com/android/server/input/InputManagerService.java
+++ b/device/common_jmgo/overlay/frameworks/base/services/core/java/com/android/server/input/InputManagerService.java
@@ -1382,7 +1382,8 @@ public class InputManagerService extends IInputManager.Stub
// Native callback.
private void notifyConfigurationChanged(long whenNanos) {
- mWindowManagerCallbacks.notifyConfigurationChanged();
+ //solve screen off when input device connect
+ //mWindowManagerCallbacks.notifyConfigurationChanged();
}
01-01 22:55:21.204 1773 2217 I ActivityManager: Config changes=30 {1.0 ?mcc?mnc zh_CN ldltr sw540dp w960dp h540dp 320dpi lrg long land television -touch qwerty/v/v dpad/v s.6}
01-01 22:55:21.238 2811 2811 I TvService: onConfigurationChanged()
01-01 22:55:21.252 1232 1232 D SurfaceFlinger: [capture screen]:maxLayerZ = -1
01-01 22:55:21.252 1232 1232 D hwcomposer: [capture screen]:startCapture ctx->captureScreenAddr = 7f9f8ca000,capture width = 1920,height = 1080
01-01 22:55:21.252 1232 1232 D hwcomposer: [capture screen]:Start_Capture
import android.util.Slog;
Slog.d(TAG, "",new RuntimeException("here").fillInStackTrace());
lsusb
hciconfig
Input消息的处理流程:
处理流程从NativeRreImeInputStage -> ViewPreImeStage -> ImeStage -> EarlyPostImeStage -> NativePostImeStage -> ViewPostImeInputStage -> SyntheticInputStage。
01-01 20:06:23.805 4400 4400 V ViewRootImpl: ViewPreImeInputStage processKeyEvent
01-01 20:06:23.805 4400 4400 V ViewRootImpl: EarlyPostImeInputStage processKeyEvent
01-01 20:06:23.856 4400 4400 V ViewRootImpl: ViewPostImeInputStage processKeyEvent
01-01 20:04:15.752 4367 4367 V ViewRootImpl: NativePostImeInputStage sendInputEvent
01-01 20:04:15.803 4367 4367 V ViewRootImpl: NativePostImeInputStage handled=true
01-01 20:04:29.523 4367 4367 V ViewRootImpl: NativePostImeInputStage handled=false
NativePostImeInputStage:
mInputQueue.sendInputEvent(q.mEvent, q, false, this);
onFinishedInputEvent
AInputQueue_finishEvent//app内部消耗掉了
NativePreImeInputStage、ViewPreImeInputStage、ImeInputStage三个类用来实现输入法的按键派发和处理,如果事件不传递到输入法服务中,这三个类可以跳过