Simplify system routing activity
This is a non-functional change removing unused code. Simplifies
following changes related to transfer initiation.
Bug: b/319645714
Test: Manually using the app.
Test: Presubmit.
Change-Id: Icb7a4c4916420303053e9fd53930f18e0005a73a
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java
index 73d57fe..46e5a19 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java
@@ -53,16 +53,9 @@
private static final int REQUEST_CODE_BLUETOOTH_CONNECT = 4199;
- @NonNull
- private final SystemRoutesAdapter mSystemRoutesAdapter = new SystemRoutesAdapter();
- @NonNull
- private final List<SystemRoutesSource> mSystemRoutesSources = new ArrayList<>();
- @NonNull
- private final SystemRoutesSourceCallback mSystemRoutesSourceCallback =
- new SystemRoutesSourceCallback();
-
- @NonNull
- private SwipeRefreshLayout mSwipeRefreshLayout;
+ @NonNull private final SystemRoutesAdapter mSystemRoutesAdapter = new SystemRoutesAdapter();
+ @NonNull private final List<SystemRoutesSource> mSystemRoutesSources = new ArrayList<>();
+ @NonNull private SwipeRefreshLayout mSwipeRefreshLayout;
/**
* Creates and launches an intent to start current activity.
@@ -170,20 +163,8 @@
}
for (SystemRoutesSource source: mSystemRoutesSources) {
- source.setOnRoutesChangedListener(mSystemRoutesSourceCallback);
+ source.setOnRoutesChangedListener(this::refreshSystemRoutesList);
source.start();
}
}
-
- private class SystemRoutesSourceCallback implements SystemRoutesSource.OnRoutesChangedListener {
- @Override
- public void onRouteAdded(@NonNull SystemRouteItem routeItem) {
- refreshSystemRoutesList();
- }
-
- @Override
- public void onRouteRemoved(@NonNull SystemRouteItem routeItem) {
- refreshSystemRoutesList();
- }
- }
}
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AndroidXMediaRouterSystemRoutesSource.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AndroidXMediaRouterSystemRoutesSource.java
index 7e553ed..df83d49 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AndroidXMediaRouterSystemRoutesSource.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AndroidXMediaRouterSystemRoutesSource.java
@@ -36,19 +36,20 @@
private final MediaRouter mMediaRouter;
@NonNull
- private final MediaRouter.Callback mMediaRouterCallback = new MediaRouter.Callback() {
- @Override
- public void onRouteAdded(@NonNull MediaRouter router,
- @NonNull MediaRouter.RouteInfo route) {
- mOnRoutesChangedListener.onRouteAdded(createRouteItemFor(route));
- }
+ private final MediaRouter.Callback mMediaRouterCallback =
+ new MediaRouter.Callback() {
+ @Override
+ public void onRouteAdded(
+ @NonNull MediaRouter router, @NonNull MediaRouter.RouteInfo route) {
+ mOnRoutesChangedListener.run();
+ }
- @Override
- public void onRouteRemoved(@NonNull MediaRouter router,
- @NonNull MediaRouter.RouteInfo route) {
- mOnRoutesChangedListener.onRouteRemoved(createRouteItemFor(route));
- }
- };
+ @Override
+ public void onRouteRemoved(
+ @NonNull MediaRouter router, @NonNull MediaRouter.RouteInfo route) {
+ mOnRoutesChangedListener.run();
+ }
+ };
/** Returns a new instance. */
@NonNull
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AudioManagerSystemRoutesSource.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AudioManagerSystemRoutesSource.java
index 80d6e33..8888fb76 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AudioManagerSystemRoutesSource.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/AudioManagerSystemRoutesSource.java
@@ -40,21 +40,18 @@
private final AudioManager mAudioManager;
@NonNull
- private final AudioDeviceCallback mAudioDeviceCallback = new AudioDeviceCallback() {
- @Override
- public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
- for (AudioDeviceInfo audioDeviceInfo: addedDevices) {
- mOnRoutesChangedListener.onRouteAdded(createRouteItemFor(audioDeviceInfo));
- }
- }
+ private final AudioDeviceCallback mAudioDeviceCallback =
+ new AudioDeviceCallback() {
+ @Override
+ public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
+ mOnRoutesChangedListener.run();
+ }
- @Override
- public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
- for (AudioDeviceInfo audioDeviceInfo: removedDevices) {
- mOnRoutesChangedListener.onRouteRemoved(createRouteItemFor(audioDeviceInfo));
- }
- }
- };
+ @Override
+ public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
+ mOnRoutesChangedListener.run();
+ }
+ };
/** Returns a new instance. */
@NonNull
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/BluetoothManagerSystemRoutesSource.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/BluetoothManagerSystemRoutesSource.java
index 96fab5b..a3b52b6 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/BluetoothManagerSystemRoutesSource.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/BluetoothManagerSystemRoutesSource.java
@@ -23,7 +23,6 @@
import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothLeAudio;
import android.bluetooth.BluetoothManager;
-import android.bluetooth.BluetoothProfile;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -31,7 +30,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.RequiresPermission;
-import androidx.core.content.IntentCompat;
import com.example.androidx.mediarouting.activities.systemrouting.SystemRouteItem;
import com.example.androidx.mediarouting.activities.systemrouting.SystemRoutesSourceItem;
@@ -117,27 +115,14 @@
@Override
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
public void onReceive(Context context, Intent intent) {
- BluetoothDevice device = IntentCompat.getParcelableExtra(intent,
- BluetoothDevice.EXTRA_DEVICE, android.bluetooth.BluetoothDevice.class);
-
switch (intent.getAction()) {
case BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED:
case BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED:
case BluetoothLeAudio.ACTION_LE_AUDIO_CONNECTION_STATE_CHANGED:
- handleConnectionStateChanged(intent, device);
+ mOnRoutesChangedListener.run();
break;
- }
- }
-
- @RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
- private void handleConnectionStateChanged(Intent intent,
- BluetoothDevice device) {
- int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE, -1);
- if (state == BluetoothProfile.STATE_CONNECTED) {
- mOnRoutesChangedListener.onRouteAdded(createRouteItemFor(device));
- } else if (state == BluetoothProfile.STATE_DISCONNECTING
- || state == BluetoothProfile.STATE_DISCONNECTED) {
- mOnRoutesChangedListener.onRouteRemoved(createRouteItemFor(device));
+ default:
+ // Do nothing.
}
}
}
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouter2SystemRoutesSource.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouter2SystemRoutesSource.java
index df60049..0395332 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouter2SystemRoutesSource.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouter2SystemRoutesSource.java
@@ -46,30 +46,30 @@
@NonNull private final Method mSuitabilityStatusMethod;
@NonNull
private final Map<String, MediaRoute2Info> mLastKnownRoutes = new HashMap<>();
+
@NonNull
- private final MediaRouter2.RouteCallback mRouteCallback = new MediaRouter2.RouteCallback() {
- @Override
- public void onRoutesUpdated(@NonNull List<MediaRoute2Info> routes) {
- super.onRoutesUpdated(routes);
+ private final MediaRouter2.RouteCallback mRouteCallback =
+ new MediaRouter2.RouteCallback() {
+ @Override
+ public void onRoutesUpdated(@NonNull List<MediaRoute2Info> routes) {
+ Map<String, MediaRoute2Info> newRoutes = new HashMap<>();
+ boolean routesChanged = false;
+ for (MediaRoute2Info route : routes) {
+ routesChanged |= !mLastKnownRoutes.containsKey(route.getId());
+ newRoutes.put(route.getId(), route);
+ }
- Map<String, MediaRoute2Info> routesLookup = new HashMap<>();
- for (MediaRoute2Info route: routes) {
- if (!mLastKnownRoutes.containsKey(route.getId())) {
- mOnRoutesChangedListener.onRouteAdded(createRouteItemFor(route));
+ for (MediaRoute2Info route : mLastKnownRoutes.values()) {
+ routesChanged |= !newRoutes.containsKey(route.getId());
+ }
+
+ mLastKnownRoutes.clear();
+ mLastKnownRoutes.putAll(newRoutes);
+ if (routesChanged) {
+ mOnRoutesChangedListener.run();
+ }
}
- routesLookup.put(route.getId(), route);
- }
-
- for (MediaRoute2Info route: mLastKnownRoutes.values()) {
- if (!routesLookup.containsKey(route.getId())) {
- mOnRoutesChangedListener.onRouteRemoved(createRouteItemFor(route));
- }
- }
-
- mLastKnownRoutes.clear();
- mLastKnownRoutes.putAll(routesLookup);
- }
- };
+ };
/** Returns a new instance. */
@NonNull
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouterSystemRoutesSource.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouterSystemRoutesSource.java
index 438ccfc..26a5188 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouterSystemRoutesSource.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/MediaRouterSystemRoutesSource.java
@@ -34,19 +34,19 @@
private final MediaRouter mMediaRouter;
@NonNull
- private final MediaRouter.Callback mCallback = new MediaRouter.SimpleCallback() {
- @Override
- public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo info) {
- super.onRouteAdded(router, info);
- mOnRoutesChangedListener.onRouteAdded(createRouteItemFor(info));
- }
+ private final MediaRouter.Callback mCallback =
+ new MediaRouter.SimpleCallback() {
+ @Override
+ public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo info) {
+ mOnRoutesChangedListener.run();
+ }
- @Override
- public void onRouteRemoved(MediaRouter router, MediaRouter.RouteInfo info) {
- super.onRouteRemoved(router, info);
- mOnRoutesChangedListener.onRouteRemoved(createRouteItemFor(info));
- }
- };
+ @Override
+ public void onRouteRemoved(MediaRouter router, MediaRouter.RouteInfo info) {
+ super.onRouteRemoved(router, info);
+ mOnRoutesChangedListener.run();
+ }
+ };
/** Returns a new instance. */
@NonNull
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/SystemRoutesSource.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/SystemRoutesSource.java
index f5a32db..a2a390f 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/SystemRoutesSource.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/source/SystemRoutesSource.java
@@ -17,7 +17,6 @@
package com.example.androidx.mediarouting.activities.systemrouting.source;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import com.example.androidx.mediarouting.activities.systemrouting.SystemRouteItem;
import com.example.androidx.mediarouting.activities.systemrouting.SystemRoutesSourceItem;
@@ -29,23 +28,11 @@
*/
public abstract class SystemRoutesSource {
- private static final NoOpOnRoutesChangedListener NO_OP_ON_ROUTES_CHANGED_LISTENER =
- new NoOpOnRoutesChangedListener();
+ @NonNull protected Runnable mOnRoutesChangedListener = () -> {};
- @NonNull
- protected OnRoutesChangedListener mOnRoutesChangedListener = NO_OP_ON_ROUTES_CHANGED_LISTENER;
-
- /**
- * Sets {@link OnRoutesChangedListener} and subscribes to the source updates.
- * To unsubscribe from the routes update pass {@code null} instead of the listener.
- */
- public void setOnRoutesChangedListener(
- @Nullable OnRoutesChangedListener onRoutesChangedListener) {
- if (onRoutesChangedListener != null) {
- mOnRoutesChangedListener = onRoutesChangedListener;
- } else {
- mOnRoutesChangedListener = NO_OP_ON_ROUTES_CHANGED_LISTENER;
- }
+ /** Sets a {@link Runnable} to invoke whenever routes change. */
+ public void setOnRoutesChangedListener(@NonNull Runnable onRoutesChangedListener) {
+ mOnRoutesChangedListener = onRoutesChangedListener;
}
/**
@@ -74,41 +61,4 @@
*/
@NonNull
public abstract List<SystemRouteItem> fetchSourceRouteItems();
-
- /**
- * An interface for listening to routes changes: whether the route has been added or removed
- * from the source.
- */
- public interface OnRoutesChangedListener {
-
- /**
- * Called when a route has been added to the source's routes list.
- *
- * @param routeItem a newly added route.
- */
- void onRouteAdded(@NonNull SystemRouteItem routeItem);
-
- /**
- * Called when a route has been removed from the source's routes list.
- *
- * @param routeItem a recently removed route.
- */
- void onRouteRemoved(@NonNull SystemRouteItem routeItem);
- }
-
- /**
- * Default no-op implementation of {@link OnRoutesChangedListener}.
- * Used as a fallback implement when there is no listener.
- */
- private static final class NoOpOnRoutesChangedListener implements OnRoutesChangedListener {
- @Override
- public void onRouteAdded(@NonNull SystemRouteItem routeItem) {
- // Empty on purpose.
- }
-
- @Override
- public void onRouteRemoved(@NonNull SystemRouteItem routeItem) {
- // Empty on purpose.
- }
- }
}