diff --git a/services/core/java/com/android/server/media/BluetoothRouteProvider.java b/services/core/java/com/android/server/media/BluetoothRouteProvider.java index c7575d4fc8a4b..4def7db76bc5f 100644 --- a/services/core/java/com/android/server/media/BluetoothRouteProvider.java +++ b/services/core/java/com/android/server/media/BluetoothRouteProvider.java @@ -52,6 +52,7 @@ class BluetoothRouteProvider { private static BluetoothRouteProvider sInstance; @SuppressWarnings("WeakerAccess") /* synthetic access */ + // Maps hardware address to BluetoothRouteInfo final Map mBluetoothRoutes = new HashMap<>(); @SuppressWarnings("WeakerAccess") /* synthetic access */ BluetoothRouteInfo mSelectedRoute = null; @@ -127,9 +128,10 @@ class BluetoothRouteProvider { return; } - BluetoothRouteInfo btRouteInfo = mBluetoothRoutes.get(routeId); + BluetoothRouteInfo btRouteInfo = findBluetoothRouteWithRouteId(routeId); + if (btRouteInfo == null) { - Slog.w(TAG, "transferTo: unknown route id=" + routeId); + Slog.w(TAG, "transferTo: Unknown route. ID=" + routeId); return; } @@ -194,6 +196,18 @@ class BluetoothRouteProvider { return routes; } + BluetoothRouteInfo findBluetoothRouteWithRouteId(String routeId) { + if (routeId == null) { + return null; + } + for (BluetoothRouteInfo btRouteInfo : mBluetoothRoutes.values()) { + if (TextUtils.equals(btRouteInfo.route.getId(), routeId)) { + return btRouteInfo; + } + } + return null; + } + /** * Updates the volume for {@link AudioManager#getDevicesForStream(int) devices}. *