2012年8月9日木曜日

ホームボタンをダブルクリックしてアプリを起動する方法

Androidの一部メーカーの端末や某ホームアプリには、ホームボタンの
ダブルクリックに機能を割り当てている事がある。これと同じようにして
ホームボタンのダブルクリックで自作アプリを起動させる方法をメモしておく。
他にも実現方法があるかもしれないが、1つの方法として提示してみる。

【動作仕様】
・HOMEボタンを2回押下してアプリを起動する。
・HOMEボタンを1回押下した後、2回目の押下までにダブルクリック判定時間がタイムアウトとなったらアプリを終了する。

【手順】
・マニフェストファイルのActivityのカテゴリにHOMEを追加する。
・下記コードを元に自分の処理をonNewIntent()に追加する。
・ダブルクリック判定時間(DOUBLE_CLICK_TIMEOUT)は機種に合わせて調整する。

// ホームボタン押下の呼び出し順序
// 1回目:onCreate()
// 2回目:onPause() → onNewIntent()

private static final int DOUBLE_CLICK_TIMEOUT = 300;
private Handler handler = null;
private Runnable runnable = null;
private boolean isDoubleClickMode = true;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    startUptimeMillis = SystemClock.uptimeMillis();

    handler = new Handler();
    runnable = new Runnable(){
        @Override
        public void run() {
            // タイムアウトとなったら終了
            isDoubleClickMode = false;
            finish();
        }
    };

    handler.postDelayed(runnable, DOUBLE_CLICK_TIMEOUT);
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    if(isDoubleClickMode){
        isDoubleClickMode = false;

        // 任意の処理を記載
    }
}

@Override
protected void onPause() {
    super.onPause();

    if(isDoubleClickMode){
        handler.removeCallbacks(runnable);
    }
}

0 件のコメント:

コメントを投稿