From: luozheng <1732036298@qq.com> Date: Fri, 27 Sep 2024 08:44:43 +0000 (+0800) Subject: 添加获取获取TG端支持的属性列表接口功能还未适配, X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=f5b6d30110ad01526b42972f68dd1001d66c7d0e;p=mirrors%2FFD230.git 添加获取获取TG端支持的属性列表接口功能还未适配, --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothHeadsetEvent.h b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothHeadsetEvent.h index 500d14408..3f5709cb6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothHeadsetEvent.h +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothHeadsetEvent.h @@ -39,6 +39,7 @@ void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_stat void InitBtHeadsetEvent(void); void BtAvrcpVolumeChangedSyncMedia(uint8_t a2dp_volume); void user_avrcp_ct_press_button(const bd_addr_t *bd_addr, int32_t key_operation); +void user_avrcp_ct_get_element_attributes(const bd_addr_t *bd_addr); #ifdef __cplusplus } diff --git a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp index 576f3e6ca..f34b71e6b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp @@ -270,6 +270,23 @@ void user_avrcp_ct_press_button(const bd_addr_t *bd_addr, int32_t key_operation) } } } + +void user_avrcp_ct_get_element_attributes(const bd_addr_t *bd_addr) +{ + avrcp_ct_get_element_attr_para_t element_attr_param; + element_attr_param.attr_num = AVRCP_CT_ELEMENT_ATTR_TRACK_PLAYING_TIME; + element_attr_param.attr_id_list = (unsigned int *)(void *)malloc(sizeof(unsigned int) * element_attr_param.attr_num); + for (int i = 0; i < element_attr_param.attr_num; i++) + { + element_attr_param.attr_id_list[i] = (unsigned int)i + 1; + } + avrcp_ct_get_element_attributes(bd_addr, &element_attr_param); + if (element_attr_param.attr_id_list != NULL) + { + free(element_attr_param.attr_id_list); + element_attr_param.attr_id_list = NULL; + } +} /* -------------------------------------------------------------------------- */ //记录按下按钮的回调事件以及按键操作值 static void BtAvrcpCtPressButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation) @@ -461,7 +478,7 @@ static void BtAvrcpCtNotificationCallback( bool notify_flag = true; switch (event_id) { case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED: //播放状态变更事件,从播放变为暂停、停止等状态,会触发这个事件 - BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk(notification); + // BtAvrcpCtHdlNotifyPlaybackStatusChangedRspCbk(notification); break; case AVRCP_NOTIFY_EVENT_TRACK_CHANGED: //track状态变更事件,切换到下一首、上一首歌曲等情况,会触发此事件 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "track changed event_id:0x%x\n", event_id); diff --git a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp index 922cea15b..ae376d014 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp @@ -1462,6 +1462,8 @@ static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr) WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n", bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */ BtA2dpSnkAudioCreate(); + GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::set_player_state, OHOS::PlayersModel::GetInstance(),true)); + // PlayersModel::GetInstance()->get_avrcp_ct_get_element_attributes(); } static void BtA2dpSnkPlayingStateChangedCb(bd_addr_t *bd_addr, int playing_state) @@ -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", bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], playing_state); /* 3 2 1 0 idx */ if (playing_state == A2DP_NOT_PLAYING) { + GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::PlayersModel::set_player_state, OHOS::PlayersModel::GetInstance(),false)); BtA2dpSnkAudioDestroy(); } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h index f0394660e..8ce15f274 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h @@ -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> &getIdToMusicNameMap(void); diff --git a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp index 6293bdb9e..95fa0d413 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersModel.cpp @@ -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) {