From 861161527fd691fdad860d8b9e3f99db4f8ca27a Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Tue, 23 Sep 2025 22:18:11 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E7=A8=8B=E7=9B=B8?= =?utf8?q?=E5=85=B3=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=BE=85?= =?utf8?q?=E7=94=A8at=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/include/uiservice/ui_service.h | 1 + .../nativeui/uiservice/src/ui_service.cpp | 8 +++ code/sdk/zhihui/leiniao/imsl_ln/ln_api.c | 6 -- code/sdk/zhihui/leiniao/imsl_ln/ln_api.h | 2 - .../zhihui/leiniao/imsl_ln/ln_api_schedule.c | 69 +++++++++++++++++-- .../leiniao/ln_api_cpp/ln_api_interface.cpp | 17 ++++- .../leiniao/ln_api_cpp/ln_api_interface.h | 2 + 7 files changed, 91 insertions(+), 14 deletions(-) diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h b/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h index d5a13b1a9..e944c4648 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h @@ -51,6 +51,7 @@ typedef enum { UI_OTA_UPDATE, /* -------------------------------------------------------------------------- */ HANDLE_JUMP_OTA_VIEW, //处理跳转ota界面 + HAND_SCHEDULE_REMINDER_NOTIFY, // 日程提醒通知 MAX_NUM_HANDLER, } UiServiceMsgId; diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp index 0dd70dfb9..187791100 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp @@ -85,11 +85,13 @@ typedef struct // 消息处理程序的函数原型 static void HandleJumpOtaView(Request *request); +static void HandScheduleReminderNotify(Request *request); // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头) MsgHandlerEntry msgHandlers[] = { {HANDLE_JUMP_OTA_VIEW, HandleJumpOtaView}, + {HAND_SCHEDULE_REMINDER_NOTIFY,HandScheduleReminderNotify} }; /* -------------------------------------------------------------------------- */ void ScreenTurnOn(int32_t timeout) @@ -296,6 +298,12 @@ void HandleJumpOtaView(Request *request) std::bind(&OHOS::OtaModel::CheckOtaResult,OHOS::OtaModel::GetInstance(),status)); } } + +void HandScheduleReminderNotify(Request *request) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleJumpOtaView msg_id = %d",request->msgId); + int status = *(int *)request->data; +} /* -------------------------------------------------------------------------- */ #ifdef __cplusplus } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c index fcce80a25..0bc3bcf3e 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c @@ -210,12 +210,6 @@ LnCharacterConfig uapi_ln_get_character_config(void) return g_ln_character_config; } -/* 获取日程提醒信息 */ -ScheduleReminder uapi_ln_get_schedule_reminder(void) -{ - return g_schedule_reminder; -} - /* 自适应申请HttpClient缓冲(保证header>=2048),失败则逐步扩容重试 */ HTTPC_RESULT ln_http_prepare_auto(HttpClientData *clientData, int header_size, int resp_size) { diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h index a2b2b88a9..bb8c58f4e 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h @@ -206,8 +206,6 @@ void uapi_ln_set_device_bound(int val); const char *uapi_ln_get_user_id(void); /* 获取设备角色配置 */ LnCharacterConfig uapi_ln_get_character_config(void); -/* 获取日程提醒信息 */ -ScheduleReminder uapi_ln_get_schedule_reminder(void); /* ============================== 共享全局状态(跨文件) ============================== */ extern char *g_device_token; diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c index 343da38a7..5b4fe5cd5 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c @@ -10,23 +10,57 @@ ScheduleReminderConfig g_schedule_reminder_config = {0}; // 动态字符串工具 static char *ln_strdup_s(const char *src) { - if (src == NULL) src = ""; + if (src == NULL) + src = ""; size_t len = strlen(src); char *p = (char *)malloc(len + 1); - if (!p) return NULL; + if (!p) + return NULL; memcpy(p, src, len + 1); return p; } static void ln_assign_dup(char **dst, const char *src) { - if (!dst) return; + if (!dst) + return; char *newp = ln_strdup_s(src); - if (!newp) return; - if (*dst) free(*dst); + if (!newp) + return; + if (*dst) + free(*dst); *dst = newp; } +// 在 ln_api_schedule.c +void ln_clear_schedule_reminder(void) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SCHEDULE_REMINDER] clear schedule reminder\n"); + if (g_schedule_reminder.deviceId) + { + free(g_schedule_reminder.deviceId); + g_schedule_reminder.deviceId = NULL; + } + if (g_schedule_reminder.scheduleName) + { + free(g_schedule_reminder.scheduleName); + g_schedule_reminder.scheduleName = NULL; + } + if (g_schedule_reminder.reminderContent) + { + free(g_schedule_reminder.reminderContent); + g_schedule_reminder.reminderContent = NULL; + } + if (g_schedule_reminder.reminderAudioUrl) + { + free(g_schedule_reminder.reminderAudioUrl); + g_schedule_reminder.reminderAudioUrl = NULL; + } + g_schedule_reminder.scheduleId = 0; + g_schedule_reminder.enableVoice = 0; + g_schedule_reminder.enableVibration = 0; +} + /* 解析日程提醒信息 */ void ln_parse_schedule_reminder(const char *json_buf, int json_len) { @@ -110,9 +144,34 @@ void ln_parse_schedule_reminder(const char *json_buf, int json_len) printf(" enableVoice: %d\n", g_schedule_reminder.enableVoice); printf(" enableVibration: %d\n", g_schedule_reminder.enableVibration); + // 推送文本和日程提醒内容数据给ui + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SCHEDULE_REMINDER] push text and schedule reminder content to ui\n"); + push_schedule_reminder_notification(g_schedule_reminder.scheduleName,g_schedule_reminder.reminderContent); + + // 震动 + if (g_schedule_reminder.enableVibration) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] vibration:执行震动\n"); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] vibration:不执行震动\n"); + } + + // 下载音频并播放 + if (g_schedule_reminder.reminderAudioUrl) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] download audio:执行下载\n"); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] download audio:不执行下载\n"); + } + // 清理资源 cJSON_Delete(root); free(text); + ln_clear_schedule_reminder(); } /* 解析日程提醒配置JSON并保存到全局结构体 */ diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp index f0d126f53..60592dd72 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp @@ -44,7 +44,7 @@ int get_is_ln_get_device_token_success(void) void push_ota_status(int status) { int data = status; - SendMsgToUIService(HANDLE_JUMP_OTA_VIEW, status, &data, sizeof(data)); + SendMsgToUIService(HANDLE_JUMP_OTA_VIEW, 0, &data, sizeof(data)); } // 获取OTA升级进度 @@ -60,6 +60,21 @@ void do_restore_factory_setting(void) { OHOS::ThunderBirdModel::GetInstance()->restore_factory_settings(); } + +// 推送日程提醒通知 +void push_schedule_reminder_notification(const char *title, const char *content) +{ + // 打开屏幕,避免通知被遮挡(如需要) + ScreenTurnOn(5); + + // 组装简易数据载荷:标题+内容(若 UI 端需要更复杂结构,可定义专用 struct) + // 这里直接传两段以'\n'拼接的字符串给 UI,UI 再自行拆分。 + char payload[384] = {0}; + printf("title:%s,content%s",title,content); + snprintf(payload, sizeof(payload) - 1, "%s\n%s", title, content); + SendMsgToUIService(HAND_SCHEDULE_REMINDER_NOTIFY, 0,(void *)payload, (int32_t)strlen(payload)); +} + #ifdef __cplusplus }; #endif \ No newline at end of file diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h index f72ab626b..ee3cba185 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h @@ -40,6 +40,8 @@ void push_ota_progress(int progress); //恢复出厂操作 void do_restore_factory_setting(void); +// 推送日程提醒通知 +void push_schedule_reminder_notification(const char *title, const char *content); #ifdef __cplusplus } -- 2.17.1