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}.
      *