Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

Android Homeキーのタップを検知する

dispatchKeyEventでいけるかなと思っていましが,これはハードキー時代の栄光のようです.

Homeキーのタップを検知する方法には

1). onUserLeaveHint
2). BroadcastReceiver

の2つあります. 1). はIntentで他アプリに遷移するときも呼ばれるので注意が必要です.

1). onUserLeaveHint

    @Override
    protected void onUserLeaveHint() {
        Toast.makeText(getApplicationContext(), "ホームボタンが押されました", Toast.LENGTH_LONG).show();
    }

y-anz-m.blogspot.jp

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);
    }

}

wada811.blogspot.com