最終更新:
moonlight_aska 2014年08月16日(土) 00:39:41履歴
キーイベントを発生させるには, キーイベント(KeyEvent)クラスとdispatchKeyEventメソッドを利用する.

- MainActivity.java
- KeyEventクラスのコンストラクタに, ACTION, KEYCODE等を指定してキーイベントを生成する.
- dispatchKeyEventメソッドで, キーイベントを発行する.
package com.moonlight_aska.android.keyevent01;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements View.OnClickListener {
Button btnAlpha1 = null;
Button btnAlpha2 = null;
EditText txtInput = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnAlpha1 = (Button)findViewById(R.id.alpha1);
btnAlpha1.setOnClickListener(this);
btnAlpha2 = (Button)findViewById(R.id.alpha2);
btnAlpha2.setOnClickListener(this);
txtInput = (EditText)findViewById(R.id.input);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
txtInput.requestFocus();
if (v == btnAlpha1) { // 通常のキー(KeyEvent.KEYCODE_XXXX)
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); // KeyDownイベント
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)); // KeyUPイベント
}
else if (v == btnAlpha2) { // アルファべトの大文字
dispatchKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A, 1, KeyEvent.META_SHIFT_ON));
}
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
Log.v("KeyEvent", "KeyCode = " + event.getKeyCode());
return super.dispatchKeyEvent(event);
}
}
- 動作例

コメントをかく