Android物理鍵盤事件解析
前言
Android設(shè)備連接物理鍵盤其實是個挺小眾的需求,其實Android設(shè)備本身就是支持物理鍵盤,dispatchKeyEvent()這個方法就可以監(jiān)聽物理鍵盤,這里提供一個封裝的類,解析鍵盤事件。有很多事件,具體可以去看KeyEvent這個類的源碼,我這里只處理的數(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)文章
Flutter?將Dio請求轉(zhuǎn)發(fā)原生網(wǎng)絡(luò)庫的實現(xiàn)方案
這篇文章主要介紹了Flutter?將Dio請求轉(zhuǎn)發(fā)原生網(wǎng)絡(luò)庫,需要注意添加NativeNetInterceptor,如果有多個攔截器,例如LogInterceptors等等,需要將NativeNetInterceptor放到最后,需要的朋友可以參考下2022-05-05
Android開發(fā)教程之ContentProvider數(shù)據(jù)存儲
這篇文章主要介紹了Android開發(fā)教程之ContentProvider數(shù)據(jù)存儲的相關(guān)資料,需要的朋友可以參考下2016-12-12
Android下拉刷新控件PullToRefresh實例解析
這篇文章主要為大家詳細(xì)解析了Android下拉刷新控件PullToRefresh實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09
Flutter如何輕松實現(xiàn)動態(tài)更新ListView淺析
在Android中通常都會用到listview.那么flutter里面怎么用呢?下面這篇文章主要給大家介紹了關(guān)于Flutter如何輕松實現(xiàn)動態(tài)更新ListView的相關(guān)資料,需要的朋友可以參考下2022-02-02

