android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
最近玩一些全鍵盤游戲,比如elona,nethack等等這類游戲,模擬器的鍵盤就很不夠用,那個 游戲鍵盤 軟件用起來體驗也很不好,今天自己就琢磨著為這些游戲專門寫一個鍵盤.
1.首先嘗試了寫一個簡單的鍵盤,發現無法實現跨進程用(也就是說只能在自己編寫的軟件中使用)
這個問題是重點,就算在本應用寫了個懸浮窗,浮在其他應用上面,但按鈕輸入的物理按鍵事件(A,B,shift等按鍵)必須要有系統應用權限才能收到,所以,這個方法沒法實現
附:發送物理按鍵事件的代碼
Instrumentation inst =new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_A) //發送A按鍵的事件(注:需要在子線程中執行,當然,我覺得可能沒幾個人會看我這個教程)
2.既然沒法實現跨進程,那就換種思路,我就干脆不跨進程了
3.怎么才能不跨進程,那就是把Exagear和自己寫的鍵盤放在同一個進程里運行,有了這個思路就好辦了
首先在清單文件中的父標簽中添加android:sharedUserId="com.xxx.xxx"
然后用反編譯工具(這里推薦APK編輯器),找到Exagear的清單文件,將上面代碼也添加到其中
之后在自己的鍵盤和Exagear清單文件中的application標簽中添加android:process="com.xxx.xxx"
這樣就把他們放在同一個進程中了.經過測試,已經可以實現鍵盤輸入了.
4.這其中設計到幾個麻煩的問題,第一個就是簽名問題,因為設置了android:sharedUserId,他們的簽名必須一致,這里就需要創建一個文件,在APK編輯器中設置好打包的簽名,自己軟件打包時也要使用該簽名才行
5.最后就是編輯專用軟鍵盤布局的時候了,已經做到這種程度了,那鍵盤想成為什么樣就完全隨心所欲了
(要將鍵盤寫成懸浮窗,從服務中啟動,之后因為和Exagear運行在同一個進程里,只要Exagear不被殺死,鍵盤就一直存在)
6.專屬鍵盤還有一個好處就是不影響本身鍵盤的使用,因為我經常需要玩游戲的時候切到QQ聊天,如果用 游戲鍵盤
我還需要把鍵盤切換成輸入法才行,很不爽啊
注:等我把鍵盤寫好了再放圖
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么计算机关机慢,电脑关机慢是什么原因
- 下一篇: 支持串行隔离级别_从0到1理解数据库事务