事件注入event inject

注入是事件处理流程如:

1 .View 接受到上报的Touch事件,被分发到相应的View的OnTouch事件中,

2.我可以通过覆盖这个方法,向InputManager中注入KeyCode事件,如:back,home等

3. .back ,home 等注入事件,然后分别通过Activity.java,和PhoneWindowsManager.java的处理Event实现功能

在3.0中,我可以通过

1 .framework/base/SystemUI/src/com/android/systemui/policy/KeyButtonView.java

可以看到注入事件使用IwindowManager接口中injectInputEventNoWait(KeyEvent event);

这个接口实现在WindowManagerService.java中

2 .然后WindowManagerService中将事件上报给相应的当前系统,被应用或者系统处理

====================================================================

下面是3.0中Home键的处理过程

1 .framework/base/SystemUI/src/com/android/systemui/policy/KeyButtonView.java 中,通过

injectInputEventNoWait ,输入Home键的keyCode(在Manifest中使用这个view中添加Keycode属性)

2 .Home事件在PhoneWindowManager中interceptKeyBeforeDispatching方法中被处理

3 .调用launchHomeFromHotKey();方法回到Launch主页面


===================================================================

android中,有4种注入输入事件的方法分别是:

1.boolean injectKeyEvent(in KeyEvent ev,boolean sync); //注入key事件

2.boolean injectPointerEvent(in MotionEvent ev,boolean sync); //注入mouse事件

3.boolean injectTrackballEvent(in MotionEvent ev,boolean sync); //注入轨迹球事件

4.boolean injectInputEventNoWait(in InputEvent ev); //注入输入事件

这个四个方法都是通过IWindowManager.aidl 方式提供给别的进程调用的。

可利用这个接口实现,windows鼠标,keyboard等事件通过socket传送给android,android的server实现注入事件,进而模拟windows的鼠标的事件,从而达到window鼠标控制android的系统。

你可能感兴趣的:(inject)