Remove MediaRouter2 dependency in RouteListingPreferenceActivity
Bug: 266561322
Test: Manually using the app.
Change-Id: I557ab682cb8245883df1b8eae33b88ab6e0497dc
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/RouteListingPreferenceActivity.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/RouteListingPreferenceActivity.java
index f9aec93..924ca4d 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/RouteListingPreferenceActivity.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/RouteListingPreferenceActivity.java
@@ -20,9 +20,6 @@
import static androidx.mediarouter.media.RouteListingPreference.Item.FLAG_ONGOING_SESSION_MANAGED;
import static androidx.mediarouter.media.RouteListingPreference.Item.FLAG_SUGGESTED;
-import android.annotation.SuppressLint;
-import android.media.MediaRoute2Info;
-import android.media.MediaRouter2;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -41,6 +38,7 @@
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.os.BuildCompat;
+import androidx.mediarouter.media.MediaRouter;
import androidx.mediarouter.media.RouteListingPreference;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -51,12 +49,12 @@
import com.example.androidx.mediarouting.RoutesManager.RouteListingPreferenceItemHolder;
import com.example.androidx.mediarouting.ui.UiUtils;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
-import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
/** Allows the user to manage the route listing preference of this app. */
public class RouteListingPreferenceActivity extends AppCompatActivity {
@@ -120,12 +118,10 @@
mRoutesManager.getRouteListingPreferenceItems().size()));
}
- // This method won't run before U due to checks in onCreate().
- @SuppressLint({"NewApi", "ClassVerificationFailure"})
private void setUpRouteListingPreferenceItemEditionDialog(int itemPositionInList) {
List<RouteListingPreferenceItemHolder> routeListingPreference =
mRoutesManager.getRouteListingPreferenceItems();
- List<MediaRoute2Info> routesWithNoAssociatedListingPreferenceItem =
+ List<MediaRouter.RouteInfo> routesWithNoAssociatedListingPreferenceItem =
getRoutesWithNoAssociatedListingPreferenceItem();
if (itemPositionInList == routeListingPreference.size()
&& routesWithNoAssociatedListingPreferenceItem.isEmpty()) {
@@ -162,12 +158,11 @@
sessionManagedCheckBox.setChecked(itemToEdit.hasFlag(FLAG_ONGOING_SESSION_MANAGED));
suggestedRouteCheckBox.setChecked(itemToEdit.hasFlag(FLAG_SUGGESTED));
}
- for (MediaRoute2Info mediaRoute2Info : routesWithNoAssociatedListingPreferenceItem) {
+ for (MediaRouter.RouteInfo routeInfo : routesWithNoAssociatedListingPreferenceItem) {
spinnerEntries.add(
new RouteListingPreferenceItemHolder(
- new RouteListingPreference.Item.Builder(mediaRoute2Info.getId())
- .build(),
- String.valueOf(mediaRoute2Info.getName())));
+ new RouteListingPreference.Item.Builder(routeInfo.getId()).build(),
+ routeInfo.getName()));
}
routeSpinner.setAdapter(
new ArrayAdapter<>(
@@ -231,25 +226,25 @@
mRoutesManager.setRouteListingPreferenceItems(newRouteListingPreference);
}
- // This method won't run before U due to checks in onCreate().
- @SuppressLint({"NewApi", "ClassVerificationFailure"})
@NonNull
- private List<MediaRoute2Info> getRoutesWithNoAssociatedListingPreferenceItem() {
+ private ImmutableList<MediaRouter.RouteInfo> getRoutesWithNoAssociatedListingPreferenceItem() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
- return Collections.emptyList();
+ return ImmutableList.of();
}
- Set<String> routesWithAssociatedRouteListingPreferenceItem =
- mRoutesManager.getRouteListingPreferenceItems().stream()
- .map(element -> element.mItem.getRouteId())
- .collect(Collectors.toSet());
- List<MediaRoute2Info> availableRoutes =
- MediaRouter2.getInstance(/* context= */ this).getRoutes();
- return availableRoutes.stream()
- .filter(
- route ->
- !routesWithAssociatedRouteListingPreferenceItem.contains(
- route.getId()))
- .collect(Collectors.toList());
+ Set<String> routesWithAssociatedRouteListingPreferenceItem = new HashSet<>();
+ for (RouteListingPreferenceItemHolder element :
+ mRoutesManager.getRouteListingPreferenceItems()) {
+ String routeId = element.mItem.getRouteId();
+ routesWithAssociatedRouteListingPreferenceItem.add(routeId);
+ }
+
+ ImmutableList.Builder<MediaRouter.RouteInfo> resultBuilder = ImmutableList.builder();
+ for (MediaRouter.RouteInfo route : MediaRouter.getInstance(this).getRoutes()) {
+ if (!routesWithAssociatedRouteListingPreferenceItem.contains(route.getId())) {
+ resultBuilder.add(route);
+ }
+ }
+ return resultBuilder.build();
}
private class RecyclerViewCallback extends ItemTouchHelper.SimpleCallback {