安卓源代碼修改之framework下面長按power鍵,修改安卓原生的關機、重啓界面(二)

接着上一篇文章,這篇文章主要說一些,這四個按鈕的點擊事件。所有的點擊事件都是在我自己寫的那個Dialog_Activity2那個類中,但是想要把自己寫的Activity跟源代碼相結合(因爲關機重啓這類的真正的調用的對象都在源代碼的DialogActions.java中的),必須發送廣播給這個源代碼的類,這樣源代碼才能接收到你的點擊的事件,才能做相應的操作,當然,前提是在你想要發送的源代碼中有廣播接收器纔可以的。
在我的Dialog_Activity2.java中有一個onClick()方法,
public void onClick(View v){
switch (v.getId()) {
case R.id.imageButton1:
//省電模式的按鈕
break;
case R.id.imageButton2:
//情景模式的按鈕
break;
case R.id.imageButton3:
//重啓的按鈕,發送廣播給DialogActions.java中的廣播接收器
//其他三個按鈕就是慢慢的移動,直至消失,動畫的XML自己寫,然後讓其他
//三個按 startAnimation即可
break;
case R.id.imageButton4:
//關機的按鈕,發送廣播給DialogActions.java中的廣播接收器
//其他三個按鈕就是慢慢的移動,直至消失,動畫的XML自己寫,然後讓其他
//三個按 startAnimation即可
break;
}
}
DialogActions中的廣播接收器中:
else if(action.equals(“Global_Reboot”)){ //重啓
mWindowManagerFuncs.reboot(true); //源代碼中重啓的一行代碼,直接借用就ok了
}else if(action.equals(“Global_ShutDown”)){ //關機
mWindowManagerFuncs.shutdown(false);////源代碼中重啓的一行代碼,直接借用就ok
}
當然,廣播怎麼寫,忘了的童鞋多多看資料吧~
上面就是重啓跟關機的點擊事件,還是比較簡單的。接下來就是情景模式的點擊事件了,我的需求是,點擊情景模式之後其他三個按鈕同時移動直至消失,並且彈出一個AlertDialog,這個AlertDialog還是單選框,代碼如下:
AlertDialog.Builder build = new AlertDialog.Builder(Dialog_Activity2.this);
final String[] mode = {“響鈴”,”震動”,”靜音”};
build.setSingleChoiceItems(mode, num, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
SharedPreferences.Editor editor=sp.edit();
switch (which) {
case 0:
//發送廣播給GlobalActions.java
editor.putInt(“num”, 0); //SharedPreferences存儲選擇的項
break;
case 1:
//發送廣播給GlobalActions.java
editor.putInt(“num”, 1); //SharedPreferences存儲選擇的項
break;
case 2:
//發送廣播給GlobalActions.java
editor.putInt(“num”, 2); //SharedPreferences存儲選擇的項
break;
}
editor.commit();
dialog.dismiss();
}
});
AlertDialog dialog=build.create();
dialog.show();
是的,在這裏我用了SharedPreferences輕型數據庫,作用就是,我每次選擇情景模式的三個選項之一(”響鈴”,”震動”,”靜音”)的時候就會在SharedPreferences中存儲我選擇項的id,以便再一次打開的時候,是記住我上一次的選擇的。SharedPreferences的使用,不是很清晰的童鞋也多多查資料~
然後發送廣播之後在源代碼GlobalActions.java中的廣播接收器中:
else if(action.equals(“xiangling”)){
//響鈴模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
} else if(action.equals(“zhendong”)){
//振動模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
} else if(action.equals(“jingyin”)){
//靜音模式
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
這三個代碼是我自己寫的,沒有用到源代碼的代碼,就是自己對AudioManager的熟悉,就直接這麼寫了三行,然後就ok了,因爲我發現源代碼中有AudioManager的對象,所以讓我往這個方向去想了。
好了,以上就是對這三個按鈕的點擊事件,省電模式暫時沒有需求,所以就沒有做,後期做的話再更新!
希望能幫到有需要的童鞋~
以上都是本人按照自己做出來的效果寫出來的心得,希望能幫助到有需要的童鞋~~如有雷同純屬巧合!

發佈了18 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章