From c437cb680fe50ac21a12246928f02a1c25d27db6 Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Fri, 27 Mar 2026 09:52:21 +0800 Subject: [PATCH] =?utf8?q?=E7=94=B5=E5=8E=8B=E8=BF=87=E4=BD=8E=E5=A2=9E?= =?utf8?q?=E5=8A=A0=E5=85=85=E7=94=B5=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wearable/ohos_startup/ohosfwk_startup.c | 28 ++++++++++ .../include/service/graphic_service_wrapper.h | 3 ++ .../service/src/graphic_service_wrapper.cpp | 51 +++++++++++++++++++ 3 files changed, 82 insertions(+) diff --git a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c index 4bb906c58..200138782 100644 --- a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c +++ b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c @@ -26,6 +26,10 @@ #include "battery_service.h" #endif +#ifdef ENABLE_HP4570 +#include "hp4570.h" +#endif + // int32_t user_get_random_bytes(uint32_t size, uint8_t *randnum) // { // return uapi_drv_cipher_trng_get_random_bytes(randnum, size); @@ -142,10 +146,33 @@ void ohos_show_bootup_logo(void) if(check_power_on_voltage()) { + #if defined(SUPPORT_BATTERY_SERVICE) + + extern uint8_t get_charge_stat(void); + if(!get_charge_stat()) + { + PRINT("low power, need charge\n"); + uapi_tcxo_delay_ms(1000); + mcu_poweroff(); + return; + } + + #ifdef ENABLE_HP4570 + hp4570n_init(HP4570N); + #endif //显示充电图片 + ShowGraphicChargingLogo(); + while(1) { + if(!get_charge_stat()) + { + PRINT("low power, need charge\n"); + uapi_tcxo_delay_ms(1000); + mcu_poweroff(); + return; + } #ifdef SUPPORT_POWER_MANAGER const power_display_svr_api_t *display_api = power_display_svr_get_api(); display_api->turn_on_screen(); @@ -159,6 +186,7 @@ void ohos_show_bootup_logo(void) else mcu_reset(); } + #endif } diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h b/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h index 002cc4bfd..056f8c914 100644 --- a/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h +++ b/code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h @@ -93,6 +93,9 @@ void GpuResetEnd(void); void ShowGraphicOTALogo(void); void HideGraphicOtaLogo(void); /* -------------------------------------------------------------------------- */ +void ShowGraphicChargingLogo(void); +void HideGraphicChargingLogo(void); +/* -------------------------------------------------------------------------- */ #ifdef __cplusplus }; diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp b/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp index 5438c52db..3ca55879a 100644 --- a/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp +++ b/code/sdk/middleware/services/gui/uikit/proprietary/src/service/src/graphic_service_wrapper.cpp @@ -54,6 +54,10 @@ extern "C" static OHOS::UIImageView *g_ota_logo = nullptr; static OHOS::ImageInfo *g_ota_imgInfo = nullptr; + static bool g_showChargingLogo = false; + static OHOS::UIImageView *g_charging_logo = nullptr; + static OHOS::ImageInfo *g_charging_imgInfo = nullptr; + static uint32_t *g_boot_animation_task_handle = NULL; static OHOS::UIViewGroup *group = nullptr; @@ -144,6 +148,12 @@ extern "C" #else #define IMAGE_OPEN_LOGO_PATH "/system/FOOING_LOGO.bin" #endif + + #ifdef SINGLE_USER_PARTITION + #define IMAGE_CHARGING_LOGO_PATH "/user/res/charge/20.bin" + #else + #define IMAGE_CHARGING_LOGO_PATH "/res/charge/20.bin" + #endif #else // 默认通用Logo @@ -502,6 +512,25 @@ extern "C" }); } + void HideGraphicChargingLogo(void) + { + if (!g_showChargingLogo) { + return; + } + g_showChargingLogo = false; + GraphicService::GetInstance()->PostGraphicEvent( + [] + { + if (g_charging_logo != nullptr) { + OHOS::RootView::GetInstance()->Remove(g_charging_logo); + delete g_charging_logo; + g_charging_logo = nullptr; + OHOS::ImageCacheManager::GetInstance().UnloadSingleRes(IMAGE_CHARGING_LOGO_PATH); + g_charging_imgInfo = nullptr; + } + }); + } + static void boot_animation_task(void *arg) { unused(arg); @@ -514,6 +543,7 @@ extern "C" } HideGraphicLogo(); HideGraphicOtaLogo(); + HideGraphicChargingLogo(); OHOS::GraphicEventHandler::GetInstance()->PostGraphicEvent( [] { @@ -576,6 +606,27 @@ extern "C" LOS_Msleep(500); } + void ShowGraphicChargingLogo(void) + { + if (g_showChargingLogo) { + return; + } + g_showChargingLogo = true; + g_charging_logo = new OHOS::UIImageView(); + g_charging_logo->SetPosition(0, 0, OHOS::Screen::GetInstance().GetWidth(), OHOS::Screen::GetInstance().GetHeight()); + g_charging_logo->SetAutoEnable(false); + g_charging_logo->SetResizeMode(OHOS::UIImageView::CENTER); + g_charging_imgInfo = OHOS::ImageCacheManager::GetInstance().LoadSingleRes(IMAGE_CHARGING_LOGO_PATH); + g_charging_logo->SetSrc(g_charging_imgInfo); + GraphicService::GetInstance()->PostGraphicEvent( + [] + { + OHOS::RootView::GetInstance()->Add(g_charging_logo); + OHOS::RootView::GetInstance()->Invalidate(); + }); + LOS_Msleep(500); + } + //开机动画初始化 void boot_animation_init_deinit(void) { -- 2.17.1