Android物理キーボードイベント解析


前言
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);
} 
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。