Android物理キーボードイベント解析
前言
Androidデバイスの物理キーボード接続は、実際には非常に小さな需要がありますが、Androidデバイス自体は、物理キーボードをサポートしています。dispatchKeyEvent()この方法は物理キーボードを傍受することができます。ここではパッケージの種類を提供し、キーボードのイベントを解析します。多くのイベントがあります。具体的にはKeyEventというソースコードを見に行きます。ここではデジタルキーボードだけを扱っています。
実装
1.キーボードイベント解析類
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);
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。