国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

Andr oid按鍵添加和處理的三個解決

2019-11-02 14:52:32
字體:
來源:轉載
供稿:網友

 實現方案需求:Android機器上有個Wifi物理按鍵,現在需求通過點擊“wifi物理按鍵”能夠快速的開啟/關閉wifi。

經過思考之后,擬出下面幾種方案:
方案一,在linux kernel的驅動中捕獲“wifi物理按鍵”。在kernel的按鍵驅動中截獲“wifi”按鍵,并對其進行處理:若是“wifi”是開啟的,則關閉wifi;否則,打開wifi。
方案二,在Android中添加一個服務,監聽wifi按鍵消息。若監聽到“wifi”按鍵,則讀取wifi的狀態:若是“wifi”是開啟的,則關閉wifi;否則,打開wifi。
方案三,在Android的input輸入子系統的框架層中捕獲wifi按鍵,并進行相應處理。若捕獲到“wifi”按鍵,則讀取wifi的狀態:若是“wifi”是開啟的,則關閉wifi;否則,打開wifi。

方案一

方案思路: 在linux kernel的驅動中捕獲“wifi物理按鍵”。在kernel的按鍵驅動中截獲“wifi”按鍵,并對其進行處理:若是“wifi”是開啟的,則關閉wifi;否則,打開wifi。

方案分析: 若采用此方案需要解決以下問題
01,在kerne的按鍵驅動中捕獲“wifi”按鍵。
-- 這個問題很好實現。在kernel的按鍵驅動中,對按鍵值進行判斷,若是wifi按鍵,則進行相應處理。
02,在kernel中讀取并設置wifi的開/關狀態。
-- 這個較難實現。因為wifi驅動的開/關相關的API很難獲取到。一般來來說,wifi模組的驅動都是wifi廠家寫好并以.ko文件加載的。若需要獲取wifi的操作API,需要更廠家一起合作;讓它們將接口開放,并讓其它設備在kernel中可以讀取到。
03,在kernel中將wifi的狀態上報到Android系統中。若單單只是實現02步,只是簡單的能開/關wifi了;但還需要向辦法讓Android系統直到wifi的開/關行為。
-- 可以實現,但是太麻煩了。

方案結論: 實現難度太大!

方案二

方案思路: 在Android中添加一個服務,監聽wifi按鍵消息。若監聽到“wifi”按鍵,則讀取wifi的狀態:若是“wifi”是開啟的,則關閉wifi;否則,打開wifi。

方案分析: 若采用此方案需要解決以下問題
01,將kernel的wifi按鍵上傳到Android系統中。
-- 這個可以實現。首先,我們將wifi按鍵映射到一個sys文件節點上:按下wifi按鍵時,sys文件節點的值為1;未按下wifi按鍵時,sys文件節點的值為0。其次,通過NDK編程,讀取該sys文件節點,并將讀取的接口映射注冊到JNI中。最后,通過JNI,將該接口對應注冊到Android系統中,使應用程序能夠讀取該接口。
02,在Android系統中添加一個服務,不斷讀取wifi按鍵狀態。
-- 這個也可以實現。由于“01”中,我們已經將wifi的按鍵狀態通過JNI注冊到Android系統中;我們這里就可以讀取到。
03,讀取并設置wifi的開/關狀態。
-- 這個也可以實現。在Android系統中,我們可以通過WifiManager去讀取/設置wifi的開/關狀態。通過WifiManager設置的wifi狀態,是全局的。

架構圖:

Android按鍵添加和處理的三個解決 電腦高手

 

具體實現:
通過驅動,將wifi按鍵狀態映射到文件節點。由于不同平臺差異,具體的代碼接口可能有所差異;我所工作的平臺是RK3066,所以還是以此來進行介紹。

01 將kernel的wifi按鍵上傳到Android系統中

在按鍵驅動中編輯wifi按鍵的驅動:主要的目的是將wifi按鍵映射到某個鍵值上,方便后面Android系統調用。因為Android系統使用的按鍵值和Linux內核使用的按鍵值不一樣,Android會通過一個鍵值映射表,將Linux的按鍵值和Android的按鍵值映射起來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东台市| 尚志市| 河南省| 上饶县| 贵南县| 天祝| 景泰县| 洪雅县| 寿阳县| 钦州市| 波密县| 涿鹿县| 漳平市| 长沙市| 永泰县| 二连浩特市| 怀仁县| 洛浦县| 德格县| 上杭县| 泾阳县| 邵阳县| 河东区| 龙口市| 西吉县| 乌拉特前旗| 姜堰市| 钦州市| 博白县| 木里| 张家口市| 孟州市| 会宁县| 鄯善县| 双牌县| 永春县| 综艺| 铜梁县| 隆安县| 长丰县| 象州县|