Android Homeキーのタップを検知する
dispatchKeyEvent
でいけるかなと思っていましが,これはハードキー時代の栄光のようです.
Homeキーのタップを検知する方法には
1). onUserLeaveHint
2). BroadcastReceiver
の2つあります. 1). はIntentで他アプリに遷移するときも呼ばれるので注意が必要です.
1). onUserLeaveHint
@Override protected void onUserLeaveHint() { Toast.makeText(getApplicationContext(), "ホームボタンが押されました", Toast.LENGTH_LONG).show(); }
2). BroadcastReciever
public class MainActivity extends AppCompatActivity { private HomeKeyReceiver mHomeKeyReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Homeキーを押された時の Reciever の登録 mHomeKeyReceiver = new HomeKeyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(mHomeKeyReceiver, filter); } private class HomeButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent){ Toast.makeText(getApplicationContext(), "ホームボタンが押されました", Toast.LENGTH_LONG).show(); finish(); } } @Override public void onPause(){ super.onPause(); unregisterReceiver(mHomeKeyReceiver); } }