From: luozheng <1732036298@qq.com> Date: Wed, 15 Oct 2025 04:12:42 +0000 (+0800) Subject: ln: X-Git-Tag: V1.0.9_20251128_194606_LN~249^2~1 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=c879a24046457585fee828cf00bbed90d0df7b51;p=mirrors%2FFD230.git ln: 1.解决日程提醒没用语音播放问题 2.提醒事件震动处理不再由ui层控制 3.进入提醒界面降低帧率,退出还原,提高提醒mp3播放成功率 --- diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp index f8058237e..361b1f2f8 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp @@ -1822,7 +1822,7 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title: %s", title ? title : "NULL"); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Content: %s", content ? content : "NULL"); // 震动提醒 - custom_VibratorFunc_int(0); + // custom_VibratorFunc_int(0); // 示例:通过图形服务显示提醒 if (title && content) { // 可以在这里调用UI相关的显示逻辑 @@ -1854,7 +1854,7 @@ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleTaskReminder"); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScheduleName: %s", scheduleName ? scheduleName : "NULL"); // 震动提醒 - custom_VibratorFunc_int(0); + // custom_VibratorFunc_int(0); // 这里可以添加具体的任务提醒处理逻辑 // 例如:显示任务提醒界面、播放提醒音、更新任务列表等 diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp index d1b7856f9..fb04c03a7 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp @@ -562,6 +562,7 @@ namespace OHOS //通知界面-关闭通知 case ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER://事项提醒界面-关闭通知 //回原界面 + ThunderBirdModel::GetInstance()->HighFrequence(); ThunderBirdMainView::GetInstance()->GoBackToPreviousView(); break; case ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_DIALOGUE_NOT_ENOUGH://提醒界面-对话不足 diff --git a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp index c14ab40e9..59e8fcd8b 100644 --- a/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp +++ b/code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp @@ -148,6 +148,7 @@ namespace OHOS } case THUNDERBIRD_REMINDERVIEW_TASK_REMINDER: { + ThunderBirdModel::GetInstance()->LowFrequence(); if (RemindIcon) { // 图标位置:整体居中的左侧 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 ef89debe9..eb16557ed 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c @@ -4,6 +4,8 @@ #include "cJSON.h" #include "ln_api.h" #include "vibrator_service.h" +#include "wearable_log.h" +#include "ai_media.h" ScheduleReminder g_schedule_reminder = {0}; ScheduleReminderConfig g_schedule_reminder_config = {0}; @@ -71,6 +73,27 @@ void ln_clear_schedule_reminder_config(void) } } +static void play_mp3_audio_from_file(char *file_path) +{ + FILE *file = fopen(file_path, "rb"); + if (file == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SCHEDULE_REMINDER] 无法打开文件: %s", file_path); + return; + } + const size_t CHUNK_SIZE = 1024; // 1K 分块大小 + uint8_t data[CHUNK_SIZE]; + size_t data_len = 0; + while (1) { + size_t read_len = fread(data, 1, CHUNK_SIZE, file); + if (read_len == 0) + break; + data_len += read_len; + AI_SendAudioDataToQueue(data, read_len); + } + fclose(file); +} + /* 解析日程提醒信息 */ void ln_parse_schedule_reminder(const char *json_buf, int json_len) { @@ -154,6 +177,7 @@ 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); + #if 0 // 推送文本和日程提醒内容数据给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); @@ -168,25 +192,74 @@ void ln_parse_schedule_reminder(const char *json_buf, int json_len) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] vibration:不执行震动\n"); } + #endif //是否启用语音 if (g_schedule_reminder.enableVoice) { // 目前是立即提醒的所以直接下载并播放 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] download audio:执行下载并播放\n"); - int ret = uapi_ln_download_with_retry(g_schedule_reminder.reminderAudioUrl, LN_REMINDER_AUDIO_FILE, 3); + int ret = uapi_ln_download_with_retry(g_schedule_reminder.reminderAudioUrl, LN_REMINDER_AUDIO_FILE, 2); if (ret == ERRCODE_SUCC) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] download audio:下载成功\n"); + // 推送文本和日程提醒内容数据给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"); + custom_VibratorFunc_int(0); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] vibration:不执行震动\n"); + } + // 从文件中读取数据放到音频流内 + play_mp3_audio_from_file(LN_REMINDER_AUDIO_FILE); } else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] download audio:下载失败\n"); + /* -------------------------------------------------------------------------- */ + // 推送文本和日程提醒内容数据给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"); + custom_VibratorFunc_int(0); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] vibration:不执行震动\n"); + } + /* -------------------------------------------------------------------------- */ } } else { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] download audio:不执行下载\n"); + /* -------------------------------------------------------------------------- */ + // 推送文本和日程提醒内容数据给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"); + custom_VibratorFunc_int(0); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[JSON_PARSE] vibration:不执行震动\n"); + } + /* -------------------------------------------------------------------------- */ } // 清理资源 @@ -253,6 +326,8 @@ void ln_parse_schedule_reminder_config(const char *json_buf, int json_len) // 推送任务提醒通知 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[SCHEDULE_REMINDER_CONFIG] push task reminder notification\n"); push_task_reminder_notification(g_schedule_reminder_config.scheduleName); + //震动 + custom_VibratorFunc_int(0); // 清理资源 cJSON_Delete(root);