Enable transfer to hearing aid routes.
There was a bug that transfer fails when a BT route has the route ID
different from its hardware address.
Bug: 157708273
Bug: 152585170
Test: run CTS & manually by assigning random ID to BT devices, which
failed without this CL
Change-Id: Ib2183f96b135bd2cef317234a8532b10994ca86b
diff --git a/services/core/java/com/android/server/media/BluetoothRouteProvider.java b/services/core/java/com/android/server/media/BluetoothRouteProvider.java
index c7575d4..4def7db 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 @@
private static BluetoothRouteProvider sInstance;
@SuppressWarnings("WeakerAccess") /* synthetic access */
+ // Maps hardware address to BluetoothRouteInfo
final Map<String, BluetoothRouteInfo> mBluetoothRoutes = new HashMap<>();
@SuppressWarnings("WeakerAccess") /* synthetic access */
BluetoothRouteInfo mSelectedRoute = null;
@@ -127,9 +128,10 @@
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 @@
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}.
*