MTK平台 Android4.0.3 定制关机动画
来源:互联网 发布:linux卸载firefox 编辑:程序博客网 时间:2024/05/19 12:40
实现效果是这样的,长按电源键弹出关机对话框,选择关机项将呈现关机动画和音乐直到正常关机完毕,下面说说具体思路及实现代码
找到长按电源键控制代码 /frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
private final Runnable mPowerLongPress = new Runnable() { public void run() { // The context isn't read 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; } } };
方法 showGlobalActionsDialog() 就是控制关机选项对话框的弹出,点击关机项控制代码在/frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java
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. mWindowManagerFuncs.shutdown(); } public boolean onLongPress() { mWindowManagerFuncs.rebootSafeMode(); return true; } public boolean showDuringKeyguard() { return true; } public boolean showBeforeProvisioning() { return true; } });
正常关机会调用此方法 mWindowManagerFuncs.shutdown(); 将弹出 “正在关机” 的弹出框, 现在我们需要在调用此方法时屏弊掉此对话框,同时播放动画和音乐,该如何做昵? 下面一步一步跟踪shutdown() 方法代码,不难发现你最终会找到这个类 /frameworks/base/services/java/com/android/server/pm/ShutdownThread.java 看看这部分代码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); /* To fix video+UI+blur flick issue */ pd.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); pd.show(); } sInstance.mHandler.postDelayed(mDelayDim, screenTurnOffTime); } }
很明显 mShutOffAnimation 布尔变量是控制是否显示关机动画和默认“正在关机”弹出框的枢纽所在,当它为true时会播放事先放在/system/media/下的shutanimation.和shutaudio资源,而为false时,将会弹出默认“正在关机”对话框,所以此时,要想播放动画我们只需要保证mShutOffAnimation = true就成了,那么这就好改了,可以直接在 此方法的前面默认加上 mShutOffAnimation = true;
就成了,然后可以编译试试效果, 执行./makeMtk mm frameworks/base/services/java/ 将会生成out/target/product/xxx/system/framework/services.jar , 最后通过adb push 到手机shell下 /system/framework目录,重启手机,再关机,如果不出意外的话相信此刻已经出现迹了!! - MTK平台 Android4.0.3 定制关机动画
- MTK平台 Android4.0.3 定制关机动画
- MTK平台 Android4.0.3 定制关机动画
- MTK平台定制化
- android4.4 添加关机音乐关机动画
- MTK平台修改开机动画,开机logo
- MTK平台Android4.4 拍照默认图片格式修改
- 关于MTK平台第三方APK的定制方法
- 高通,mtk,展讯平台的定制集成
- Android4.0.3 修改 启动 动画
- Android4.0关机流程
- Android MTK平台最完备的开机动画修改教程
- Android MTK平台修改开机动画,开机logo
- Android MTK平台最完备的开机动画修改教程
- Android MTK平台修改开关机动画和开机logo
- mtk平台笔记--客制化开关机动画与铃声
- Android MTK平台修改开关机动画和开机logo【转】
- Android MTK选择重启,可以完整播放完关机动画
- java中压缩图片的代码辅助类
- [杂项]放大150倍!拆解两款“熔铸”工艺的微型有源晶振(非石英晶片切割工艺) 好复杂
- Delphi 如何在Image图片上添加文字
- 详解 Android 的 Activity 组件
- ipv6
- MTK平台 Android4.0.3 定制关机动画
- 服务器与数据存储复习
- 黑马程序员--关于黑马基础测试题IP排序的问题
- Jquery Mobile插件的使用-页面的预加载和缓存
- c# 多线程---生产者和消费者(二)
- APK签名之keytool生成keystore和jarsigner签名apk
- 学习业务流程图绘制方法(上)
- Python time 模块中sleep的使用说明
- 如何优化你的JS代码