Loading android/app/jni/com_android_bluetooth_avrcp_controller.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ static jmethodID method_handleChangeFolderRsp; static jmethodID method_handleSetBrowsedPlayerRsp; static jmethodID method_handleSetAddressedPlayerRsp; static jmethodID method_handleAddressedPlayerChanged; static jmethodID method_handleNowPlayingContentChanged; static jclass class_MediaBrowser_MediaItem; static jclass class_AvrcpPlayer; Loading Loading @@ -591,6 +592,17 @@ static void btavrcp_addressed_player_changed_callback(const RawAddress& bd_addr, method_handleAddressedPlayerChanged, (jint)id); } static void btavrcp_now_playing_content_changed_callback( const RawAddress& bd_addr) { ALOGI("%s", __func__); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; sCallbackEnv->CallVoidMethod(sCallbacksObj, method_handleNowPlayingContentChanged); } static btrc_ctrl_callbacks_t sBluetoothAvrcpCallbacks = { sizeof(sBluetoothAvrcpCallbacks), btavrcp_passthrough_response_callback, Loading @@ -609,7 +621,8 @@ static btrc_ctrl_callbacks_t sBluetoothAvrcpCallbacks = { btavrcp_change_path_callback, btavrcp_set_browsed_player_callback, btavrcp_set_addressed_player_callback, btavrcp_addressed_player_changed_callback}; btavrcp_addressed_player_changed_callback, btavrcp_now_playing_content_changed_callback}; static void classInitNative(JNIEnv* env, jclass clazz) { method_handlePassthroughRsp = Loading Loading @@ -673,6 +686,8 @@ static void classInitNative(JNIEnv* env, jclass clazz) { env->GetMethodID(clazz, "handleSetAddressedPlayerRsp", "(I)V"); method_handleAddressedPlayerChanged = env->GetMethodID(clazz, "handleAddressedPlayerChanged", "(I)V"); method_handleNowPlayingContentChanged = env->GetMethodID(clazz, "handleNowPlayingContentChanged", "()V"); ALOGI("%s: succeeds", __func__); } Loading android/app/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,7 @@ <string name="process" translate="false"><xliff:g id="x" /></string> <string name="bluetooth_a2dp_sink_queue_name">Now Playing</string> <string name="bluetooth_map_settings_save">Save</string> <string name="bluetooth_map_settings_cancel">Cancel</string> <string name="bluetooth_map_settings_intro">Select the accounts you want to share through Bluetooth. You still have to accept any access to the accounts when connecting.</string> Loading android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java +8 −0 Original line number Diff line number Diff line Loading @@ -904,6 +904,14 @@ public class AvrcpControllerService extends ProfileService { mAvrcpCtSm.sendMessage(msg); } private void handleNowPlayingContentChanged() { if (DBG) { Log.d(TAG, "handleNowPlayingContentChanged"); } mAvrcpCtSm.sendMessage( AvrcpControllerStateMachine.MESSAGE_PROCESS_NOW_PLAYING_CONTENTS_CHANGED); } @Override public void dump(StringBuilder sb) { super.dump(sb); Loading android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java +7 −1 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ class AvrcpControllerStateMachine extends StateMachine { static final int MESSAGE_PROCESS_SET_BROWSED_PLAYER = 113; static final int MESSAGE_PROCESS_SET_ADDRESSED_PLAYER = 114; static final int MESSAGE_PROCESS_ADDRESSED_PLAYER_CHANGED = 115; static final int MESSAGE_PROCESS_NOW_PLAYING_CONTENTS_CHANGED = 116; // commands for connection static final int MESSAGE_PROCESS_RC_FEATURES = 301; Loading Loading @@ -361,7 +362,6 @@ class AvrcpControllerStateMachine extends StateMachine { boolean updateTrack = mAddressedPlayer.updateCurrentTrack((TrackInfo) msg.obj); if (updateTrack) { mBrowseTree.mNowPlayingNode.setCached(false); broadcastMetaDataChanged( mAddressedPlayer.getCurrentTrack().getMediaMetaData()); } Loading Loading @@ -398,6 +398,12 @@ class AvrcpControllerStateMachine extends StateMachine { sendMessage(MESSAGE_PROCESS_SET_ADDRESSED_PLAYER); break; case MESSAGE_PROCESS_NOW_PLAYING_CONTENTS_CHANGED: mBrowseTree.mNowPlayingNode.setCached(false); mGetFolderList.setFolder(mBrowseTree.mNowPlayingNode.getID()); transitionTo(mGetFolderList); break; default: Log.d(TAG, "Unhandled message" + msg.what); return false; Loading android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpPlayer.java +2 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,8 @@ class AvrcpPlayer { break; } return new PlaybackState.Builder().setState(mPlayStatus, position, speed) .setActions(mAvailableActions).build(); .setActions(mAvailableActions).setActiveQueueItemId(mCurrentTrack.mTrackNum - 1) .build(); } public synchronized boolean updateCurrentTrack(TrackInfo update) { Loading Loading
android/app/jni/com_android_bluetooth_avrcp_controller.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ static jmethodID method_handleChangeFolderRsp; static jmethodID method_handleSetBrowsedPlayerRsp; static jmethodID method_handleSetAddressedPlayerRsp; static jmethodID method_handleAddressedPlayerChanged; static jmethodID method_handleNowPlayingContentChanged; static jclass class_MediaBrowser_MediaItem; static jclass class_AvrcpPlayer; Loading Loading @@ -591,6 +592,17 @@ static void btavrcp_addressed_player_changed_callback(const RawAddress& bd_addr, method_handleAddressedPlayerChanged, (jint)id); } static void btavrcp_now_playing_content_changed_callback( const RawAddress& bd_addr) { ALOGI("%s", __func__); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; sCallbackEnv->CallVoidMethod(sCallbacksObj, method_handleNowPlayingContentChanged); } static btrc_ctrl_callbacks_t sBluetoothAvrcpCallbacks = { sizeof(sBluetoothAvrcpCallbacks), btavrcp_passthrough_response_callback, Loading @@ -609,7 +621,8 @@ static btrc_ctrl_callbacks_t sBluetoothAvrcpCallbacks = { btavrcp_change_path_callback, btavrcp_set_browsed_player_callback, btavrcp_set_addressed_player_callback, btavrcp_addressed_player_changed_callback}; btavrcp_addressed_player_changed_callback, btavrcp_now_playing_content_changed_callback}; static void classInitNative(JNIEnv* env, jclass clazz) { method_handlePassthroughRsp = Loading Loading @@ -673,6 +686,8 @@ static void classInitNative(JNIEnv* env, jclass clazz) { env->GetMethodID(clazz, "handleSetAddressedPlayerRsp", "(I)V"); method_handleAddressedPlayerChanged = env->GetMethodID(clazz, "handleAddressedPlayerChanged", "(I)V"); method_handleNowPlayingContentChanged = env->GetMethodID(clazz, "handleNowPlayingContentChanged", "()V"); ALOGI("%s: succeeds", __func__); } Loading
android/app/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,7 @@ <string name="process" translate="false"><xliff:g id="x" /></string> <string name="bluetooth_a2dp_sink_queue_name">Now Playing</string> <string name="bluetooth_map_settings_save">Save</string> <string name="bluetooth_map_settings_cancel">Cancel</string> <string name="bluetooth_map_settings_intro">Select the accounts you want to share through Bluetooth. You still have to accept any access to the accounts when connecting.</string> Loading
android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java +8 −0 Original line number Diff line number Diff line Loading @@ -904,6 +904,14 @@ public class AvrcpControllerService extends ProfileService { mAvrcpCtSm.sendMessage(msg); } private void handleNowPlayingContentChanged() { if (DBG) { Log.d(TAG, "handleNowPlayingContentChanged"); } mAvrcpCtSm.sendMessage( AvrcpControllerStateMachine.MESSAGE_PROCESS_NOW_PLAYING_CONTENTS_CHANGED); } @Override public void dump(StringBuilder sb) { super.dump(sb); Loading
android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java +7 −1 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ class AvrcpControllerStateMachine extends StateMachine { static final int MESSAGE_PROCESS_SET_BROWSED_PLAYER = 113; static final int MESSAGE_PROCESS_SET_ADDRESSED_PLAYER = 114; static final int MESSAGE_PROCESS_ADDRESSED_PLAYER_CHANGED = 115; static final int MESSAGE_PROCESS_NOW_PLAYING_CONTENTS_CHANGED = 116; // commands for connection static final int MESSAGE_PROCESS_RC_FEATURES = 301; Loading Loading @@ -361,7 +362,6 @@ class AvrcpControllerStateMachine extends StateMachine { boolean updateTrack = mAddressedPlayer.updateCurrentTrack((TrackInfo) msg.obj); if (updateTrack) { mBrowseTree.mNowPlayingNode.setCached(false); broadcastMetaDataChanged( mAddressedPlayer.getCurrentTrack().getMediaMetaData()); } Loading Loading @@ -398,6 +398,12 @@ class AvrcpControllerStateMachine extends StateMachine { sendMessage(MESSAGE_PROCESS_SET_ADDRESSED_PLAYER); break; case MESSAGE_PROCESS_NOW_PLAYING_CONTENTS_CHANGED: mBrowseTree.mNowPlayingNode.setCached(false); mGetFolderList.setFolder(mBrowseTree.mNowPlayingNode.getID()); transitionTo(mGetFolderList); break; default: Log.d(TAG, "Unhandled message" + msg.what); return false; Loading
android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpPlayer.java +2 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,8 @@ class AvrcpPlayer { break; } return new PlaybackState.Builder().setState(mPlayStatus, position, speed) .setActions(mAvailableActions).build(); .setActions(mAvailableActions).setActiveQueueItemId(mCurrentTrack.mTrackNum - 1) .build(); } public synchronized boolean updateCurrentTrack(TrackInfo update) { Loading