需求:关机和重启按钮点击后,去掉正在关机的动画和tips,改为一张图片实现。
修改点
修改点如下:
涉及到的修改文件
修改:
\vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\globalactionsGlobalActionsDialogLite.java
新增:
\vendor\mediatek\proprietary\packages\apps\SystemUI\res\layout\dialog_fullscreen_tip.xml
\vendor\mediatek\proprietary\packages\apps\SystemUI\res\layout-land\dialog_fullscreen_tip.xml
\vendor\mediatek\proprietary\packages\apps\SystemUI\res\drawable-xxhdpi\reboot_fullscreen_port_bg.png
\vendor\mediatek\proprietary\packages\apps\SystemUI\res\drawable-xxhdpi\reboot_fullscreen_land_bg.png
备注:drawable 中的reboot_fullscreen_port_bg.png reboot_fullscreen_land_bg.png 图片以客户提供的横竖屏图片为准
实现效果如下
mtk Android12 关机、重启 全屏图片显示
代码分析
找到关机相关内容 GlobalActionsLayout.java ->GlobalActionsDialogLite.java->关机的实际操作位置:ShutDownAction
@VisibleForTesting
final class ShutDownAction extends SinglePressAction implements LongPressAction {
ShutDownAction() {
super(R.drawable.ic_lock_power_off,
R.string.global_action_power_off);
}
@Override
public boolean onLongPress() {
mUiEventLogger.log(GlobalActionsEvent.GA_SHUTDOWN_LONG_PRESS);
if (!mUserManager.hasUserRestriction(UserManager.DISALLOW_SAFE_BOOT)) {
// mWindowManagerFuncs.reboot(true);
return true;
}
return false;
}
@Override
public boolean showDuringKeyguard() {
return true;
}
@Override
public boolean showBeforeProvisioning() {
return true;
}
@Override
public void onPress() {
mUiEventLogger.log(GlobalActionsEvent.GA_SHUTDOWN_PRESS);
// shutdown by making sure radio and power are handled accordingly.
mWindowManagerFuncs.shutdown();
}
}
往里层追代码,如下:
- onLongPress()-》 mWindowManagerFuncs.reboot(true); 暂不分析,安全模式逻辑去了
- onPress()->mWindowManagerFuncs.shutdown()->
GlobalActionsComponent shutdown() ->Service shutdown 关机流程
->StatusBarManagerService.java -> reboot方法
retoot 相关源码如下:
/**
* Allows the status bar to reboot the device.
*/
@Override
public void reboot