AVRCP_Browse: Update player switch to browse active

Proactively update player switch only to browse active
device (even though it's A2DP inactive device)

CRs-Fixed: 2516971
Change-Id: Ia87f654e86fcc3087f030ee12ae32faddd217bc2
diff --git a/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java b/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
index 6a0ebc9..d001554 100644
--- a/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
+++ b/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
@@ -126,7 +126,6 @@
     private int mPlayStatusChangedNT;
     private byte mReportedPlayStatus;
     private int mPlayerStatusChangeNT;
-    //private int mReportedPlayStatus;
     private int mTrackChangedNT;
     private int mPlayPosChangedNT;
     private long mSongLengthMs;
@@ -888,7 +887,6 @@
                        }
                     }
                 }
-                //mLastLocalVolume = -1;
                 break;
             }
 
@@ -2126,7 +2124,7 @@
                 } else {
                     /* playlist starts with 0 for default player*/
                     mediaNumber = longStringOrBlank((data.getLong(MediaMetadata.METADATA_KEY_TRACK_NUMBER) + 1L));
-            }
+                }
                 mediaTotalNumber = longStringOrBlank(data.getLong(MediaMetadata.METADATA_KEY_NUM_TRACKS));
                 genre = stringOrBlank(data.getString(MediaMetadata.METADATA_KEY_GENRE));
                 playingTimeMs = data.getLong(MediaMetadata.METADATA_KEY_DURATION);
@@ -3321,21 +3319,15 @@
         BrowsedMediaPlayer_ext player = mAvrcpBrowseManager.getBrowsedMediaPlayer(dummyaddr);
         Log.w(TAG, "SetBrowsePackage for pkg " + PackageName + "svc" + browseService);
         if (browseService != null && !browseService.isEmpty()) {
-            BluetoothDevice active_device = null;
-            for (int i = 0; i < maxAvrcpConnections; i++) {
-                if (deviceFeatures[i].mCurrentDevice != null &&
-                        deviceFeatures[i].isActiveDevice == true) {
-                    Log.w(TAG,"Device " + deviceFeatures[i].mCurrentDevice.getAddress() +" active");
-                    active_device = deviceFeatures[i].mCurrentDevice;
-                }
-            }
-            if (active_device != null) {
+            BluetoothDevice browse_active_device = mBrowsingActiveDevice;
+            if (browse_active_device != null) {
                 is_player_updated_for_browse = true;
-                byte[] addr = getByteAddress(active_device);
+                byte[] addr = getByteAddress(browse_active_device);
                 if (mAvrcpBrowseManager.getBrowsedMediaPlayer(addr) != null) {
-                    mCurrentBrowsingDevice = active_device;
                     Log.w(TAG, "Addr Player update to Browse " + PackageName +
                             " already req MBS list " + mPkgRequestedMBSConnect);
+                    mCurrentBrowsingDevice = browse_active_device;
+                    Log.w(TAG, "Addr Player update to Browse " + PackageName);
                     mAvrcpBrowseManager.getBrowsedMediaPlayer(addr).
                             setCurrentPackage(PackageName, browseService);
                     if (player != null && !mPkgRequestedMBSConnect.contains(PackageName)) {
@@ -3545,8 +3537,6 @@
             (Objects.equals(mDevice, deviceFeatures[index].mCurrentDevice) ||
              (mDevice.isTwsPlusDevice() && device.isTwsPlusDevice()))) {
             setActiveDevice(deviceFeatures[index].mCurrentDevice);
-            //setActiveDevice(mDevice);
-            //below line to send setAbsolute volume if device is suporting absolute volume
             //When A2dp playing on DUT and Remote got connected, send proper playstatus
             if (isPlayingState(mCurrentPlayerState) &&
                 mA2dpService.isA2dpPlaying(device)) {
@@ -3580,16 +3570,11 @@
                 deviceFeatures[i].mRemoteVolume = -1;
                 deviceFeatures[i].mLocalVolume = -1;
             }
-            /* Multicast scenario both abs vol supported
-               Active device got disconnected so make other
-               device which is left supporting absolute
-               volume as active device
-            */
             if (deviceFeatures[i].mCurrentDevice != null && device != null &&
                     !(Objects.equals(deviceFeatures[i].mCurrentDevice, device))) {
                 Log.i(TAG,"setAvrcpDisconnectedDevice : Active device changed to index = " + i);
                 if (device.isTwsPlusDevice() &&
-                    isTwsPlusPair(device,deviceFeatures[i].mCurrentDevice )) {
+                    isTwsPlusPair(device,deviceFeatures[i].mCurrentDevice)) {
                     Log.i(TAG,"TWS+ pair got disconnected,update absVolume");
                     updateAbsVolume = true;
                     Log.i(TAG,"TWS+ pair disconnected, set mTwsPairDisconnected for index " + i);
diff --git a/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java b/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java
index 5fe0028..9699379 100644
--- a/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java
+++ b/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java
@@ -166,6 +166,8 @@
                 mHandler.removeMessages(MSG_TIMEOUT, mCallbackPackageName);
                 Message msg = mHandler.obtainMessage(MSG_DISCONNECT_PLAYER, 0, 0, mBrowser);
                 mHandler.sendMessage(msg);
+                mBrowser = null;
+                return;
             }
             mConnState = CONNECTED;
             Log.d(TAG, "mediaBrowser CONNECTED to " + mPackageName);
@@ -182,6 +184,8 @@
             if ((mHandler != null) && !mBrowsablePlayerList.contains(mCallbackPackageName)
                     && mHandler.hasMessages(MSG_TIMEOUT, mCallbackPackageName)) {
                 mHandler.removeMessages(MSG_TIMEOUT, mCallbackPackageName);
+                mBrowser = null;
+                return;
             }
             mConnState = DISCONNECTED;
             // Remove what could be a circular dependency causing GC to never happen on this object
@@ -198,6 +202,8 @@
             if ((mHandler != null) && !mBrowsablePlayerList.contains(mCallbackPackageName)
                     && mHandler.hasMessages(MSG_TIMEOUT, mCallbackPackageName)) {
                 mHandler.removeMessages(MSG_TIMEOUT, mCallbackPackageName);
+                mBrowser = null;
+                return;
             }
             mBrowser = null;
             mConnState = SUSPENDED;