From: luozheng <1732036298@qq.com> Date: Mon, 27 Oct 2025 09:26:56 +0000 (+0800) Subject: ln:解决表情下载过程中,如果来了表情下载命令,界面错误跳转到表情下载中,而后台还在下载表情bug X-Git-Tag: V1.0.9_20251128_194606_LN~165 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=f75bd1edb270342a99147384feef95c1508b34f3;p=mirrors%2FFD230.git ln:解决表情下载过程中,如果来了表情下载命令,界面错误跳转到表情下载中,而后台还在下载表情bug --- diff --git a/code/sdk/application/wearable/ln/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp b/code/sdk/application/wearable/ln/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp index fd8b533f6..f15750653 100644 --- a/code/sdk/application/wearable/ln/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp +++ b/code/sdk/application/wearable/ln/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp @@ -158,6 +158,28 @@ namespace OHOS deviceInfo += "设备iccid:" + std::string(uapi_ln_get_device_iccid()) + "\n"; deviceInfo += "设备version:" + std::string(uapi_ln_get_device_version()) + "\n"; deviceInfo += "设备model:" + std::string(uapi_ln_get_device_model()) + "\n"; + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "设备连接状态:%d", ln_ws_get_connection_state()); + switch ((int)ln_ws_get_connection_state()) { + case 0: + deviceInfo += "设备连接状态:未连接 " +std::to_string(ln_ws_get_connection_state()); + break; + case 1: + deviceInfo += "设备连接状态:连接中 " +std::to_string(ln_ws_get_connection_state()); + break; + case 2: + deviceInfo += "设备连接状态:连接成功 " +std::to_string(ln_ws_get_connection_state()); + break; + case 3: + deviceInfo += "设备连接状态:休眠状态 " +std::to_string(ln_ws_get_connection_state()); + break; + case 4: + deviceInfo += "设备连接状态:重连执行中 " +std::to_string(ln_ws_get_connection_state()); + break; + default: + deviceInfo += "设备连接状态:未知状态 " +std::to_string(ln_ws_get_connection_state()); + break; + } return deviceInfo; } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c index 094d34d70..b10d92c59 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c @@ -43,6 +43,7 @@ int g_ln_is_device_bound = 0; /* 设备绑定状态 */ char g_ln_device_user_id[64] = {0}; // 设备绑定用户ID static int g_ln_is_file_downloading = 0; // 是否正在下载文件 char g_ln_character_id[64] = {0}; // 角色ID +static int g_ln_file_download_type = LN_FILE_DOWNLOAD_TYPE_NONE; // 文件下载类型 /* 简单的字符串读写(以.bin形式读写原始字节,末尾补'\0')*/ static int ln_read_string_file(const char *file_path, char **out_str) @@ -389,6 +390,17 @@ int uapi_ln_is_file_downloading(void) return g_ln_is_file_downloading; } +/* 获取当前文件下载类型 */ +int uapi_ln_get_file_download_type(void) +{ + return g_ln_file_download_type; +} +/* 设置当前文件下载类型 */ +void uapi_ln_set_file_download_type(int type) +{ + g_ln_file_download_type = type; +} + /* 获取ota包大小 */ static int g_ln_ota_package_size = 0; int uapi_ln_get_ota_package_size(void) @@ -849,11 +861,15 @@ void ln_ws_process_message(const ws_data_msg_t *data_msg, ws_command_t type) // return; // } - const char *json_str = data_msg->raw_json; + const char *json_str = NULL; + if(data_msg->raw_json) + { + json_str = data_msg->raw_json; + } const char *message_id = data_msg->message_id; const char *cmd_str = data_msg->command_str; - printf("[WS] cmd=%d message_id=%s cmd_str=%s\n", (int)type, message_id ? message_id : "", cmd_str ? cmd_str : ""); + // printf("[WS] cmd=%d message_id=%s cmd_str=%s\n", (int)type, message_id ? message_id : "", cmd_str ? cmd_str : ""); switch (type) { @@ -1588,7 +1604,14 @@ static void ln_http_server_send_task(void const *arg) else if (mail.cmd == LN_HTTP_SERVICE_CMD_SCHEDULE_REMINDER) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_SCHEDULE_REMINDER] 日程提醒"); - ln_parse_schedule_reminder(mail.data, mail.len); + if(uapi_ln_get_file_download_type() == LN_FILE_DOWNLOAD_TYPE_NONE && uapi_ln_is_file_downloading() == 0) + { + ln_parse_schedule_reminder(mail.data, mail.len); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_SCHEDULE_REMINDER] 文件下载类型:%d,文件下载状态:%d,跳过处理",uapi_ln_get_file_download_type(), uapi_ln_is_file_downloading()); + } } else if(mail.cmd == LN_HTTP_SERVICE_CMD_TIMELINE_GET_STATUS) { diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h index 242f0af52..f7bcd64ff 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.h @@ -199,6 +199,14 @@ typedef struct char *scheduleName; // 日程名称 } ScheduleReminderConfig; +/* 文件下载类型 */ +typedef enum +{ + LN_FILE_DOWNLOAD_TYPE_NONE = 0, /* 无下载 */ + LN_FILE_DOWNLOAD_TYPE_SCREEN_IMAGE = 1, /* 屏保下载 */ + LN_FILE_DOWNLOAD_TYPE_EMOJI = 2, /* 表情下载 */ +} LnFileDownloadType; + /* 初始化 LN HTTP 服务 */ errcode_t uapi_ln_http_server_init(void); /* 通用发送接口:向 LN HTTP 发送队列投递消息 */ @@ -233,6 +241,10 @@ char *uapi_ln_get_character_id(void); void uapi_ln_set_character_id(const char *character_id); //获取当前是否正在下载文件 int uapi_ln_is_file_downloading(void); +//获取当前文件下载类型,0:无下载,1:屏保下载,2:表情下载 +int uapi_ln_get_file_download_type(void); +//设置当前文件下载类型 +void uapi_ln_set_file_download_type(int type); /* 获取ota包大小 */ int uapi_ln_get_ota_package_size(void); /* 设置ota包大小 */ diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_device_info.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_device_info.c index 7d97a2488..5513c5eab 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_device_info.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_device_info.c @@ -126,6 +126,7 @@ void ln_download_screen_image(void) //如果本地有文件先删除文件 uapi_delete_files(LN_DEVICE_SCREEN_IMAGE_FILE); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保下载URL: %s, 保存路径: %s", url, save_path); + uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_SCREEN_IMAGE); int ret = uapi_ln_download_file_resume_with_retry(url, save_path, 5); if (ret == 0) { @@ -137,6 +138,8 @@ void ln_download_screen_image(void) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保下载失败"); push_download_fail_notification(DOWNLOAD_FILE_TYPE_SCREEN_IMAGE); } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保下载结束,ret=%d", ret); + uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_NONE); /* 一次性使用后释放 */ free(g_ln_pending_screen_image_url); g_ln_pending_screen_image_url = NULL; @@ -275,7 +278,15 @@ void ln_parse_character_config(const char *json_buf, int json_len) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DEVICE_CHARACTER] 屏保图片不为空,下载屏保图片"); /* 解析阶段先拷贝URL,避免稍后清理结构体后URL丢失 */ ln_set_pending_screen_image(g_ln_character_config.avatar_screen_image); - push_download_file_notification(DOWNLOAD_FILE_TYPE_SCREEN_IMAGE); + if(uapi_ln_get_file_download_type() == LN_FILE_DOWNLOAD_TYPE_NONE && uapi_ln_is_file_downloading() == 0) + { + push_download_file_notification(DOWNLOAD_FILE_TYPE_SCREEN_IMAGE); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_DOWNLOAD_SCREEN_IMAGE] 文件下载类型:%d,文件下载状态:%d,跳过处理",uapi_ln_get_file_download_type(), uapi_ln_is_file_downloading()); + } + // 改为无参发送:由接收线程读取全局配置并下载 //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_SCREEN_IMAGE, NULL, 0); } diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_emoji.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_emoji.c index 48dd484dc..9d0c53356 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_emoji.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_emoji.c @@ -499,6 +499,7 @@ static void ln_emoji_download(void *arg) void ln_start_emoji_download(void) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DOWNLOAD] 启动表情下载任务"); + uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_EMOJI); if (g_emoji_package.emojiCount <= 0 || !g_emoji_package.emojis) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DOWNLOAD] no emojis to download"); @@ -506,6 +507,7 @@ void ln_start_emoji_download(void) } // 下载表情 ln_emoji_download(&g_emoji_package); + uapi_ln_set_file_download_type(LN_FILE_DOWNLOAD_TYPE_NONE); } /* 解析下载表情命令JSON */ @@ -665,10 +667,16 @@ void ln_parse_download_emoji(const char *json_buf, int json_len) // 解析完成后启动下载任务(通过发送队列触发下载逻辑) // 说明:下载所需信息已填充到全局 g_emoji_package,触发命令无需携带负载 //通知ui切换slice下载表情 - push_download_file_notification(DOWNLOAD_FILE_TYPE_EMOJI); - //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_DOWNLOAD_EMOJI, NULL, 0); - - ln_ws_send_download_emoji_ack(g_emoji_package.characterId, g_emoji_package.eyesColor, g_emoji_package.eyesShape, true, "下载表情"); + if(uapi_ln_get_file_download_type() == LN_FILE_DOWNLOAD_TYPE_NONE && uapi_ln_is_file_downloading() == 0) + { + push_download_file_notification(DOWNLOAD_FILE_TYPE_EMOJI); + ln_ws_send_download_emoji_ack(g_emoji_package.characterId, g_emoji_package.eyesColor, g_emoji_package.eyesShape, true, "下载表情"); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[LN_HTTP_SERVICE_CMD_DOWNLOAD_EMOJI] 文件下载类型:%d,文件下载状态:%d,跳过处理",uapi_ln_get_file_download_type(), uapi_ln_is_file_downloading()); + ln_ws_send_download_emoji_ack(g_emoji_package.characterId, g_emoji_package.eyesColor, g_emoji_package.eyesShape, false, "已有文件正在下载中,跳过下载"); + } // 清理资源 cJSON_Delete(root); free(text);