View 注入事件

注入是事件处理流程如:

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的系统。

 

 

 

 

 

 

你可能感兴趣的:(Android)