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 =