Android アプリ開発「MATRIX」

Androidアプリの開発に役立つサンプル集


押されたキーの「キーコード」を取得する方法

押されたキーの「キーコード」を取得する

スマートフォンタブレットの物理的な「キー」が押された時に、そのキーコードを取得するには「View」クラスの「onKeyDown」イベントを利用します。この「onKeyDown」イベントはソフトウェアキーボードのコードも取得できる場合がありますが、確実ではありませんのでおすすめすることはできません。

サンプルコード①(MainActivity.java

アプリの詳しい説明はコード内のコメントに記述してあります。 

public class MainActivity extends AppCompatActivity {

//オブジェクト・変数を準備
private TextView textView;
private String str;
private String default_message = "キーを押してください";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//オリジナルViewMyView)をセット
setContentView(new MyView(this));
//デフォルトメッセージをセット
str = default_message;
}

//オリジナルViewMyView
public class MyView extends View {

public MyView(Context context) {
super(context);

//このViewにフォーカスさせる
setFocusable(true);
setFocusableInTouchMode(true);
}

//キーが押された時に呼び出される
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

//キーコードの取得と表示する文字列の作成
str = "コード「" + String.valueOf(KeyCode) + "」のキーが押されました";
//表示の更新(onDrawの自動呼び出し)
invalidate();

return super.onKeyDown(keyCode, event);
}

//キーが離された時に呼び出される
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {

//デフォルトメッセージをセット
str = default_message;
//表示の更新(onDrawの自動呼出し)
invalidate();

return super.onKeyUp(keyCode, event);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

//ペイントの生成とパラメーターのセット
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(50);
paint.setColor(Color.RED);
//テキストを画面に描画
canvas.drawText(str,20,100,paint);
}
}
}

サンプルコード②(activity_main.xml

レイアウトは、画面の中央にスピードを表示するテキストビューがあるだけのシンプルな構造です。 

<TextView
android:id="@+id/keyevent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

実行結果

実行するとアプリは入力待ち状態になります。

f:id:vw-dsg:20181229001113j:plain

ボリュームキー(アップ、またはダウン)を押すと、押されたキーのキーコードが表示されました。

アンドロイド開発「キーコードを取得する」2

押したボリュームキーを離すとまた入力待ちの状態に戻ります。

f:id:vw-dsg:20181229001113j:plain

備考・その他

。 

END