生活随笔
收集整理的這篇文章主要介紹了
MTK平台 Android4.0.3 定制关机动画
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現效果是這樣的,長按電源鍵彈出關機對話框,選擇關機項將呈現關機動畫和音樂直到正常關機完畢,下面說說具體思路及實現代碼
找到長按電源鍵控制代碼?/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
<span?style="font-size:12px;">private?final?Runnable?mPowerLongPress?=?new?Runnable()?{?? ????????public?void?run()?{?? ?????????????? ????????????if?(mLongPressOnPowerBehavior?<?0)?{?? ????????????????mLongPressOnPowerBehavior?=?mContext.getResources().getInteger(?? ????????????????????????com.android.internal.R.integer.config_longPressOnPowerBehavior);?? ????????????}?? ????????????switch?(mLongPressOnPowerBehavior)?{?? ????????????case?LONG_PRESS_POWER_NOTHING:?? ????????????????break;?? ????????????case?LONG_PRESS_POWER_GLOBAL_ACTIONS:?? ????????????????mPowerKeyHandled?=?true;?? ????????????????performHapticFeedbackLw(null,?HapticFeedbackConstants.LONG_PRESS,?false);?? ????????????????sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);?? ????????????????showGlobalActionsDialog();?? ????????????????break;?? ????????????case?LONG_PRESS_POWER_SHUT_OFF:?? ????????????????mPowerKeyHandled?=?true;?? ????????????????performHapticFeedbackLw(null,?HapticFeedbackConstants.LONG_PRESS,?false);?? ????????????????sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);?? ????????????????mWindowManagerFuncs.shutdown();?? ????????????????break;?? ????????????}?? ????????}?? ????};?? </span>??
方法?showGlobalActionsDialog() 就是控制關機選項對話框的彈出,點擊關機項控制代碼在
/frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java
<span?style="font-size:12px;">new?SinglePressAction(?? ????????????????????com.android.internal.R.drawable.ic_lock_power_off,?? ????????????????????R.string.global_action_power_off)?{?? ?? ????????????????public?void?onPress()?{?? ?????????????????????? ????????????????????mWindowManagerFuncs.shutdown();?? ????????????????}?? ?? ????????????????public?boolean?onLongPress()?{?? ????????????????????mWindowManagerFuncs.rebootSafeMode();?? ????????????????????return?true;?? ????????????????}?? ?? ????????????????public?boolean?showDuringKeyguard()?{?? ????????????????????return?true;?? ????????????????}?? ?? ????????????????public?boolean?showBeforeProvisioning()?{?? ????????????????????return?true;?? ????????????????}?? ????????????});?? </span>??
正常關機會調用此方法 mWindowManagerFuncs.shutdown(); 將彈出 “正在關機” 的彈出框, 現在我們需要在調用此方法時屏弊掉此對話框,同時播放動畫和音樂,該如何做昵? 下面一步一步跟蹤shutdown() 方法代碼,不難發現你最終會找到這個類?/frameworks/base/services/java/com/android/server/pm/ShutdownThread.java 看看這部分代碼
<span?style="font-size:12px;">synchronized?(mEnableAnimatingSync)?{?? ?? ????????????if(!mEnableAnimating)?{?? ????????????????sInstance.mPowerManager.setBacklightBrightness(PowerManager.BRIGHTNESS_DIM);?? ????????????}?else?{?? ????????????????if?(mShutOffAnimation)?{?? ????????????????????Log.e(TAG,?"mIBootAnim.isCustBootAnim()?is?true");?? ????????????????????bootanimCust();?? ????????????????}?else?{?? ????????????????????pd?=?new?ProgressDialog(context);?? ????????????????????pd.setTitle(context.getText(com.android.internal.R.string.power_off));?? ????????????????????pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));?? ????????????????????pd.setIndeterminate(true);?? ????????????????????pd.setCancelable(false);?? ????????????????????pd.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);?? ?????????????????????? ????????????????????pd.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);?? ????????????????????pd.show();?? ????????????????}?? ????????????????sInstance.mHandler.postDelayed(mDelayDim,?screenTurnOffTime);??? ????????????}?? ????????}</span>??
很明顯 mShutOffAnimation 布爾變量是控制是否顯示關機動畫和默認“正在關機”彈出框的樞紐所在,當它為true時會播放事先放在/system/media/下的shutanimation.和shutaudio資源,而為false時,將會彈出默認“正在關機”對話框,所以此時,要想播放動畫我們只需要保證mShutOffAnimation = true就成了,那么這就好改了,可以直接在 此方法的前面默認加上?
<span?style="font-size:12px;">mShutOffAnimation?=?true;</span>??
就成了,然后可以編譯試試效果, 執行./makeMtk mm frameworks/base/services/java/ ?將會生成out/target/product/xxx/system/framework/services.jar , 最后通過adb push 到手機shell下 /system/framework目錄,重啟手機,再關機,如果不出意外的話相信此刻已經出現跡了!!?
總結
以上是生活随笔為你收集整理的MTK平台 Android4.0.3 定制关机动画的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。