Android InputMonitor
2135 ワード
InputMonitorはInputManagerServiceとWMSの間の絆、SystemServerです.JAvaでstartOtherServices()メソッドで初期化:
内
wm.getInputMonitor()メソッドWindowManagerServices.JAvaでは次のようになります.
IMSが対応する入力イベントを受信すると、mWindowManagerCallbacksによってmInputMonitorオブジェクトメソッドが呼び出されます.
return mWindowManagerCallbacks.notifyConfigurationChanged(); return mWindowManagerCallbacks.notifyLidSwitchChanged(whenNanos, lidOpen);
return mWindowManagerCallbacks.notifyCameraLensCoverSwitchChanged(whenNanos, lensCovered);
return mWindowManagerCallbacks.notifyInputChannelBroken(inputWindowHandle); return mWindowManagerCallbacks.notifyANR( return mWindowManagerCallbacks.interceptKeyBeforeQueueing(event, policyFlags); return mWindowManagerCallbacks.interceptMotionBeforeQueueingNonInteractive( return mWindowManagerCallbacks.interceptKeyBeforeDispatching(focus, event, policyFlags); return mWindowManagerCallbacks.dispatchUnhandledKey(focus, event, policyFlags); return mWindowManagerCallbacks.getPointerLayer();
inputManager = new InputManagerService(context);
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
traceBeginAndSlog("StartWindowManagerService");
wm = WindowManagerService.main(context, inputManager,
mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL,
!mFirstBoot, mOnlyCore);
ServiceManager.addService(Context.WINDOW_SERVICE, wm);
ServiceManager.addService(Context.INPUT_SERVICE, inputManager);
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
traceBeginAndSlog("StartVrManagerService");
mSystemServiceManager.startService(VrManagerService.class);
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
mActivityManagerService.setWindowManager(wm);
inputManager.setWindowManagerCallbacks(wm.getInputMonitor());//
inputManager.start();
内
wm.getInputMonitor()メソッドWindowManagerServices.JAvaでは次のようになります.
public InputMonitor getInputMonitor() {
return mInputMonitor;
}
final InputMonitor mInputMonitor = new InputMonitor(this);
IMSが対応する入力イベントを受信すると、mWindowManagerCallbacksによってmInputMonitorオブジェクトメソッドが呼び出されます.
return mWindowManagerCallbacks.notifyConfigurationChanged(); return mWindowManagerCallbacks.notifyLidSwitchChanged(whenNanos, lidOpen);
return mWindowManagerCallbacks.notifyCameraLensCoverSwitchChanged(whenNanos, lensCovered);
return mWindowManagerCallbacks.notifyInputChannelBroken(inputWindowHandle); return mWindowManagerCallbacks.notifyANR( return mWindowManagerCallbacks.interceptKeyBeforeQueueing(event, policyFlags); return mWindowManagerCallbacks.interceptMotionBeforeQueueingNonInteractive( return mWindowManagerCallbacks.interceptKeyBeforeDispatching(focus, event, policyFlags); return mWindowManagerCallbacks.dispatchUnhandledKey(focus, event, policyFlags); return mWindowManagerCallbacks.getPointerLayer();