#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};
}
}
+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)
{
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);
{
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");
+ }
+ /* -------------------------------------------------------------------------- */
}
// 清理资源
// 推送任务提醒通知
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);