注入是事件處理流程如:
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的系統。