diff --git a/system/btif/src/btif_rc.cc b/system/btif/src/btif_rc.cc index 529f2cd3be198f7b21027e806df8a3c12ce84263..f3bf5f97f90e12c7d3e5da104b93f819352f5658 100644 --- a/system/btif/src/btif_rc.cc +++ b/system/btif/src/btif_rc.cc @@ -3051,6 +3051,7 @@ static void handle_get_capability_response(tBTA_AV_META_MSG* pmeta_msg, if ((p_rsp->param.event_id[xx] == AVRC_EVT_PLAY_STATUS_CHANGE) || (p_rsp->param.event_id[xx] == AVRC_EVT_TRACK_CHANGE) || (p_rsp->param.event_id[xx] == AVRC_EVT_APP_SETTING_CHANGE) || + (p_rsp->param.event_id[xx] == AVRC_EVT_NOW_PLAYING_CHANGE) || (p_rsp->param.event_id[xx] == AVRC_EVT_ADDR_PLAYER_CHANGE) || (p_rsp->param.event_id[xx] == AVRC_EVT_UIDS_CHANGE)) { p_event = (btif_rc_supported_event_t*)osi_malloc( @@ -3161,6 +3162,10 @@ static void handle_notification_response(tBTA_AV_META_MSG* pmeta_msg, break; case AVRC_EVT_NOW_PLAYING_CHANGE: + do_in_jni_thread( + FROM_HERE, + base::Bind(bt_rc_ctrl_callbacks->now_playing_contents_changed_cb, + p_dev->rc_addr)); break; case AVRC_EVT_AVAL_PLAYERS_CHANGE: diff --git a/system/include/hardware/bt_rc.h b/system/include/hardware/bt_rc.h index 382500df0f47bd5f49e2af22204ad8a7e0a5635c..dc46eca62fe80c03cc8d3ee1d27e3186eefe0aa8 100644 --- a/system/include/hardware/bt_rc.h +++ b/system/include/hardware/bt_rc.h @@ -615,6 +615,8 @@ typedef void (*btrc_ctrl_set_addressed_player_callback)( const RawAddress& bd_addr, uint8_t status); typedef void (*btrc_ctrl_addressed_player_changed_callback)( const RawAddress& bd_addr, uint16_t id); +typedef void (*btrc_ctrl_now_playing_contents_changed_callback)( + const RawAddress& bd_addr); /** BT-RC Controller callback structure. */ typedef struct { @@ -639,6 +641,8 @@ typedef struct { btrc_ctrl_set_browsed_player_callback set_browsed_player_cb; btrc_ctrl_set_addressed_player_callback set_addressed_player_cb; btrc_ctrl_addressed_player_changed_callback addressed_player_changed_cb; + btrc_ctrl_now_playing_contents_changed_callback + now_playing_contents_changed_cb; } btrc_ctrl_callbacks_t; /** Represents the standard BT-RC AVRCP Controller interface. */