添加4GAI和蓝牙AI切换逻辑,目前测试4GAI出现一句话识别不全,还有识别不了,易死机情况 1871/1 1871/head 1874/target/1 1875/target/1
authorluozheng <1732036298@qq.com>
Fri, 20 Jun 2025 02:38:28 +0000 (10:38 +0800)
committerluozheng <1732036298@qq.com>
Fri, 20 Jun 2025 02:38:28 +0000 (10:38 +0800)
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoicePresenter.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ws.h

index 9ffb8cb..a2ca19c 100644 (file)
@@ -1216,7 +1216,7 @@ namespace OHOS
         // 检查定时器是否存在
         if (g_ai4g_is_suc_connected_Handle != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::stop_ai_isready_timer");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::stop_ai4g_connect_timer");
             osTimerStop(g_ai4g_is_suc_connected_Handle);
             // 删除定时器并置为 nullptr
             osStatus_t ret = osTimerDelete(g_ai4g_is_suc_connected_Handle);
@@ -1298,7 +1298,7 @@ namespace OHOS
         // 检查定时器是否存在
         if (g_ai4g_is_start_tts_play_Handle != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::stop_ai_isready_timer");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AiVoiceModel::stop_ai4g_tts_play_timer");
             osTimerStop(g_ai4g_is_start_tts_play_Handle);
             // 删除定时器并置为 nullptr
             osStatus_t ret = osTimerDelete(g_ai4g_is_start_tts_play_Handle);
index 33f1135..23835cd 100644 (file)
@@ -131,6 +131,7 @@ namespace OHOS
         model->stop_ai4g_connect_timer();
         model->stop_ai4g_tts_play_timer();
         remove_4GAI_vote(); // 移除4g投票
+        dinit_ai_task();
 
         uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_SLOW);
     }
@@ -298,10 +299,10 @@ namespace OHOS
         switch (hideView)
         {
         case AIVOICE_STARTCHAT_VIEWID:
-            if (model->GetAI_4G_state() == true || model->GetAI_BT_state() == true)
-            {
-                model->QuerySelectedAiModelIsConnect(); /*查询用户选择的AI模型是否已经连接*/
-            }
+            // if (model->GetAI_4G_state() == true || model->GetAI_BT_state() == true)
+            // {
+            //     model->QuerySelectedAiModelIsConnect(); /*查询用户选择的AI模型是否已经连接*/
+            // }
             if (showView == AIVOICE_LISTENING_VIEWID)
             {
                 model->StartListenAndRecordingUserQuestion();
@@ -340,6 +341,10 @@ namespace OHOS
             {
                 model->StartListenAndRecordingUserQuestion();
             }
+            else if (showView == AIVOICE_AIMODE_CONNECTING)
+            {
+                model->start_ai_isready_timer(); /*开启一个查询AI模型是否连接成功定时器*/
+            }
             break;
 
         default:
@@ -403,7 +408,6 @@ namespace OHOS
                 if (model->GetSelect4gorbt() == AI_SELECT_4G)
                 {
                     uapi_start_asr();
-                    usleep(50000);
                     ChangeViewAndLogicOperator(AIVOICE_RETURN_RESULT_TEXT_VIEWID, AIVOICE_AIMODE_CONNECTING);
                     return true;
                 }
@@ -473,6 +477,7 @@ namespace OHOS
                 }
                 else
                 {
+                    model->QuerySelectedAiModelIsConnect();
                     ChangeViewAndLogicOperator(AIVOICE_STARTCHAT_VIEWID, AIVOICE_AIMODE_CONNECTING); // LOADING
                 }
             }
@@ -480,6 +485,7 @@ namespace OHOS
             {
                 // 通过蓝牙连接APP调用大模型
                 model->SetSelect4gorbt(AI_SELECT_BT);
+                model->QuerySelectedAiModelIsConnect();
                 ChangeViewAndLogicOperator(AIVOICE_STARTCHAT_VIEWID, AIVOICE_AIMODE_CONNECTING); // LOADING
             }
             else // 4.两者连接都异常
@@ -515,6 +521,7 @@ namespace OHOS
         else if (viewId == AIVOICE_SELECT_VIEW_BUTTONBT_VIEW_ID) // 如果点击的是蓝牙连接方式
         {
             model->SetSelect4gorbt(AI_SELECT_BT);
+            dinit_ai_task();
             model->QuerySelectedAiModelIsConnect(); /*查询用户选择的AI模型是否已经连接*/
             ChangeViewAndLogicOperator(model->GetCurView(), AIVOICE_AIMODE_CONNECTING);
         }
index f3dc037..5afbc9a 100644 (file)
@@ -1135,6 +1135,7 @@ void uapi_start_asr(void)
 {
 //    bool state = true;
 //     SendMsgToUIService(UI_AI_JUMP_TO_LISTENING_VIEW, 0, &state, sizeof(bool));
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"查询uapi_start_asr是否可用\n");
 
     char *jsonString = "{\"header\":{\"event\":\"StartTranscription\",\"trace_id\": \
       \"3fa6b9e6a30b407ea38ad7ae69e6c291\"},\"payload\":{\"format\":\"MP3\",\"sample_rate\":16000}}";
index 9ae2c7f..c08dcce 100644 (file)
@@ -11,6 +11,7 @@ void uapi_start_asr(void);
 void uapi_stop_asr(void);
 
 bool init_ai_task(void);
+bool dinit_ai_task(void);
 
 void uapi_start_tts_single_txt(char *buf);