修复未绑定到时处理错误bug
authorxue <2144439972@qq.com>
Fri, 5 Dec 2025 03:28:13 +0000 (11:28 +0800)
committerxue <2144439972@qq.com>
Fri, 5 Dec 2025 03:28:13 +0000 (11:28 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp

index 7c60d7b..efeb500 100644 (file)
@@ -155,7 +155,7 @@ namespace OHOS
         if (micIcon)
         {   
             micIcon->SetAutoEnable(false);
-            micIcon->SetPosition(16+62, 114+6, 24, 24);
+            micIcon->SetPosition(16+62, 114+9, 24, 24);
             micIcon->SetSrc("/user/res/voice.bin");
             micIcon->SetResizeMode(UIImageView::CONTAIN);
             micIcon->SetVisible(false);
index 956ce73..7959eb8 100644 (file)
@@ -1607,10 +1607,6 @@ extern "C" {
             {
                 if (init_falg == false) 
                 {
-                    // #if defined(SUPPORT_CAT1_SERVICE) || defined(SUPPORT_PPP_SERVICE)
-                    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandlePowerKey: restart_time_sync");
-                    // restart_time_sync();
-                    // #endif
                     cat1_gettime();
                     //发送获取绑定用户ID
                     do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_USER_ID, NULL, 0);
@@ -1618,39 +1614,42 @@ extern "C" {
                     // 获取一下OTA 是否有最新版本
 
                     // 需要是绑定状态才更新
-                    if(bind_status == true)
-                    {
+                    // if(bind_status == true)
+                    // {
                         ota_update_boot();
-                    }   
-                    ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
-                    if (view) {
-                        int16_t currentView = view->GetCurrentView();
-                        int16_t currentSubView = view->GetCurrentSubView();
-                        
-                        // 检查是否在对话界面
-                        if (currentView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING)) {
-                            // 检查是否是在对话模式进入时因为WebSocket未连接而显示的提醒
-                            do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
-                            ThunderBirdPresenter *presenter = ThunderBirdPresenter::GetInstance();
-                            if (presenter && presenter->isDialogueing) {
-                                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[定时器] WebSocket连接成功,隐藏网络断开提醒,进入对话模式");
-                                // 隐藏提醒界面
-                                if(ThunderBirdReminderView::GetInstance())
-                                {
-                                    ThunderBirdReminderView::GetInstance()->HideAll();
-                                }
-                                // 如果在对话界面,初始化音频
-                                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[定时器] WebSocket连接成功,在对话界面,初始化音频");
-                               
-                            }
-                        }
-                    }
+                    // }   
+                    //未绑定状态,联网隐藏网络断开提醒
+                    // if(bind_status == false)
+                    // {
+                    //     ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
+                    //     if (view) {
+                    //         int16_t currentView = view->GetCurrentView();
+                    //         int16_t currentSubView = view->GetCurrentSubView();
+                            
+                    //         // 检查是否在对话界面
+                    //         if (currentView == THUNDERBIRD_DIALOGUEVIEW && (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING)) {
+                    //             // 检查是否是在对话模式进入时因为WebSocket未连接而显示的提醒
+                    //             do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
+                    //             ThunderBirdPresenter *presenter = ThunderBirdPresenter::GetInstance();
+                    //             if (presenter && presenter->isDialogueing) {
+                    //                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[定时器] WebSocket连接成功,隐藏网络断开提醒,进入对话模式");
+                    //                 // 隐藏提醒界面
+                    //                 if(ThunderBirdReminderView::GetInstance())
+                    //                 {
+                    //                     ThunderBirdReminderView::GetInstance()->HideAll();
+                    //                 }
+                    //                 // 如果在对话界面,初始化音频
+                    //                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[定时器] WebSocket连接成功,在对话界面,初始化音频");  
+                    //             }
+                    //         }
+                    //     }
+                    // }
 
                     #if JUHEPINGTAI
                     uapi_init_all_websocket_servers();
                     uapi_start_all_websocket_servers(0); // 连接服务器
                     #endif
-                    
+                    //VAD认证
                     do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_VAD_AUTH, NULL, 0);
 
 
@@ -1683,32 +1682,7 @@ extern "C" {
         // 更新设备状态
         UpdateDeviceStatus();
         
-        // 处理OTA倒计时定时器
-        // if (m_otaCountdownActive) {
-        //     if (m_otaCountdownValue <= 0) {
-        //         // OTA倒计时结束,停止定时器并开始OTA
-        //         m_otaCountdownActive = false;
-        //         m_otaCountdownValue = 0;
-                
-        //         // 自动跳转到开始OTA界面
-        //         do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0);
-        //         ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_OTAVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATING);
-        //         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OTA countdown completed, starting OTA");
-        //     } else {
-        //         // 更新倒计时值
-        //         m_otaCountdownValue--;
-                
-        //         // 更新UI显示
-        //         if (ThunderBirdOtaView::GetInstance()) {
-        //             ThunderBirdOtaView::GetInstance()->UpdateCountdown(m_otaCountdownValue);
-        //         }
-        //         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OTA countdown: %d", m_otaCountdownValue);
-        //     }
-        // }
-        
-        
-        
-        // 处理计数定时器
+        // 定时器到时处理
         if (m_countUpActive) {
             if (m_countUpValue >= m_countUpTarget) {
                 // 计数完成,停止定时器
@@ -1723,25 +1697,16 @@ extern "C" {
                     
                     // 检查是否是聆听界面超时,需要自动跳转到状态界面
                     if (currentView == THUNDERBIRD_DIALOGUEVIEW && 
-                        currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) {
+                        (currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING || currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING)) {
                         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "聆听界面超时,自动跳转到说话界面");
-                        view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
-                        ThunderBirdDialogueView::GetInstance()->DialogueFirst = true;
-                        ln_ws_end_audio_chat();//结束对话
-                        // 退出对话模式时恢复表情
-                        AI_ForceInterrupt();
-                        ln_ws_send_voice_chat_interrupt("退出对话");
-                        do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_DEINIT, NULL, 0);
-                        ThunderBirdPresenter::GetInstance()->SetDialogueing(false);
-                        ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 关闭屏幕常亮
-                        ThunderBirdModel::GetInstance()->HighFrequence();//恢复视频帧率
-                        ThunderBirdModel::GetInstance()->OnExitDialogueMode();
-                    }
-                    //检查是否是播放界面超时,需要自动跳转到状态界面
-                    else if (currentView == THUNDERBIRD_DIALOGUEVIEW && 
-                        currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING) {
-                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "播放界面超时,自动跳转到状态界面");
-                        view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+                        if(bind_status == true)
+                        {
+                            view->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
+                        }
+                        else
+                        {
+                            view->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5);
+                        }
                         ThunderBirdDialogueView::GetInstance()->DialogueFirst = true;
                         ln_ws_end_audio_chat();//结束对话
                         // 退出对话模式时恢复表情
index 8d6d29b..b87525a 100644 (file)
@@ -691,10 +691,32 @@ namespace OHOS
                 case ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_5:
                     // THUNDERBIRD_GUIDEVIEW_5 按音量+键跳转到对话界面并开启对话
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "THUNDERBIRD_GUIDEVIEW_5: 进入对话模式");
+
+                    int wsState = ln_ws_get_connection_state();
+                    bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
+                    if (!wsConnected) {
+                        // 不满足条件,显示提示并设置2秒定时器自动隐藏
+                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "进入对话模式条件不满足: wsConnected=%d", wsConnected);
+                        // 先切换到提醒视图
+                        ThunderBirdModel::GetInstance()->StartReminderHideTimer(2000);
+                        ThunderBirdMainView::GetInstance()->ChangeThunderBirdReminderView(THUNDERBIRD_REMINDERVIEW);
+                        ThunderBirdReminderView *reminderView = ThunderBirdReminderView::GetInstance();
+                        if (reminderView) {
+                            if (!wsConnected) {
+                                // WebSocket未连接,显示网络断开提醒
+                                reminderView->Show(ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_NETWORK_DISCONNECT);
+                                reminderView->dialogue_unnetwork();
+                            }
+                            // 显示后再设置2秒定时器自动隐藏提示
+                        } else {
+                            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdReminderView::GetInstance() returned NULL");
+                        }
+                        return; // 不满足条件,不进入对话模式
+                    }
+                    
                     ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_GUIDEVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
                     isDialogueing = true;
-                    // 进入对话模式时记录当前表情
-                    ThunderBirdModel::GetInstance()->OnEnterDialogueMode();
+                    //未绑定状态,联网隐藏网络断开提醒
                     // 开始对话
                     do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_AUDIO_INIT, NULL, 0);
                     // ln_ws_start_audio_chat(LN_AUDIO_CHAT_VOICE_CHAT_REQUEST);
@@ -1022,11 +1044,7 @@ namespace OHOS
      */
     void ThunderBirdPresenter::HandleFuncKeyLongPress(void)
     {
-        // #if defined(SUPPORT_CAT1_SERVICE) || defined(SUPPORT_PPP_SERVICE)
-        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleFuncKeyLongPress: restart_time_sync");
-        // restart_time_sync();
-        // #endif
-        cat1_gettime();
+        // cat1_gettime();
      
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::HandleFuncKeyLongPress - FUNC key long press detected");
         // 长按FUNC键2秒的处理逻辑
@@ -1045,7 +1063,7 @@ namespace OHOS
                 // 检查WebSocket连接状态和VAD认证状态
                 int wsState = ln_ws_get_connection_state();
                 bool wsConnected = (wsState == 2); // WS_STATE_CONNECTED = 2
-                bool vadEnabled = ln_ws_is_vad_server_enabled();
+                // bool vadEnabled = ln_ws_is_vad_server_enabled();
 
                 
                 if (!wsConnected) {