ln:添加通知进行蓝牙耳机连接操作逻辑 2801/1 2801/head 2802/target/1 2803/target/1
authorluozheng <1732036298@qq.com>
Wed, 26 Nov 2025 02:14:23 +0000 (10:14 +0800)
committerluozheng <1732036298@qq.com>
Wed, 26 Nov 2025 02:14:23 +0000 (10:14 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/include/uiservice/ui_service.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/uiservice/src/ui_service.cpp
code/sdk/zhihui/leiniao/imsl_ln/ln_api.c
code/sdk/zhihui/leiniao/imsl_ln/ln_bluetooth_api.c
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp
code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h

index d7e8d9f..954055a 100644 (file)
@@ -75,6 +75,7 @@ typedef enum {
     HAND_UPGRADE_DESCRIPTION_NOTIFY, // 升级描述通知
     HAND_STORY_RESPONSE_FINISHED_NOTIFY, // 故事响应finished通知
     HAND_DIALOGUE_RESPONSE_FINISHED_NOTIFY, // 对话响应finished通知
+    HAND_BLUETOOTH_CONNECT_NOTIFY, // 蓝牙耳机连接通知
     MAX_NUM_HANDLER, 
 } UiServiceMsgId;
 
index 96b6c10..36431b5 100644 (file)
@@ -224,6 +224,9 @@ namespace OHOS
         // 处理故事响应消息的finished标志
         void HandleStoryResponseFinished(bool finished);
         
+        // 处理蓝牙耳机连接通知
+        void HandleBluetoothConnect(const char *bluetoothAddress);
+        
         // 处理对话响应消息的finished标志
         void HandleDialogueResponseFinished(bool finished);
         // 减低视频帧率
index e376500..8c30a70 100644 (file)
@@ -2490,6 +2490,12 @@ extern "C" {
         }
     }
 
+    void ThunderBirdModel::HandleBluetoothConnect(const char *bluetoothAddress)
+    {
+        // bluetoothAddress//保留字段,暂时无用
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::HandleBluetoothConnect: 收到蓝牙耳机连接通知,bluetoothAddress=%s", bluetoothAddress);
+    }
+
     void ThunderBirdModel::HandleBindAndUnbind(int is_bind)
     {
         if(is_bind == 1)
index a23ea28..968cbb3 100644 (file)
@@ -111,6 +111,8 @@ static void HandTimelineStatusChangeNotify(Request *request);
 static void HandUpgradeDescriptionNotify(Request *request);
 static void HandStoryResponseFinishedNotify(Request *request);
 static void HandDialogueResponseFinishedNotify(Request *request);
+static void HandBluetoothConnectNotify(Request *request);
+
 // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
 MsgHandlerEntry msgHandlers[] = {
     {HANDLE_JUMP_OTA_VIEW, HandleJumpOtaView},
@@ -138,6 +140,7 @@ MsgHandlerEntry msgHandlers[] = {
     {HAND_UPGRADE_DESCRIPTION_NOTIFY,HandUpgradeDescriptionNotify},
     {HAND_STORY_RESPONSE_FINISHED_NOTIFY,HandStoryResponseFinishedNotify},
     {HAND_DIALOGUE_RESPONSE_FINISHED_NOTIFY,HandDialogueResponseFinishedNotify},
+    {HAND_BLUETOOTH_CONNECT_NOTIFY,HandBluetoothConnectNotify},
 };
 /* -------------------------------------------------------------------------- */
 void ScreenTurnOn(int32_t timeout)
@@ -816,6 +819,17 @@ void HandDialogueResponseFinishedNotify(Request *request)
                          OHOS::ThunderBirdModel::GetInstance(), finished));
     }
 }
+// 通知蓝牙耳机连接操作
+void HandBluetoothConnectNotify(Request *request)
+{
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandBluetoothConnectNotify msg_id = %d", request->msgId);
+    // std::string bluetoothAddress(static_cast<char*>(request->data), request->len);
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "HandBluetoothConnectNotify bluetoothAddress = %s", bluetoothAddress.c_str());
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::ThunderBirdModel::HandleBluetoothConnect, 
+                        OHOS::ThunderBirdModel::GetInstance(), "AA:BB:CC:DD:EE:FF"));//要连接的蓝牙设备MAC地址,保留字段,暂时无用
+    
+}
 /* -------------------------------------------------------------------------- */
 #ifdef __cplusplus
 }
index 0bd797f..0539e34 100644 (file)
@@ -927,10 +927,6 @@ void ln_ws_process_message(const ws_data_msg_t *data_msg, ws_command_t type)
         if (json_str)
         {
             ln_parse_bluetooth_connect(json_str, (int)strlen(json_str));
-            /* 发送蓝牙连接应答 */
-            ln_ws_send_bluetooth_connect_ack(true, "蓝牙连接中");
-            /* TODO: 这里应该调用实际的蓝牙连接接口,执行搜索和连接操作 */
-            /* 连接完成后,通过BluetoothStatusReport命令上报最终状态 */
         }
         break;
     }
index e48b1a8..f90ea0c 100644 (file)
@@ -233,6 +233,11 @@ void ln_parse_bluetooth_connect(const char *json_str, int json_len)
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BT] BluetoothConnect - userId: %s, bluetoothAddress: %s",
                   g_bluetooth_connect_data.user_id, g_bluetooth_connect_data.bluetooth_address);
 
+    // 发送蓝牙连接通知
+    push_bluetooth_connect_notification(g_bluetooth_connect_data.bluetooth_address);
+    /* 发送蓝牙连接应答 */
+    ln_ws_send_bluetooth_connect_ack(true, "蓝牙连接中");
+
     cJSON_Delete(root);
     free(text);
 }
index 22ec664..f084027 100644 (file)
@@ -323,6 +323,12 @@ void push_dialogue_response_finished_notification(bool finished)
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[DIALOGUE_RESPONSE_FINISHED] finished=%d", finished);
     SendMsgToUIService(HAND_DIALOGUE_RESPONSE_FINISHED_NOTIFY, 0, &finished, sizeof(finished));
 }
+//通知进行蓝牙耳机连接操作
+void push_bluetooth_connect_notification(const char *bluetoothAddress)
+{
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BLUETOOTH_CONNECT] bluetoothAddress=%s", bluetoothAddress);
+    SendMsgToUIService(HAND_BLUETOOTH_CONNECT_NOTIFY, 0, (void *)bluetoothAddress, (int32_t)strlen(bluetoothAddress));
+}
 #ifdef __cplusplus
 };
 #endif
\ No newline at end of file
index 1ca3442..0d93302 100644 (file)
@@ -117,6 +117,8 @@ void push_upgrade_description_notification(const char *description);
 void push_story_response_finished_notification(bool finished);
 //通知对话响应finished
 void push_dialogue_response_finished_notification(bool finished);
+//通知进行蓝牙耳机连接操作
+void push_bluetooth_connect_notification(const char *bluetoothAddress);
 #ifdef __cplusplus
 }
 #endif