亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于Android內(nèi)核的物理按鍵設(shè)計*

        2018-12-24 07:36:44任志敏
        山西電子技術(shù) 2018年6期
        關(guān)鍵詞:功能鍵鍵值數(shù)組

        任志敏

        (常州紡織服裝職業(yè)技術(shù)學(xué)院機電學(xué)院,江蘇 常州 213164)

        0 引言

        隨著Android系統(tǒng)的不斷發(fā)展,越來越多的嵌入式系統(tǒng)引入Android平臺作為系統(tǒng)平臺。Android平臺的一大優(yōu)勢是使用觸摸屏操作APP應(yīng)用程序,在大多數(shù)應(yīng)用場合利用這一優(yōu)勢效率很高,用戶體驗良好,但是在有些場合就適應(yīng)得不是很友好,比如在汽車維修領(lǐng)域使用的發(fā)動機檢測系統(tǒng),操作人員一般都攜帶手套檢查相關(guān)汽車部件,若要再用到觸摸屏,操作起來就不方便,頻繁脫戴手套又耗時又不安全,因此還是需要借助傳統(tǒng)的物理按鍵實現(xiàn)相關(guān)操作。典型的汽車發(fā)動機檢測內(nèi)窺鏡如圖1所示。

        圖1 汽車發(fā)動機檢測內(nèi)窺鏡實物圖

        從圖1可以看出,手柄上有6個物理按鍵,除了一個電源按鍵以外,還有5個功能按鍵,其功能一般是“菜單”,“向上選擇”,“向下選擇”,“確定”,“返回”。通過這5個按鍵實現(xiàn)如圖2所示的APP窗口操作。

        圖2 內(nèi)窺鏡APP窗口

        按下“菜單”按鍵,彈出如圖2所示的窗口,通過“向上選擇”和“向下選擇”兩個按鍵選擇按鈕,用“確定”按鍵進入對應(yīng)的功能模塊。即原來使用觸摸屏實現(xiàn)菜單操作都有5個物理按鍵完成。

        1 硬件電路

        Android系統(tǒng)本身支持的物理按鍵包括系統(tǒng)功能鍵和“querty”鍵盤,系統(tǒng)功能鍵包括“Home”,“volume up”,“volume down”,“menu”等,“querty”鍵盤就是日常我們所見的普通鍵盤上的各種按鍵。在安裝了Android2.2以前的版本的硬件系統(tǒng)上,系統(tǒng)功能鍵和“querty”鍵均是真實存在的物理按鍵,而Android2.2以后的硬件系統(tǒng),一般保留的物理按鍵只有系統(tǒng)功能鍵,“querty”鍵盤采用軟鍵盤的形式。本文設(shè)計的內(nèi)窺鏡采用Android6.0系統(tǒng),公版的硬件系統(tǒng)電路只引出支持功能鍵的物理按鍵[2],其電路圖如圖3所示。

        從圖3中可以看出,AVCC為模數(shù)轉(zhuǎn)換的參考電壓,LRADC0為模數(shù)轉(zhuǎn)換引腳,R1~R8為分壓電阻,S1~S7一端連接對應(yīng)的分壓電阻,另一端連接電源地,按下S1~S7中任何一個鍵,通過讀取LRADC0引腳的模數(shù)轉(zhuǎn)換值就可以感知到底按下了哪個按鍵,這樣做的好處是節(jié)省了IO引腳資源,只需要連一個模數(shù)轉(zhuǎn)換引腳就可以確定7個按鍵。在設(shè)計過程中,若不需要用到這7個鍵,按鍵可以刪除,但電阻不可刪除??紤]到工業(yè)內(nèi)窺鏡錄制播放視頻時仍舊需要用到麥克風,因此保留音量鍵VOL+和VOL-,MENU鍵用于“菜單”鍵,SEARCH鍵用于“向上選擇”鍵,HOME鍵用于“向下選擇”鍵,ESC鍵用于“確定”鍵,ENTER鍵用于“返回”鍵。

        圖3 Android6.0公版按鍵硬件電路

        2 詳細設(shè)計

        為了響應(yīng)內(nèi)窺鏡上增加的“菜單”等5個物理按鍵,需要了解和修改Android6.0的內(nèi)核文件,第一個文件為模數(shù)轉(zhuǎn)換映射文件,位于/linux-3.4/drivers/input/keyboard目錄下的sunxi-keyboard.c文件,該文件中定義了一個數(shù)組,該數(shù)組為static unsigned char keypad_mapindex[64]={0,0,0,0,0,0,0,/*key1*/1,1,1,1,1,1,/*key2*/2,2,2,2,2,2, /*key3*/3,3,3,3,3,/*key4*/4,4,4,4,4,/*key5*/5,5,5,5,5,/*key6*/6,6,6,6,6,6,6,6,6,/*key7*/7,7,7,7,7,7,7,7,7,7,7,7,7/* key 8*/}。

        從該數(shù)組可以看出,該數(shù)組正好對應(yīng)圖3所示的物理按鍵原理圖,把電壓一共分成64份,每一份對應(yīng)一個電壓值,大約為0.2V,比如key1鍵對應(yīng)圖3中的VOL+模數(shù)采集點,雖然該點的電壓為0.19V,但是每次按下VOL+鍵模數(shù)轉(zhuǎn)換的值不一定完全一樣,因此keypad_mapindex數(shù)組中設(shè)定7個值來相應(yīng)按下VOL+鍵。在sunxi-keyboard.c文件中,通過代碼

        scancode = keypad_mapindex[key_val&0x3f];

        input_report_key(sunxikbd_dev, sunxi_scankeycodes[scancode], 0);

        上報具體的按鍵值。

        第二個與物理按鍵相關(guān)的同樣位于/linux-3.4/drivers/input/keyboard目錄下的sun8i-keyboard.h文件。該文件首先定義了數(shù)組sunxi_scankeycodes[KEY_MAX_CNT],用于內(nèi)核上報給系統(tǒng)的值[1]。為了避免與系統(tǒng)自帶的值相沖突,本文設(shè)計了如圖4所示的上報值數(shù)組。

        圖4 課題設(shè)計上報值

        sunxi_scankeycodes上報數(shù)組只是做了一個定義,具體的上報值,比如KEY_VOLUMEUP值是多少呢?

        第三個文件是位于/linux-3.4/include/linux目錄下的input.h文件,該文件下定義了KEY_VOLUMEUP的值,系統(tǒng)具體上報的默認鍵值定義最大為248,因此本文自定義的5個上報鍵值從249開始,這5個上報鍵值分別是:菜單鍵KEY_MYMENU具體鍵值為249;向上選擇鍵KEY_MYUP具體鍵值為250;向下選擇鍵KEY_MYDOWN具體鍵值為251;確定鍵KEY_MYENTER具體鍵值為252;返回鍵KEY_MYBACK具體鍵值為253。

        總結(jié)一下按鍵上報的過程,1)Android底層的linux系統(tǒng)內(nèi)核通過掃描,將物理按鍵按下的電壓轉(zhuǎn)換為數(shù)字電壓并且映射到數(shù)組下標。2)通過keypad_mapindex[64],sunxi_scankeycodes[KEY_MAX_CNT]兩個數(shù)組關(guān)系轉(zhuǎn)化將按鍵映射到內(nèi)核中預(yù)定義的鍵值。3)linux內(nèi)核上報給上層一個具體的鍵值。

        第四個文件是位于Android/device/vendor-name/device-name/configs目錄下的sunxi-keyboard.kl文件,該文件是framework層的按鍵映射文件,增加本文的5個按鍵映射,修改其配置為:key 114 VOLUME_DOWN;key 115 VOLUME_UP;key 249 MYMENU;key 250 MYUP;key 251 MYDOWN;key 252 MYENTER;key 253 MYBACK。該文件中key為關(guān)鍵字,不能改動,249為input.h定義的上報鍵值。

        第五個文件是位于/frameworks/native/include/android目錄下的keycodes.h文件,該文件定義了用于Android應(yīng)用層的按鍵鍵值,修改該文件后,菜單鍵應(yīng)用層鍵值A(chǔ)KEYCODE_MYMENU=300;AKEYCODE_MYUP=301;AKEYCODE_MYDOWN=302;AKEYCODE_MYENTER=303;AKEYCODE_MYBACK=304。需要注意的是,該文件的鍵值與linux層上報的鍵值是不同的,那么如何把兩者對應(yīng)起來呢?

        第六個文件是位于/frameworks/native/include/input目錄下的InputEventLabels.h文件,修改該文件,把增加的5個鍵的定義加入其中,代碼為DEFINE_KEYCODE(MYMENU),DEFINE_KEYCODE(MYUP),DEFINE_KEYCODE(MYDOWN),DEFINE_KEYCODE(MYENTER),DEFINE_KEYCODE(MYBACK)。

        第七個文件是位于frameworks/base/core/res/res/values目錄下的attrs.xml,修改后代碼為;;。

        經(jīng)過以上文件的修改,新增加的5個物理按鍵就可以響應(yīng)Android上層APP程序了。

        3 驗證

        為了測試驗證物理按鍵的響應(yīng)效果,本文在Android6.0平臺上設(shè)計了APP程序進行驗證[3],測試代碼如圖5所示。

        圖5 物理按鈕響應(yīng)驗證程序代碼

        經(jīng)過測試,系統(tǒng)原有的兩個音量鍵仍舊功能不變,新增加的5個按鍵可以準確響應(yīng)。

        猜你喜歡
        功能鍵鍵值數(shù)組
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        時鐘 秒表 倒計時 三合一的電子計時器
        非請勿進 為注冊表的重要鍵值上把“鎖”
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        一鍵直達 Windows 10注冊表編輯高招
        電腦愛好者(2017年9期)2017-06-01 21:38:08
        定位糖
        尋找勾股數(shù)組的歷程
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        看圖識鍵 輕松掌握本本的功能鍵組合
        淺談利用按鍵精靈為病理工作軟件設(shè)計新的功能鍵
        无码国产精品一区二区免费网曝 | 中文字幕精品久久天堂一区| 国产精品av免费网站| 少妇高潮在线精品观看| 中文字幕无码毛片免费看| 国内少妇自拍区免费视频| 精品人妻av一区二区三区不卡| 东风日产车是不是国产的 | 国产肉体XXXX裸体784大胆| 亚洲日本国产一区二区三区| 亚洲男人天堂黄色av| 国产在线精品成人一区二区三区| 亚洲制服无码一区二区三区 | 国产小屁孩cao大人免费视频| 视频一区中文字幕日韩| 无码av天天av天天爽| 日本阿v网站在线观看中文 | 亚洲AV秘 无码一区二区久久| 三级日本理论在线观看| 国产欧美日韩精品专区 | 亚洲xx视频| 久久精品女同亚洲女同| 国产边摸边吃奶叫床视频| 午夜性刺激免费视频| 亚洲女同av一区二区在线观看| 国产亚洲aⅴ在线电影| 亚洲av电影天堂男人的天堂| 欧美日韩高清一本大道免费| 青青草手机视频免费在线播放| 亚洲av无码精品国产成人| 人人看人人做人人爱精品| 国产成年女人特黄特色毛片免| 国产成人精品无码免费看| 午夜一区欧美二区高清三区| 久久精品美女久久| 国产精品成人av大片| 欧美人与动牲交a精品| 国产精品天堂avav在线| 日韩一级137片内射视频播放| 樱桃视频影院在线播放| 亚洲无码一二专区|