UI_OTA_UPDATE,
/* -------------------------------------------------------------------------- */
HANDLE_JUMP_OTA_VIEW, //处理跳转ota界面
+ HAND_SCHEDULE_REMINDER_NOTIFY, // 日程提醒通知
MAX_NUM_HANDLER,
} UiServiceMsgId;
// 消息处理程序的函数原型
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)
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
}
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)
{
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;
// 动态字符串工具
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)
{
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并保存到全局结构体 */
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升级进度
{
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
//恢复出厂操作
void do_restore_factory_setting(void);
+// 推送日程提醒通知
+void push_schedule_reminder_notification(const char *title, const char *content);
#ifdef __cplusplus
}