Android物理鍵盤事件解析
阿新 • • 發佈:2020-01-07
前言
Android裝置連線物理鍵盤其實是個挺小眾的需求,其實Android裝置本身就是支援物理鍵盤,dispatchKeyEvent()這個方法就可以監聽物理鍵盤,這裡提供一個封裝的類,解析鍵盤事件。有很多事件,具體可以去看KeyEvent這個類的原始碼,我這裡只處理的數字鍵盤。
實現方式
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) { //數字 aChar = (char) ('0' + keyCode - KeyEvent.KEYCODE_0); } else if(keyCode >= KeyEvent.KEYCODE_NUMPAD_0 && keyCode <= KeyEvent.KEYCODE_NUMPAD_9) { //數字 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.設定監聽
DispatchKeyResolver dr = new DispatchKeyResolver(); //設定事件回撥 dr.setKeyInputListener(...) @Override public boolean dispatchKeyEvent(KeyEvent event) { //物理鍵確定,並且是按下的行為(避免兩次響應) if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){ dr.resolveKeyEvent(event) } return super.dispatchKeyEvent(event); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。