Android 2.1 關機界面 Source code 的修改 教學
在Android系統中,長按Power鍵默認會彈出對話框讓你選擇「飛行模式」,「靜音」,「關機」等功能。這些功能對於手機非常適用,
但是對於機頂盒產品就沒有什麼必要了。本文簡單介紹一下怎樣定制關機界面。
我的目標是長按Power鍵,將會關機,彈出「設備將要關機」選擇對話框。如果可以選擇「是」關機,和「否」返回系統。
彈出對話框的代碼位於:
frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java
顯示對話框的代碼如下:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
showGlobalActionsDialog();
}
};
調用showGlobalActionsDialog方法將會顯示上面提到的顯示「飛行模式」,「靜音」,「關機」,選項的對話框。
因為我的目標是不要這個節目,把這行代碼注釋掉,替換成關機的代碼就可以了。那麼關機的代碼在哪裡呢?
這段代碼位於:
frameworks\policies\base\phone\com\android\internal\policy\impl\GlobalActions.java
該文件的createDialog方法中,有如下代碼:
從代碼中我們可以看出,如果選擇上述對話框的「關機」選項之後,將會調用ShutdownThread的shutdown方法來關機。
shutdown方法的第二個參數標識是否彈出詢問對話框。
我們可以修改PhoneWindowManager.java的代碼,最終代碼如下:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
//showGlobalActionsDialog();
ShutdownThread.shutdown(mContext, false);
}
};
引用 a樂饗z
在Android系統中,長按Power鍵默認會彈出對話框讓你選擇「飛行模式」,「靜音」,「關機」等功能。這些功能對於手機非常適用,
但是對於機頂盒產品就沒有什麼必要了。本文簡單介紹一下怎樣定制關機界面。
我的目標是長按Power鍵,將會關機,彈出「設備將要關機」選擇對話框。如果可以選擇「是」關機,和「否」返回系統。
彈出對話框的代碼位於:
frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java
顯示對話框的代碼如下:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
showGlobalActionsDialog();
}
};
調用showGlobalActionsDialog方法將會顯示上面提到的顯示「飛行模式」,「靜音」,「關機」,選項的對話框。
因為我的目標是不要這個節目,把這行代碼注釋掉,替換成關機的代碼就可以了。那麼關機的代碼在哪裡呢?
這段代碼位於:
frameworks\policies\base\phone\com\android\internal\policy\impl\GlobalActions.java
該文件的createDialog方法中,有如下代碼:
mItems = Lists.newArrayList(
// silent mode
mSilentModeToggle,
// next: airplane mode
mAirplaneModeOn,
// last: power off
new SinglePressAction(
com.android.internal.R.drawable.ic_lock_power_off,
R.string.global_action_power_off) {
// silent mode
mSilentModeToggle,
// next: airplane mode
mAirplaneModeOn,
// last: power off
new SinglePressAction(
com.android.internal.R.drawable.ic_lock_power_off,
R.string.global_action_power_off) {
public void onPress() {
// shutdown by making sure radio and power are handled accordingly.
ShutdownThread.shutdown(mContext, true);
}
// shutdown by making sure radio and power are handled accordingly.
ShutdownThread.shutdown(mContext, true);
}
public boolean showDuringKeyguard() {
return true;
}
return true;
}
public boolean showBeforeProvisioning() {
return true
}
});return true
}
從代碼中我們可以看出,如果選擇上述對話框的「關機」選項之後,將會調用ShutdownThread的shutdown方法來關機。
shutdown方法的第二個參數標識是否彈出詢問對話框。
我們可以修改PhoneWindowManager.java的代碼,最終代碼如下:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
//showGlobalActionsDialog();
ShutdownThread.shutdown(mContext, false);
}
};
引用 a樂饗z