ln:
authorluozheng <1732036298@qq.com>
Wed, 15 Oct 2025 04:12:42 +0000 (12:12 +0800)
committerluozheng <1732036298@qq.com>
Wed, 15 Oct 2025 04:12:42 +0000 (12:12 +0800)
1.解决日程提醒没用语音播放问题
2.提醒事件震动处理不再由ui层控制
3.进入提醒界面降低帧率,退出还原,提高提醒mp3播放成功率

code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api_schedule.c

index f805823..361b1f2 100644 (file)
         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相关的显示逻辑
         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);
         // 这里可以添加具体的任务提醒处理逻辑
         // 例如:显示任务提醒界面、播放提醒音、更新任务列表等
         
index d1b7856..fb04c03 100644 (file)
@@ -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://提醒界面-对话不足
index c14ab40..59e8fcd 100644 (file)
@@ -148,6 +148,7 @@ namespace OHOS
         }
         case THUNDERBIRD_REMINDERVIEW_TASK_REMINDER:
         {
+            ThunderBirdModel::GetInstance()->LowFrequence();
             if (RemindIcon)
             {
                 // 图标位置:整体居中的左侧
index ef89deb..eb16557 100644 (file)
@@ -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);