最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 跨進(jìn)程模擬按鍵(KeyEvent )實例詳解

 更新時間:2016年11月15日 11:39:07   作者:Terry_龍  
這篇文章主要介紹了Android 跨進(jìn)程模擬按鍵(KeyEvent )實例詳解的相關(guān)資料,類似手機(jī)遙控器的需求就可以這么做,需要的朋友可以參考下

  Android 解決不同進(jìn)程發(fā)送KeyEvent 的問題

最近在做有關(guān)于Remote Controller 的功能,該功能把手機(jī)做成TV的遙控器來處理。在手機(jī)的客戶端發(fā)送消息到TV的android 服務(wù)端,服務(wù)端接收到客戶端的請求消息,模擬KeyEvent命令,發(fā)送Key值。

 最簡單的發(fā)送命令為如下代碼:

 
public static void simulateKeystroke(final int KeyCode) {
 

    new Thread(new Runnable() {
      
      public void run() {
        // TODO Auto-generated method stub
        try {
          
          Instrumentation inst=new Instrumentation();
          inst.sendKeyDownUpSync(KeyCode);
        } catch (Exception e) {
          // TODO: handle exception
        }
      }
    }).start();
  }

這種方法在當(dāng)前的界面和相同的進(jìn)程上是沒有問題的,可以實現(xiàn)的基本的需求。但當(dāng)我還是把服務(wù)開啟著,按HOME將服務(wù)或者界面退出到后臺時,再通過客戶端向服務(wù)端服務(wù)發(fā)送消息使其模擬按鍵時,不幸的事情發(fā)送了:

Injecting to another application requires INJECT_EVENTS permission

提示沒有 INJECT_EVENTS這個權(quán)限。沒則加之,在AndroidManifest.xml文件里面添加該權(quán)限,再運行,問題還是沒有解決,原因是上面代碼最終還是調(diào)用的WindowsManagerService 里面的injectKeyEvent方法,該方法會去驗證你當(dāng)前的程序的pid和uid,如果兩者在分發(fā)key 鍵時返回-1則會提示上面的error.

 好了,廢話一大堆,下面到了真正解決這一問題的方法了。

網(wǎng)上各種google 各種百度,找不到自己需要的答案。

 想過一個方法是(尚未驗證):

通過jni的方法將kernel 的發(fā)送keyevent的方法用NDK封裝成方法,做成庫給java調(diào)用,從而繞過Android WindowsManagerService 的驗證,這是我初期想到的解決思路,但尚未驗證。

另外一個通過驗證的方法為:

將你的服務(wù)的userId改成系統(tǒng)級別的,在manifest加如下代碼:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  package="com.xuzhitech.remote.server"
  android:versionCode="1"
  android:versionName="1.0"
  android:sharedUserId="android.uid.system" >

 加上這一代碼,需要在源碼里面編譯才能生效,添加Android.mk文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := RemoteAndroidServer
LOCAL_CERTIFICATE := platform
#LOCAL_CERTIFICATE := share

LOCAL_OVERRIDES_PACKAGES := Home
include $(BUILD_PACKAGE) 

這里的 LOCAL_CERTIFICATE 要使用platform編譯,而不是share編譯。

到了這里,你就可以跨進(jìn)程模擬按鍵了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Android開發(fā)之底圖局部加載移動的方法示例

    Android開發(fā)之底圖局部加載移動的方法示例

    這篇文章主要介紹了Android開發(fā)之底圖局部加載移動的方法,涉及Android針對圖片與屏幕屬性的讀取、計算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 詳解Android WebView監(jiān)聽console錯誤信息

    詳解Android WebView監(jiān)聽console錯誤信息

    這篇文章主要介紹了Android WebView監(jiān)聽console錯誤信息,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Android StrictMode運行流程(推薦)

    Android StrictMode運行流程(推薦)

    strictmode是android在 API9后引入的檢測影響app運行流暢性的一種機(jī)制。這篇文章給大家介紹了android strictmode運行流程,需要的朋友參考下吧
    2018-01-01
  • Android TextView中文本點擊文字跳轉(zhuǎn) (代碼簡單)

    Android TextView中文本點擊文字跳轉(zhuǎn) (代碼簡單)

    用過微博Android手機(jī)端的朋友的都知道微博正文有時有一些高亮顯示的文本,如話題、提到的人等等,當(dāng)點擊這些文本時會跳到另外一個頁面(即另一個activity),下面就要來模仿微博的這個功能
    2016-01-01
  • Android控件系列之EditText使用方法

    Android控件系列之EditText使用方法

    EditText是接受用戶輸入信息的最重要控件。通過前面課程的學(xué)習(xí),您可能會猜到可以利用EditText.getText()獲取它的文本,但真正的項目中,可能沒那么簡單,需要更多的限制,如文本長度限制,是否數(shù)字限制等等
    2012-11-11
  • Android使用SlidingPaneLayout 實現(xiàn)仿微信的滑動返回

    Android使用SlidingPaneLayout 實現(xiàn)仿微信的滑動返回

    這篇文章主要介紹了Android使用SlidingPaneLayout 實現(xiàn)仿微信的滑動返回,需要的朋友可以參考下
    2018-04-04
  • Android編程實現(xiàn)ListView滾動提示等待框功能示例

    Android編程實現(xiàn)ListView滾動提示等待框功能示例

    這篇文章主要介紹了Android編程實現(xiàn)ListView滾動提示等待框功能,結(jié)合實例形式分析了Android ListView滾動事件相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • 手勢滑動結(jié)束Activity基本功能的實現(xiàn)(一)

    手勢滑動結(jié)束Activity基本功能的實現(xiàn)(一)

    這篇文章主要為大家詳細(xì)介紹了手勢滑動結(jié)束Activity基本功能的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android Toast的用法總結(jié)(五種用法)

    Android Toast的用法總結(jié)(五種用法)

    本篇文章主要介紹了Android Toast的用法總結(jié)(五種用法),android toast幾種使用方法 toast經(jīng)常會用到,今天做個總結(jié),特別是自定義toast的布局,值得一看。
    2017-01-01
  • Android實現(xiàn)自動填充短信驗證碼功能

    Android實現(xiàn)自動填充短信驗證碼功能

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)自動填充短信驗證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

镇远县| 金湖县| 胶南市| 靖边县| 遵义县| 台前县| 宜丰县| 和田市| 蒙城县| 玉溪市| 冀州市| 象山县| 花垣县| 江口县| 铜梁县| 若羌县| 漳平市| 曲阜市| 康定县| 邹城市| 大城县| 马山县| 定兴县| 抚松县| 桂平市| 永丰县| 巴东县| 商城县| 滨海县| 马鞍山市| 扎鲁特旗| 榆中县| 饶阳县| 当阳市| 江安县| 安阳市| 库尔勒市| 榆中县| 鲁山县| 屏山县| 黔南|