package org.android.textbook.lesson4.keyeventsample; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.KeyEvent; public class KeyEventSampleActivity extends Activity { private static final String TAG = "KeyEventSampleActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.e(TAG, "dispatchKeyEvent : "); return super.dispatchKeyEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.e(TAG, "onKeyDown : "); if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } return super.onKeyLongPress(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // onKeyLongPressでtrueを返すと、isCanceled()はtrueとなる // onKeyLongPressで処理されていない場合、このルートを通る return true; } return super.onKeyUp(keyCode, event); } @Override public void onBackPressed() { // バックキーが押されると呼ばれる super.onBackPressed(); } }