添加获取获取TG端支持的属性列表接口功能还未适配,
authorluozheng <1732036298@qq.com>
Fri, 27 Sep 2024 08:44:43 +0000 (16:44 +0800)
committerluozheng <1732036298@qq.com>
Fri, 27 Sep 2024 08:44:43 +0000 (16:44 +0800)
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothHeadsetEvent.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp

index 500d144..3f5709c 100644 (file)
@@ -39,6 +39,7 @@ void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_stat
 void InitBtHeadsetEvent(void);\r
 void BtAvrcpVolumeChangedSyncMedia(uint8_t a2dp_volume);\r
 void user_avrcp_ct_press_button(const bd_addr_t *bd_addr, int32_t key_operation);\r
+void user_avrcp_ct_get_element_attributes(const bd_addr_t *bd_addr);\r
 \r
 #ifdef __cplusplus\r
 }\r
index 576f3e6..f34b71e 100644 (file)
@@ -270,6 +270,23 @@ void user_avrcp_ct_press_button(const bd_addr_t *bd_addr, int32_t key_operation)
         }\r
     }\r
 }\r
+\r
+void user_avrcp_ct_get_element_attributes(const bd_addr_t *bd_addr)\r
+{\r
+    avrcp_ct_get_element_attr_para_t element_attr_param;\r
+    element_attr_param.attr_num = AVRCP_CT_ELEMENT_ATTR_TRACK_PLAYING_TIME;\r
+    element_attr_param.attr_id_list = (unsigned int *)(void *)malloc(sizeof(unsigned int) * element_attr_param.attr_num);\r
+    for (int i = 0; i < element_attr_param.attr_num; i++) \r
+    {\r
+        element_attr_param.attr_id_list[i] = (unsigned int)i + 1;\r
+    }\r
+    avrcp_ct_get_element_attributes(bd_addr, &element_attr_param);\r
+    if (element_attr_param.attr_id_list != NULL) \r
+    {\r
+        free(element_attr_param.attr_id_list);\r
+        element_attr_param.attr_id_list = NULL;\r
+    }\r
+}\r
 /* -------------------------------------------------------------------------- */\r
 //记录按下按钮的回调事件以及按键操作值\r
 static void BtAvrcpCtPressButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
@@ -461,7 +478,7 @@ static void BtAvrcpCtNotificationCallback(
     bool notify_flag = true;\r
     switch (event_id) {\r
         case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:                //播放状态变更事件,从播放变为暂停、停止等状态,会触发这个事件\r
-            BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk(notification);\r
+            // BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk(notification);\r
             break;\r
         case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:                          //track状态变更事件,切换到下一首、上一首歌曲等情况,会触发此事件\r
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "track changed event_id:0x%x\n", event_id);\r
index 922cea1..ae376d0 100644 (file)
@@ -1462,6 +1462,8 @@ static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr)
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n",\r
         bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */\r
     BtA2dpSnkAudioCreate();\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::set_player_state, OHOS::PlayersModel::GetInstance(),true));\r
+    // PlayersModel::GetInstance()->get_avrcp_ct_get_element_attributes();\r
 }\r
 \r
 static void BtA2dpSnkPlayingStateChangedCb(bd_addr_t *bd_addr, int playing_state)\r
@@ -1469,6 +1471,7 @@ static void BtA2dpSnkPlayingStateChangedCb(bd_addr_t *bd_addr, int playing_state
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x playing_state: %x\n",\r
         bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], playing_state); /* 3 2 1 0 idx */\r
     if (playing_state == A2DP_NOT_PLAYING) {\r
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::set_player_state, OHOS::PlayersModel::GetInstance(),false));\r
         BtA2dpSnkAudioDestroy();\r
     }\r
 }\r
index f039466..8ce15f2 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-08-05 15:20:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-24 17:38:29
+ * @LastEditTime: 2024-09-26 14:21:11
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
  */
 
@@ -108,6 +108,7 @@ public:
     void UpdateVolumeValue(void);
     bool get_avrcp_ct_or_tg_is_connected(void);
     void set_phone_music_play_state(avrcp_key_operation_t notify);
+    void get_avrcp_ct_get_element_attributes(void);
     void set_player_state(bool value);
     // /* -------------------------------------------------------------------------- */
     std::unordered_map<uint16_t, std::pair<std::string,std::string>> &getIdToMusicNameMap(void);
index 6293bdb..95fa0d4 100644 (file)
@@ -1019,6 +1019,14 @@ bool PlayersModel::GetCurrentMusicIsPlaying(void)
         }
     }
 
+    //获取TG端支持的属性列表,比如歌曲标题,专辑、艺术风格,年份和作曲家等。
+    void PlayersModel::get_avrcp_ct_get_element_attributes(void)
+    {
+        bd_addr_t bdAddr={0};
+        uapi_get_br_address(&bdAddr); //获取手机蓝牙地址
+        user_avrcp_ct_get_element_attributes(&bdAddr);
+    }
+
     //设置按钮播放状态
     void PlayersModel::set_player_state(bool value)
     {