Update MediaRouteDescriptor using platform data

The previous attempt to do this was reverted in aosp/2127512.
That attempt was problematic because it entirely discarded the
group descriptor data saved under KEY_GROUP_ROUTE.

This version of the change retains the group descriptor data
saved under KEY_GROUP_ROUTE, overwriting only the fields for
which the platform should be the source of truth.

Bug: 236100132
Test: Manual Cast testing
Change-Id: I5112f4a1057583124abd89d2d73c6a1f52391bfc
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
index c27d26c..e77626e 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
@@ -271,19 +271,25 @@
             Log.w(TAG, "Exception while unparceling control hints.", ex);
         }
 
-        // Create group route descriptor
+        // Create or update the group route descriptor.
+        MediaRouteDescriptor.Builder groupDescriptorBuilder;
         if (groupDescriptor == null) {
-            groupDescriptor = new MediaRouteDescriptor.Builder(
+            groupDescriptorBuilder = new MediaRouteDescriptor.Builder(
                     routingController.getId(), groupRouteName)
                     .setConnectionState(MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED)
-                    .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE)
-                    .setVolume(routingController.getVolume())
-                    .setVolumeMax(routingController.getVolumeMax())
-                    .setVolumeHandling(routingController.getVolumeHandling())
-                    .addControlFilters(initialRouteDescriptor.getControlFilters())
-                    .addGroupMemberIds(selectedRouteIds)
-                    .build();
+                    .setPlaybackType(MediaRouter.RouteInfo.PLAYBACK_TYPE_REMOTE);
+        } else {
+            groupDescriptorBuilder = new MediaRouteDescriptor.Builder(groupDescriptor);
         }
+        groupDescriptor = groupDescriptorBuilder
+                .setVolume(routingController.getVolume())
+                .setVolumeMax(routingController.getVolumeMax())
+                .setVolumeHandling(routingController.getVolumeHandling())
+                .clearControlFilters()
+                .addControlFilters(initialRouteDescriptor.getControlFilters())
+                .clearGroupMemberIds()
+                .addGroupMemberIds(selectedRouteIds)
+                .build();
 
         // Create dynamic route descriptors
         List<String> selectableRouteIds =