Always assign a free ID to the new MediaPlayer

It used current size plus 1 as the new MediaPlayer's ID in previous
design and if a player was removed before, the ID of size+1 maybe was
still in used but a ID < size+1 was freed.

This change finds a free ID by checking if the number is not in the
mMediaPlayerIds so we never use same ID in two player.

Bug: 110511529
Test: manually switching players by force-stop / disabled
runtest bluetooth -c com.android.bluetooth.avrcp.MediaPlayerWrapperTest

Change-Id: Ia9e67a34b5915ad615746e6b334c1596ee639c1a
(cherry picked from commit e2da76c960a90d9d9e52ef2cc92a5e7a00c122d1)
diff --git a/src/com/android/bluetooth/newavrcp/MediaPlayerList.java b/src/com/android/bluetooth/newavrcp/MediaPlayerList.java
index 1a10979..74ea039 100644
--- a/src/com/android/bluetooth/newavrcp/MediaPlayerList.java
+++ b/src/com/android/bluetooth/newavrcp/MediaPlayerList.java
@@ -152,7 +152,7 @@
                 for (BrowsedPlayerWrapper wrapper : players) {
                     // Generate new id and add the browsable player
                     if (!mMediaPlayerIds.containsKey(wrapper.getPackageName())) {
-                        mMediaPlayerIds.put(wrapper.getPackageName(), mMediaPlayerIds.size() + 1);
+                        mMediaPlayerIds.put(wrapper.getPackageName(), getFreeMediaPlayerId());
                     }
 
                     d("Adding Browser Wrapper for " + wrapper.getPackageName() + " with id "
@@ -206,6 +206,12 @@
         return BLUETOOTH_PLAYER_ID;
     }
 
+    int getFreeMediaPlayerId() {
+        int id = 0;
+        while (mMediaPlayerIds.containsValue(++id)) {}
+        return id;
+    }
+
     MediaPlayerWrapper getActivePlayer() {
         return mMediaPlayers.get(mActivePlayerId);
     }
@@ -405,7 +411,7 @@
         // that key.
         String packageName = controller.getPackageName();
         if (!mMediaPlayerIds.containsKey(packageName)) {
-            mMediaPlayerIds.put(packageName, mMediaPlayerIds.size() + 1);
+            mMediaPlayerIds.put(packageName, getFreeMediaPlayerId());
         }
 
         int playerId = mMediaPlayerIds.get(packageName);