Android物理鍵盤事件解析
前言
Android設(shè)備連接物理鍵盤其實(shí)是個挺小眾的需求,其實(shí)Android設(shè)備本身就是支持物理鍵盤,dispatchKeyEvent()這個方法就可以監(jiān)聽物理鍵盤,這里提供一個封裝的類,解析鍵盤事件。有很多事件,具體可以去看KeyEvent這個類的源碼,我這里只處理的數(shù)字鍵盤。
實(shí)現(xiàn)方式
1.鍵盤事件解析類
public class DispatchKeyResolver { public OnKeyInputListener keyInputListener; public void resolveKeyEvent(KeyEvent event) { getInputChar(event); } public void getInputChar(KeyEvent event) { int keyCode = event.getKeyCode(); char aChar; if(keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) { //數(shù)字 aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_0); } else if(keyCode >= KeyEvent.KEYCODE_NUMPAD_0 && keyCode <= KeyEvent.KEYCODE_NUMPAD_9) { //數(shù)字 aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_NUMPAD_0); } else { //其他符號 switch(keyCode) { case KeyEvent.KEYCODE_PERIOD: aChar = '.'; break; case KeyEvent.KEYCODE_NUMPAD_DOT: aChar = '.'; break; default: return; } } keyInputListener.onKeyInput(aChar); } public void setKeyInputListener(OnKeyInputListener keyInputListener) { this.keyInputListener = keyInputListener; } public interface OnKeyInputListener { void onKeyInput(char aChar); } }
2.設(shè)置監(jiān)聽
DispatchKeyResolver dr = new DispatchKeyResolver(); //設(shè)置事件回調(diào) dr.setKeyInputListener(...) @Override public boolean dispatchKeyEvent(KeyEvent event) { //物理鍵確定,并且是按下的行為(避免兩次響應(yīng)) if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){ dr.resolveKeyEvent(event) } return super.dispatchKeyEvent(event); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼
在登錄注冊軟件時,經(jīng)常會要求填寫隨機(jī)驗(yàn)證碼,這篇文章為大家詳細(xì)主要介紹了Android實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Android?Jetpack組件ViewModel基本用法詳解
這篇文章主要為大家介紹了Android?Jetpack組件ViewModel基本用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android中Handler實(shí)現(xiàn)倒計(jì)時的兩種方式
本篇文章主要介紹了Android中Handler實(shí)現(xiàn)倒計(jì)時的兩種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07Android開發(fā)微信小程序路由跳轉(zhuǎn)方式
這篇文章主要為大家介紹了Android開發(fā)微信小程序路由跳轉(zhuǎn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04Android應(yīng)用獲取設(shè)備序列號的方法
本篇文章主要介紹了Android應(yīng)用獲取設(shè)備序列號的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06Android編程實(shí)現(xiàn)wifi掃描及連接的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)wifi掃描及連接的方法,涉及Android網(wǎng)絡(luò)操作掃描、查找、連接、線程等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02android使用surfaceview+MediaPlayer播放視頻
這篇文章主要為大家詳細(xì)介紹了android使用surfaceview+MediaPlayer播放視頻,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Android 適配器模式應(yīng)用及設(shè)計(jì)原理
這篇文章主要介紹了Android 適配器模式應(yīng)用及設(shè)計(jì)原理的相關(guān)資料,Android開發(fā)者應(yīng)該都知道適配器會用,但是不是多清楚原理,這里幫大家分析下原理,需要的朋友可以參考下2016-10-10