修复雷鸟编译bug 2289/1 2289/head
authorxue <2144439972@qq.com>
Thu, 18 Sep 2025 02:37:47 +0000 (10:37 +0800)
committerxue <2144439972@qq.com>
Thu, 18 Sep 2025 02:37:47 +0000 (10:37 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdGuideView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdMainView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdPresenter.cpp

index e526ed2..ad890a6 100644 (file)
@@ -36,7 +36,9 @@ namespace OHOS
         enum class BindingStatus {
             BOUND = 0,      // 已绑定
             NOT_BOUND = 1,  // 未绑定
-            NO_NETWORK = 2  // 没有网络
+            AUTH_FAILURE = 2,  // 认证失败
+            NO_NETWORK = 3  // 没有网络
+            
         };
         BindingStatus CheckBindingStatus();
 
index 2c61550..b6fa843 100644 (file)
@@ -231,13 +231,13 @@ namespace OHOS
             }
             if(RemindIcon)
             {
-                RemindIcon->SetPosition(158, 296, 30, 30);
+                RemindIcon->SetPosition(158, 296, 24, 24);
                 RemindIcon->SetSrc("/user/res/volume_up.bin");
                 RemindIcon->SetVisible(true);
             }   
             if (RemindButton)
             {
-                RemindButton->SetPosition(116, 288, 148, 40);
+                RemindButton->SetPosition(106, 288, 148, 40);
                 RemindButton->SetText("按     跳过");
                 RemindButton->SetLabelPosition(2, 0);
                 RemindButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);
index cfa4ceb..978871f 100644 (file)
@@ -273,33 +273,15 @@ namespace OHOS
             ScrollView_->Add(backGroundView);
 
             // 默认显示主界面
-            ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, 0); // 文字显示图层
-            //绑定设备提示 > 配置更新成功>OTA升级>其他(按触发时间先后提示)
-            /*************************用户是否绑定*************************/
-            // do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_USER_ID, nullptr, 0);//获取用户是否绑定
-            // if(uapi_ln_get_user_bind_status() == 0)//未绑定
-            // {
-            //     ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1);
-            // }
-            // if(uapi_ln_get_user_bind_status() == 1)//已绑定
-            // {
-            //     //ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_2);进入对话界面
-            // }
-
-            // /*************************更新角色配置*************************/
-            // do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_CHARACTER, nullptr, 0);//获取角色配置
-            
-
-            // /*************************OTA升级*************************/
-            // do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_GET_TASK, nullptr, 0);//获取是否需要OTA升级
-            // if(uapi_ln_ota_get_update_type() == 1)//强制OTA升级
-            // {
-            //     ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
-            // }
-            // if(uapi_ln_ota_get_update_type() == 0)//可选OTA升级
-            // {
-            //     ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NORMAL);
-            // }
+            //ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, 0); // 文字显示图层
+             if(ThunderBirdModel::GetInstance()->StartBootOperation() == 0)
+             {
+                ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3); // 文字显示图层
+             }
+             else if(ThunderBirdModel::GetInstance()->StartBootOperation() == 1)
+             {
+                ChangeView(MAXVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
+             }
 
             ScrollView_->Add(InitBaseData()); // 最上面状态栏
 
index 9a03c35..fe266f3 100644 (file)
@@ -89,7 +89,7 @@
          std::strftime(buffer, sizeof(buffer), "%H:%M", timeinfo);
          return std::string(buffer);
      }
-{
+
      void ThunderBirdModel::timer_callback_proc()
      {
          ThunderBirdMainView *view = ThunderBirdMainView::GetInstance();
              g_timer = nullptr;
          }
      }
-}
-{
+
     /*----------------------提醒界面定时器----------------------------------*/
      static osTimerId_t g_reminderHideTimer = nullptr;
      static void ReminderHideTimerCallbackProc(uint8_t data)
              reminder->HideAll();
          }
      }
- }
 
 
- {
+
+
      // ---------------------- OTA 倒计时定时器(5 -> 1,每步1秒) ----------------------
      static osTimerId_t g_otaCountdownTimer = nullptr;
      static int g_otaCountdownValue = 0;
      }
          g_otaCountdownValue = 0;
      }
- }
+
 
  
-{
+ 
 
      // ---------------------- 通用计时加一定时器(0 -> targetSeconds,每步1秒) ----------------------
      static osTimerId_t g_countUpTimer = nullptr;
      {
          return g_countUpValue;
      }
-}
+
 
      // ==================== 开机操作函数 ====================
      int ThunderBirdModel::StartBootOperation()
          //绑定设备提示 > 配置更新成功>OTA升级>其他(按触发时间先后提示)
          /*************************用户是否绑定*************************/
          do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_USER_ID, nullptr, 0);//获取用户是否绑定
-         if(uapi_ln_is_device_bound() == 0)//未绑定
+         if(uapi_ln_is_device_bound() == 0 || uapi_ln_is_device_bound() == -1)//未绑定
          {
              WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::StartBootOperation: 未绑定");
-             ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1);
+             //ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1);
              return 0;
          }
          else if(uapi_ln_is_device_bound() == 1)//已绑定
          {
              WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::StartBootOperation: 已绑定");
-             ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
+             //ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
              return 1;
          }
  
          
  
          /*************************OTA升级*************************/
-         do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_GET_TASK, nullptr, 0);//获取是否需要OTA升级
-         if(uapi_ln_ota_get_update_type() == 1)//强制OTA升级
-         {
-             ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
-             return 3;
-         }
-         if(uapi_ln_ota_get_update_type() == 0)//可选OTA升级
-         {
-             ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NORMAL);
-             //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0);
-             return 5;
-         }
+        //  do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_GET_TASK, nullptr, 0);//获取是否需要OTA升级
+        //  if(uapi_ln_ota_get_update_type() == 1)//强制OTA升级
+        //  {
+        //      ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
+        //      return 3;
+        //  }
+        //  if(uapi_ln_ota_get_update_type() == 0)//可选OTA升级
+        //  {
+        //      ThunderBirdMainView::GetInstance()->ChangeView(MAXVIEW, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NORMAL);
+        //      //do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_OTA_DOWNLOAD, NULL, 0);
+        //      return 5;
+        //  }
          return -1;
      }
  
          {
              return BindingStatus::AUTH_FAILURE;
          }
-         return BindingStatus::ERROR;
+         return BindingStatus::NO_NETWORK;
      }
 
      // ==================== 对话相关函数 ====================
index 2c128a7..7a446e7 100644 (file)
@@ -67,12 +67,64 @@ namespace OHOS
     // 增加按键事件
     bool ThunderBirdPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::OnKeyAct");
         uint16_t keyID = event.GetKeyId();
         uint16_t keyState = event.GetState();
+        int16_t currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
+        int16_t currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
+        int screenState = uapi_get_screen_state();
+        
+        // 详细的按键事件跟踪日志
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event Start ===");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "keyID: %d (0=POWER, 1=FUNC, 2=VENDOR_UP, 3=VENDOR_DOWN)", keyID);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "keyState: %d (0=RELEASE, 1=PRESS, 2=LONG_PRESS)", keyState);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "screenState: %d (0=OFF, 1=ON)", screenState);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentView: %d", currentView);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentSubView: %d", currentSubView);
+        
+        // 按键名称映射
+        const char* keyName = "UNKNOWN";
+        switch(keyID) {
+            case static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER):
+                keyName = "POWER";
+                break;
+            case static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_FUNC):
+                keyName = "FUNC";
+                break;
+            case static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_VENDOR_UP):
+                keyName = "VENDOR_UP";
+                break;
+            case static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_VENDOR_DOWN):
+                keyName = "VENDOR_DOWN";
+                break;
+        }
+        
+        // 按键状态名称映射
+        const char* stateName = "UNKNOWN";
+        switch(keyState) {
+            case InputDevice::STATE_RELEASE:
+                stateName = "RELEASE";
+                break;
+            case InputDevice::STATE_PRESS:
+                stateName = "PRESS";
+                break;
+            case InputDevice::STATE_LONG_PRESS:
+                stateName = "LONG_PRESS";
+                break;
+        }
+        
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Key: %s, State: %s", keyName, stateName);
+
+        /* 检查是否绑定 
+        1、未绑定:
+        2、如果不在THUNDERBIRD_GUIDEVIEW_3(二维码界面),
+        3、除了电源键,点击其他按键都跳转到THUNDERBIRD_GUIDEVIEW_3(二维码界面)
+        */
+        
+        
 
         // 刷新息屏计时:任意按键按下时重置屏幕熄灭倒计时
         if (keyState == InputDevice::STATE_PRESS) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refreshing screen-off timer");
             uapi_set_screen_on_api();
         }
 
@@ -80,7 +132,9 @@ namespace OHOS
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) &&
             keyState == InputDevice::STATE_LONG_PRESS)
         {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "POWER LONG_PRESS: Switching to reboot slice");
             NativeAbility::GetInstance().SwitchSlice(VIEW_REBOOT);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (POWER LONG_PRESS) ===");
             return true;
         }
 
@@ -89,15 +143,15 @@ namespace OHOS
             keyState == InputDevice::STATE_LONG_PRESS &&
             uapi_get_screen_state() == 0)
         {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC LONG_PRESS: Switching to LCD test slice");
             NativeAbility::GetInstance().SwitchSlice(VIEW_LCD_TEST);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (FUNC LONG_PRESS) ===");
             return true;
         }
         /*************************power键*************************/
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)
-        { 
-            int16_t currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
-            int16_t currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentView = %d, currentSubView = %d", currentView, currentSubView);
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "POWER PRESS: Screen is off, currentView = %d, currentSubView = %d", currentView, currentSubView);
         //    i++;
         //    if(i == 1)
         //    {
@@ -115,54 +169,90 @@ namespace OHOS
         //    {
         //     ThunderBirdMainView::GetInstance()->SwitchHair("/user/res/hair/Bangs/gold.bin");
         //    }
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (POWER PRESS) ===");
            return true;
           
         }
         /*************************语音键*************************/
         if(keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_FUNC) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            int16_t currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
-            int16_t currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC PRESS: Screen is off, checking binding status");
+            
+            if(ThunderBirdModel::GetInstance()->CheckBindingStatus() == ThunderBirdModel::BindingStatus::NOT_BOUND)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC PRESS: Device not bound, checking current subview");
+                if(ThunderBirdMainView::GetInstance()->GetCurrentSubView() != ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC PRESS: Redirecting to QR code view");
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3);
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (FUNC PRESS - Redirect) ===");
+                    return true;
+                }
+            }
             
             if(currentView == THUNDERBIRD_DIALOGUEVIEW && currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING)
             {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::OnKeyAct: 停止录音");
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC PRESS: 从聆听界面跳转到说话界面");
                 ThunderBirdModel::GetInstance()->StopRecording();
-                ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
                 ThunderBirdModel::GetInstance()->SendRecording();
             } 
             else
             {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdPresenter::OnKeyAct: 开始录音");
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FUNC PRESS: 从当前界面跳转到聆听界面");
                 ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
                 ThunderBirdModel::GetInstance()->StartRecording();
             }
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (FUNC PRESS) ===");
             return true;
         }
         
         /*************************VENDOR_UP键*************************/
-        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_VENDOR_UP) && uapi_get_screen_state() == 0)
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_VENDOR_UP) && keyState == 1 && uapi_get_screen_state() == 0)
         {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: Screen is off, checking binding status");
+            
+            if(ThunderBirdModel::GetInstance()->CheckBindingStatus() == ThunderBirdModel::BindingStatus::NOT_BOUND)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: Device not bound, checking current subview");
+                if(ThunderBirdMainView::GetInstance()->GetCurrentSubView() != ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: Redirecting to QR code view");
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3);
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_UP - Redirect) ===");
+                    return true;
+                }
+            }
+            
             static bool s_vendorUpPressed = false;
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: State machine - s_vendorUpPressed=%d, keyState=%d", s_vendorUpPressed, keyState);
+            
             if (keyState == InputDevice::STATE_PRESS) {
                 if (s_vendorUpPressed) {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP PRESS: Already pressed, ignoring");
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_UP PRESS - Ignored) ===");
                     return true;
                 }
                 s_vendorUpPressed = true;
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP PRESS: First press, processing business logic");
             } else if (keyState == InputDevice::STATE_RELEASE) {
                 s_vendorUpPressed = false;
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP RELEASE: Resetting pressed state");
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_UP RELEASE) ===");
                 return true;
             } else {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: Other state, ignoring");
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_UP - Other) ===");
                 return true;
             }
-            int16_t currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
-            int16_t currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
+
             // 音量界面:FUNC 键 -10
             if (currentView == THUNDERBIRD_DIALOGUEVIEW || 
                 (currentView == THUNDERBIRD_LULLABYVIEW && 
                     (currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_1 || 
                         currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4))) //只有在对话界面还有哄睡界面才触发
             {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: Volume adjustment in dialogue/lullaby view");
                 ThunderBirdMainView::GetInstance()->ChangeThunderBirdReminderView(THUNDERBIRD_REMINDERVIEW);//不走ChangeView
                 if (ThunderBirdReminderView::GetInstance())
                 {
@@ -171,6 +261,7 @@ namespace OHOS
                     ThunderBirdReminderView::GetInstance()->AdjustRemindProgress(10);
                     
                 }       
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_UP - Volume) ===");
                 return true;
             }
             // 引导界面导航
@@ -178,10 +269,12 @@ namespace OHOS
             {
                 if(currentSubView == ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_1)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从引导界面1跳转到引导界面2");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_2);
                 }
                 else if(currentSubView == ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_2)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从引导界面2跳转到OTA界面");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NORMAL);
                 }
                 // else if(currentSubView == ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3)
@@ -195,15 +288,17 @@ namespace OHOS
              {
                  if(currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING) // 说话中
                  {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从说话界面跳转到聆听界面");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING);
                  }
                  else if(currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_LISTENING) // 聆听中
                  {
-
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从聆听界面跳转到状态展示界面");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW);
-                 }
+                }
                  else if(currentSubView == ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_STATUS_SHOW) // 状态展示
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从状态展示界面跳转到音量调节界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_REMINDERVIEW, ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_VOLUME);
                  }
                  return true;
@@ -213,14 +308,17 @@ namespace OHOS
              {
                  if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NORMAL) // 有新功能
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从OTA普通界面跳转到OTA明显界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_OBVIOUS);
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_OBVIOUS) // 需要立即更新
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从OTA明显界面跳转到立即更新界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW);
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_NOW) // 设置夜间更新
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从立即更新界面跳转到夜间更新成功界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NIGHT_UPDATE_SUCCESS);
                  }
 
@@ -254,22 +352,27 @@ namespace OHOS
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_NIGHT_UPDATE_SUCCESS) // 更新倒计时
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从夜间更新成功界面跳转到更新倒计时界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_COUNTDOWN);
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_COUNTDOWN) // 更新倒计时
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从更新倒计时界面跳转到更新中界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATING);
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATING) // 更新中
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从更新中界面跳转到更新成功界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_SUCCESS);
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_SUCCESS) // 更新成功
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从更新成功界面跳转到更新失败界面");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_OTAVIEW, ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_FAILED);
                  }
                  else if(currentSubView == ThunderBirdOtaView::THUNDERBIRD_OTAVIEW_UPDATE_FAILED) // 更新失败
                  {
+                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从更新失败界面跳转到哄睡界面1");
                      ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_1);
                  }
                  return true;
@@ -279,22 +382,27 @@ namespace OHOS
             {
                 if(currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_1) 
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从哄睡界面1跳转到哄睡界面2");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2);
                 }
                 else if(currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_2)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从哄睡界面2跳转到哄睡界面3");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3);
                 }
                 else if(currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_3)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从哄睡界面3跳转到哄睡界面4");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4);
                 }
                 else if(currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从哄睡界面4跳转到哄睡界面5");
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_LULLABYVIEW, ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5);
                 }
                 else if(currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_5)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从哄睡界面5跳转到说话界面");
                     // 返回主界面
                     ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
                 }
@@ -305,6 +413,7 @@ namespace OHOS
               {
                   if(currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_VOLUME) // 音量调节
                   {
+                      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_UP: 从音量调节界面跳转到事项提醒界面");
                       ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_REMINDERVIEW, ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER);
                   }
                   else if(currentSubView == ThunderBirdReminderView::THUNDERBIRD_REMINDERVIEW_TASK_REMINDER) // 事项提醒
@@ -353,14 +462,26 @@ namespace OHOS
         /*************************VENDOR_DOWN键*************************/
         if(keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_VENDOR_DOWN) && keyState == 1 && uapi_get_screen_state() == 0)
         {
-            int16_t currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
-            int16_t currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_DOWN PRESS: Screen is off, checking binding status");
+            
+            if(ThunderBirdModel::GetInstance()->CheckBindingStatus() == ThunderBirdModel::BindingStatus::NOT_BOUND)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_DOWN PRESS: Device not bound, checking current subview");
+                if(ThunderBirdMainView::GetInstance()->GetCurrentSubView() != ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_DOWN PRESS: Redirecting to QR code view");
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_GUIDEVIEW, ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3);
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_DOWN PRESS - Redirect) ===");
+                    return true;
+                }
+            }
             // 音量界面:FUNC 键 -10
             if (currentView == THUNDERBIRD_DIALOGUEVIEW || 
                 (currentView == THUNDERBIRD_LULLABYVIEW && 
                     (currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_1 || 
                         currentSubView == ThunderBirdLullabyView::THUNDERBIRD_LULLABYVIEW_4))) //只有在对话界面还有哄睡界面才触发
             {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VENDOR_DOWN: Volume adjustment in dialogue/lullaby view");
                 ThunderBirdMainView::GetInstance()->ChangeThunderBirdReminderView(THUNDERBIRD_REMINDERVIEW);//不走ChangeView
                 if (ThunderBirdReminderView::GetInstance())
                 {
@@ -369,6 +490,7 @@ namespace OHOS
                     ThunderBirdReminderView::GetInstance()->AdjustRemindProgress(-10);
                     
                 }
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (VENDOR_DOWN - Volume) ===");
                 return true;
             }
             if(currentView == THUNDERBIRD_OTAVIEW)
@@ -409,22 +531,26 @@ namespace OHOS
              }
         }
     
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "=== OnKeyAct Event End (No specific handler) ===");
         return true;
     }
 
     void ThunderBirdPresenter::Notify()
     {
+       
         //如果在二维码界面 判断是否绑定
         if(ThunderBirdMainView::GetInstance()!=  nullptr)
        { 
+        int16_t currentView = ThunderBirdMainView::GetInstance()->GetCurrentView();
+        int16_t currentSubView = ThunderBirdMainView::GetInstance()->GetCurrentSubView();
             //如果在二维码界面 要一直判断绑定状态 绑定成功就返回主界面
-            if(ThunderBirdMainView::GetInstance()->GetCurrentView() == THUNDERBIRD_QRCODEVIEW)
+            if(currentSubView == ThunderBirdGuideView::THUNDERBIRD_GUIDEVIEW_3)
             {
                 ThunderBirdModel::BindingStatus bindingStatus = ThunderBirdModel::GetInstance()->CheckBindingStatus();
                 if(bindingStatus == ThunderBirdModel::BindingStatus::BOUND)
                 {
                     //绑定成功
-                    ThunderBirdMainView::GetInstance()->ChangeView(THUNDERBIRD_QRCODEVIEW, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
+                    ThunderBirdMainView::GetInstance()->ChangeView(currentView, THUNDERBIRD_DIALOGUEVIEW, ThunderBirdDialogueView::THUNDERBIRD_DIALOGUEVIEW_SPEAKING);
                 }
             }
         }