以下のソースはバックキーを制御する場合のコード。
他にも検索キーやメニューキー、数字やアルファベットなどの物理キーボードもフック可能。
ただ、ホームキーだけは制御できない。
@Override
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//やりたいことを書く
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//やりたいことを書く
}
return false;
}
<activity
android:label="@string/activity_name"
android:name=".SearchKeyActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH_LONG_PRESS" />
<category android:name="android.intent.category.DEFAULT" />
</activity>
余談だけど、自分は初代XperiaとGalaxy Nexusしか使った事がないので検索キーの使い勝手が分からない。<activity
android:name=".HomeKeyActivity"
android:label="@string/act_name_home_key_activity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>
public void launchAndroidSettings() {
Intent intent = new Intent()
.setAction(android.provider.Settings.ACTION_SETTINGS)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
startActivity(intent);
}
※「最低限」と書いているけれど、Android4.0ではステータスバーから設定アプリを起動する事ができるので、絶対に必要という訳ではない。(3.0でもおそらく大丈夫)