WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "强制发送文本: %s (长度: %zu)",
segment.c_str(), segment.length());
uapi_start_tts_single_txt((char *)segment.c_str());
- LOS_Msleep(50);
+ LOS_Msleep(100);
// 发送后清空累积文本
accumulatedText.clear();
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "按标点发送分段: %s (长度: %zu)",
segment.c_str(), segment.length());
uapi_start_tts_single_txt((char *)segment.c_str());
- LOS_Msleep(50);
+ LOS_Msleep(100);
}
// 更新累积文本
{
if (view_->GetAiVoiceScrollView(AIVOICE_RETURN_RESULT_TEXT_VIEWID) && view_->GetAiVoiceScrollView(AIVOICE_RETURN_RESULT_TEXT_VIEWID)->IsVisible())
{
- start_ai4g_tts_play_timer(); // 开启一个定时器,用于播放tts音频
+ start_ai4g_tts_play_timer(); // 开启一个定时器,用于播放tts音频
if (!OHOS::AiVoiceModel::GetInstance().GetIsLimitDisplayed()) // 如果ai答案没有显示到极限了,就更新ai答案字符串
{
aiAnswerStr += str;
accumulatedText += str;
/* -------------------------------------------------------------------------- */
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "接受字的符串:%s", aiAnswerStr.c_str());
- SendMsgToUIService(UI_UPDATE_AI_ANSWER_STR, 0, nullptr, 0);
+ // SendMsgToUIService(UI_UPDATE_AI_ANSWER_STR, 0, nullptr, 0);
}
+ start_update_ai_answer_timer();
}
}
}
void AiVoiceModel::start_ai4g_tts_play_timer(uint32_t interval)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::start_ai4g_tts_play_timer");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::start_ai4g_tts_play_timer");
// AI4G_IS_START_TTS_PLAY_CNT = NUMBER_TEN;
/* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */
if (g_ai4g_is_start_tts_play_Handle != nullptr)
}
}
+ static osTimerId_t g_start_ai_answer_update_Handle = nullptr;
+ static constexpr const int8_t NUMBER_THREE = 3;
+ static int8_t START_UPDATE_AIANSWER_CNT = NUMBER_THREE;
+ static void AI4G_START_AI_ANSWER_CallbackProc(int data)
+ {
+ START_UPDATE_AIANSWER_CNT--;
+ if (START_UPDATE_AIANSWER_CNT <= 0)
+ {
+ AiVoiceModel::GetInstance().stop_update_ai_answer_timer();
+ }
+ else
+ {
+ AiVoiceModel::GetInstance().UpdateAiAnswerStr();
+ }
+ }
+
+ static void AI4G_START_AI_ANSWER_Callback(int data)
+ {
+ AI4G_START_AI_ANSWER_CallbackProc(data);
+ // GraphicService::GetInstance()->PostGraphicEvent(std::bind(AI4G_START_AI_ANSWER_CallbackProc, data));
+ }
+
+ void AiVoiceModel::start_update_ai_answer_timer(uint32_t interval)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::start_update_ai_answer_timer");
+ START_UPDATE_AIANSWER_CNT = NUMBER_THREE;
+ /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */
+ if (g_start_ai_answer_update_Handle != nullptr)
+ {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer already exists!!");
+ return;
+ }
+ /* --------------------------------- 2.创建定时器 -------------------------------- */
+ g_start_ai_answer_update_Handle = osTimerNew((osTimerFunc_t)AI4G_START_AI_ANSWER_Callback, osTimerPeriodic, nullptr, nullptr);
+ // 检查定时器创建是否成功
+ if (g_start_ai_answer_update_Handle == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Timer create failed!!");
+ return;
+ }
+ /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 ---------------------------- */
+ int tick = osMs2Tick(interval);
+ /* --------------------------------- 4.启动定时器 -------------------------------- */
+ osStatus_t ret = osTimerStart(g_start_ai_answer_update_Handle, tick);
+ /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 nullptr -------------------- */
+ if (ret != osOK)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret);
+ if (g_start_ai_answer_update_Handle != nullptr)
+ {
+ ret = osTimerDelete(g_start_ai_answer_update_Handle);
+ }
+ g_start_ai_answer_update_Handle = nullptr;
+ return;
+ }
+ return;
+ }
+
+ void AiVoiceModel::stop_update_ai_answer_timer(void)
+ {
+ if (g_start_ai_answer_update_Handle != nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stop_update_ai_answer_timer");
+ osTimerStop(g_start_ai_answer_update_Handle);
+ // 删除定时器并置为 nullptr
+ osStatus_t ret = osTimerDelete(g_start_ai_answer_update_Handle);
+ if (ret != osOK)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret);
+ }
+ g_start_ai_answer_update_Handle = nullptr;
+ START_UPDATE_AIANSWER_CNT = NUMBER_THREE;
+ }
+ }
+
// 设置选择的ai模型
void AiVoiceModel::SetSelectAiModel(int index)
{