View 注入事件

來源:互聯網
上載者:User

注入是事件處理流程如:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.