公司网站建设费用入什么费用,做游戏视频去哪个网站好,正规代加工项目,烟台 网站建设多少钱目录
#x1f4c2; 前言
AR 眼镜系统版本
开关机定制
1. #x1f531; 技术方案
1.1 技术方案概述
1.2 实现方案
1#xff09;开机 Logo
2#xff09;开机音效
3#xff09;开机动画
4#xff09;关机动画
5#xff09;关机弹窗
2. #x1f4a0; 开机 Logo…
目录 前言
AR 眼镜系统版本
开关机定制
1. 技术方案
1.1 技术方案概述
1.2 实现方案
1开机 Logo
2开机音效
3开机动画
4关机动画
5关机弹窗
2. 开机 Logo
2.1 使用原厂烧机工具验证
2.2 定制开机 Logo 文件
3. ⚛️ 关机弹窗
3.1 长按电源键关机时序图
3.2 关机弹窗 UI 定制
步骤一在 ./frameworks/base/core/res/res/values/config.xml 文件中增删弹窗内选项
步骤二在 ./frameworks/base/core/res/res/layout/global_actions_item.xml 文件调整界面 UI
步骤三为关机/重启使用的 SinglePressAction 增加 Hover 前后的图片替换逻辑
3.3 定制点击关机/重启后的功能逻辑
步骤一在 ShutdownThread 文件的 shutdownInner 方法中定制关机逻辑
步骤二在 ShutdownThread 文件的 beginShutdownSequence 方法中定制关机过程的 UIAggShutdownDialog
4. ✅ 小结 前言
AR 眼镜系统版本 W517 Android9。
开关机定制 开关机定制主要包括开机 Logo、开机音效、开机动画、关机动画、关机弹窗下面我们主要针对如上五部分进行定制。 1. 技术方案
1.1 技术方案概述 开机 Logo 主要是 Logo 文件替换对于开机音效、开机动画以及关机动画主要是将相应文件内置到对应位置即可而对于关机弹窗是需要定制长按电源键的关机弹窗流程和UI修改的会相对复杂一些。
1.2 实现方案
1开机 Logo 先使用原厂烧机工具验证在如下目录替换 Logo 文件和 fastboot 文件后烧机验证是否生效ResearchDownload_R25.21.1401\Bin\ImageFiles\_DownloadFiles2EC4_1153FD4_0\ 将 Logo 文件放置到如下位置vendor\sprd\release\IDH\uws6151_1h10_gofu-userdebug-native\W517_1h10_GOFU\unisoc_HWVGA_480_640.bmp 以及 vendor\sprd\release\IDH\uws6151_1h10_gofu-user-native\W517_1h10_GOFU\unisoc_HWVGA_480_640.bmp 将 fastboot 使用的 Logo 文件放置到如下位置vendor\sprd\release\IDH\uws6151_1h10_gofu-userdebug-native\W517_1h10_GOFU\unisoc_HWVGA_480_640.bmp(1) 以及 vendor\sprd\release\IDH\uws6151_1h10_gofu-user-native\W517_1h10_GOFU\unisoc_HWVGA_480_640.bmp(1)。
2开机音效 内置 bootsound.mp3将 bootsound.mp3 文件放在如下路径device\sprd\sharkl5\uws6151_1h10_go\ 配置烧机时将文件内置到整机在 device\sprd\sharkl5\uws6151_1h10_go\uws6151_1h10_gofu.mk 文件中增加如下内容PRODUCT_COPY_FILES $(BOARDDIR)/bootsound.mp3:system/media/bootsound.mp3。 由于此部分相对简单所以后文不再单独章节介绍。
3开机动画 制作 bootanimation.zip本人在此文章有详细介绍这里就不再赘述了Android 自定义开机动画_rk3568更换开机动画-CSDN博客 内置 bootanimation.zip将 bootanimation.zip 文件放在如下路径device\sprd\sharkl5\uws6151_1h10_go\ 配置烧机时将文件内置到整机在 device\sprd\sharkl5\uws6151_1h10_go\uws6151_1h10_gofu.mk 文件中增加如下内容PRODUCT_COPY_FILES $(BOARDDIR)/bootanimation.zip:system/media/bootanimation.zip。 由于此部分相对简单所以后文不再单独章节介绍。
4关机动画 与开机动画的制作与定制基本完全一样将 bootanimation.zip 改为 shutdownanimation.zip 即可。 制作 shutdownanimation.zip本人在此文章有详细介绍这里就不再赘述了Android 自定义开机动画_rk3568更换开机动画-CSDN博客 内置 shutdownanimation.zip将 shutdownanimation.zip 文件放在如下路径device\sprd\sharkl5\uws6151_1h10_go\ 配置烧机时将文件内置到整机在 device\sprd\sharkl5\uws6151_1h10_go\uws6151_1h10_gofu.mk 文件中增加如下内容PRODUCT_COPY_FILES $(BOARDDIR)/bootanimation.zip:system/media/shutdownanimation.zip。 由于此部分相对简单所以后文不再单独章节介绍。
5关机弹窗 梳理长按电源键关机弹窗逻辑从 PhoneWindowMananger 按键响应 power 键长按事件到 SystemUI 弹出关机界面 dialog 的流程。Android 原生的关机界面有两种一种是 LegacyGlobalActions 中的 dialog另一种是 SystemUI 中的 GlobalActionsDialog常规情况下默认是弹出 SystemUI 中的关机界面当 SystemUI 没有正常工作时才会弹出 LegacyGlobalActions 中的关机界面本文我们分析正常情况 SystemUI 弹出的 GlobalActionsDialog 关机弹窗 UI 定制可在 ./frameworks/base/core/res/res/values/config.xml 文件中增删弹窗内选项也可在 ./frameworks/base/core/res/res/layout/global_actions_item.xml 文件中调整界面 UI 等 定制点击关机/重启后的功能逻辑关机/重启时可显示厂商的定制化 UI。 2. 开机 Logo
2.1 使用原厂烧机工具验证 替换 unisoc_HWVGA_480_640.bmp Logo 文件以及 unisoc_HWVGA_480_640.bmp(1) fastboot 文件烧机验证是否生效。 2.2 定制开机 Logo 文件
替换 Logo 文件和 fastboot 文件。 3. ⚛️ 关机弹窗
3.1 长按电源键关机时序图 3.2 关机弹窗 UI 定制
步骤一在 ./frameworks/base/core/res/res/values/config.xml 文件中增删弹窗内选项 string-array translatablefalse nameconfig_globalActionsListitempower/itemitemrestart/item
!-- // Agg patch--
!-- // Add by agg 2024-03-07--
!-- itemlockdown/item--
!-- itemlogout/item--
!-- itembugreport/item--
!-- itemscreenshot/item--
!-- // Agg patch end--/string-array 只保留关机和重启选项。
步骤二在 ./frameworks/base/core/res/res/layout/global_actions_item.xml 文件调整界面 UI 步骤三为关机/重启使用的 SinglePressAction 增加 Hover 前后的图片替换逻辑 ./frameworks/base/core/java/com/android/internal/globalactions/SinglePressAction.java
v.setOnHoverListener((view, event) - {if (event.getAction() MotionEvent.ACTION_HOVER_ENTER) {view.setBackgroundResource(R.drawable.ic_power_off_restart_bg_foc);AnimationUtils.getInstance().selectItemAnimator(view);} else if (event.getAction() MotionEvent.ACTION_HOVER_EXIT) {AnimationUtils.getInstance().unSelectItemAnimator(view);view.setBackgroundResource(R.drawable.ic_power_off_restart_bg_nor);}return false;
});
3.3 定制点击关机/重启后的功能逻辑 用户点击关机时序图如下 步骤一在 ShutdownThread 文件的 shutdownInner 方法中定制关机逻辑 private static void shutdownInner(final Context context, boolean confirm) {// ShutdownThread is called from many places, so best to verify here that the context passed// in is themed.context.assertRuntimeOverlayThemable();// ensure that only one thread is trying to power down.// any additional calls are just returnedsynchronized (sIsStartedGuard) {if (sIsStarted) {Log.d(TAG, Request to shutdown already running, returning.);return;}}final int longPressBehavior context.getResources().getInteger(com.android.internal.R.integer.config_longPressOnPowerBehavior);final int resourceId mRebootSafeMode? com.android.internal.R.string.reboot_safemode_confirm/*UNISOC bug 908624,add confirm dialog.*/: (mReboot? com.android.internal.R.string.reboot_device_confirm/*UNISOC bug 908624,add confirm dialog.*/: (longPressBehavior 2? com.android.internal.R.string.shutdown_confirm_question: com.android.internal.R.string.shutdown_confirm));Log.d(TAG, Notifying thread to start shutdown longPressBehavior longPressBehavior);// Agg patch// Add by agg 2024-05-22beginShutdownSequence(context);// Agg patch end
// if (confirm) {
// final CloseDialogReceiver closer new CloseDialogReceiver(context);
// if (sConfirmDialog ! null) {
// sConfirmDialog.dismiss();
// }
// sConfirmDialog new AlertDialog.Builder(context)
// .setTitle(mRebootSafeMode
// ? com.android.internal.R.string.reboot_safemode_title
// /*UNISOC bug 908624*/
// :(mReboot
// ? com.android.internal.R.string.reboot_device_title
// /*UNISOC bug 908624*/
// : com.android.internal.R.string.power_off))
// .setMessage(resourceId)
// .setPositiveButton(com.android.internal.R.string.yes, new DialogInterface.OnClickListener() {
// public void onClick(DialogInterface dialog, int which) {
// beginShutdownSequence(context);
// }
// })
// .setNegativeButton(com.android.internal.R.string.no, null)
// .create();
// closer.dialog sConfirmDialog;
// sConfirmDialog.setOnDismissListener(closer);
// sConfirmDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
// sConfirmDialog.show();
// } else {
// beginShutdownSequence(context);
// }}
步骤二在 ShutdownThread 文件的 beginShutdownSequence 方法中定制关机过程的 UIAggShutdownDialog private static void beginShutdownSequence(Context context) {synchronized (sIsStartedGuard) {if (sIsStarted) {Log.d(TAG, Shutdown sequence already running, returning.);return;}sIsStarted true;}// SPRD:add for shutdownanimif (shutdownAnim.hasShutdownAnimation() !(mReason ! null mReason.startsWith(PowerManager.REBOOT_RECOVERY_UPDATE))) {shutdownAnim.playShutdownAnimation();} else {// MetaBounds patch// Add by tianbinbin 2024-07-30
// sInstance.mProgressDialog showShutdownDialog(context);MBShutdownDialog shutdownDialog new MBShutdownDialog(context);shutdownDialog.show();if (mReboot) {shutdownDialog.setMessage(context.getText(com.android.internal.R.string.reboot_to_reset_message));} else {shutdownDialog.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));}// MetaBounds patch end}4. ✅ 小结 对于开关机定制本文只是一个基础实现方案更多业务细节请参考产品逻辑去实现。 另外由于本人能力有限如有错误敬请批评指正谢谢。