diff options
4 files changed, 34 insertions, 24 deletions
diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java index e5ad569bb24f..54c0bc94c2d0 100644 --- a/media/java/android/media/MediaRoute2Info.java +++ b/media/java/android/media/MediaRoute2Info.java @@ -317,9 +317,10 @@ public final class MediaRoute2Info implements Parcelable {      @ConnectionState      final int mConnectionState;      final String mClientPackageName; -    final int mVolume; -    final int mVolumeMax;      final int mVolumeHandling; +    final int mVolumeMax; +    final int mVolume; +    final String mAddress;      final Bundle mExtras;      final String mProviderId; @@ -336,6 +337,7 @@ public final class MediaRoute2Info implements Parcelable {          mVolumeHandling = builder.mVolumeHandling;          mVolumeMax = builder.mVolumeMax;          mVolume = builder.mVolume; +        mAddress = builder.mAddress;          mExtras = builder.mExtras;          mProviderId = builder.mProviderId;      } @@ -353,6 +355,7 @@ public final class MediaRoute2Info implements Parcelable {          mVolumeHandling = in.readInt();          mVolumeMax = in.readInt();          mVolume = in.readInt(); +        mAddress = in.readString();          mExtras = in.readBundle();          mProviderId = in.readString();      } @@ -483,6 +486,15 @@ public final class MediaRoute2Info implements Parcelable {          return mVolume;      } +    /** +     * Gets the hardware address of the route if available. +     * @hide +     */ +    @Nullable +    public String getAddress() { +        return mAddress; +    } +      @Nullable      public Bundle getExtras() {          return mExtras == null ? null : new Bundle(mExtras); @@ -564,6 +576,7 @@ public final class MediaRoute2Info implements Parcelable {                  && (mVolumeHandling == other.mVolumeHandling)                  && (mVolumeMax == other.mVolumeMax)                  && (mVolume == other.mVolume) +                && Objects.equals(mAddress, other.mAddress)                  && Objects.equals(mProviderId, other.mProviderId);      } @@ -572,7 +585,7 @@ public final class MediaRoute2Info implements Parcelable {          // Note: mExtras is not included.          return Objects.hash(mId, mName, mFeatures, mType, mIsSystem, mIconUri, mDescription,                  mConnectionState, mClientPackageName, mVolumeHandling, mVolumeMax, mVolume, -                mProviderId); +                mAddress, mProviderId);      }      @Override @@ -614,6 +627,7 @@ public final class MediaRoute2Info implements Parcelable {          dest.writeInt(mVolumeHandling);          dest.writeInt(mVolumeMax);          dest.writeInt(mVolume); +        dest.writeString(mAddress);          dest.writeBundle(mExtras);          dest.writeString(mProviderId);      } @@ -637,6 +651,7 @@ public final class MediaRoute2Info implements Parcelable {          int mVolumeHandling = PLAYBACK_VOLUME_FIXED;          int mVolumeMax;          int mVolume; +        String mAddress;          Bundle mExtras;          String mProviderId; @@ -669,24 +684,7 @@ public final class MediaRoute2Info implements Parcelable {           * @param routeInfo the existing instance to copy data from.           */          public Builder(@NonNull MediaRoute2Info routeInfo) { -            Objects.requireNonNull(routeInfo, "routeInfo must not be null"); - -            mId = routeInfo.mId; -            mName = routeInfo.mName; -            mFeatures = new ArrayList<>(routeInfo.mFeatures); -            mType = routeInfo.mType; -            mIsSystem = routeInfo.mIsSystem; -            mIconUri = routeInfo.mIconUri; -            mDescription = routeInfo.mDescription; -            mConnectionState = routeInfo.mConnectionState; -            mClientPackageName = routeInfo.mClientPackageName; -            mVolumeHandling = routeInfo.mVolumeHandling; -            mVolumeMax = routeInfo.mVolumeMax; -            mVolume = routeInfo.mVolume; -            if (routeInfo.mExtras != null) { -                mExtras = new Bundle(routeInfo.mExtras); -            } -            mProviderId = routeInfo.mProviderId; +            this(routeInfo.mId, routeInfo);          }          /** @@ -715,6 +713,7 @@ public final class MediaRoute2Info implements Parcelable {              mVolumeHandling = routeInfo.mVolumeHandling;              mVolumeMax = routeInfo.mVolumeMax;              mVolume = routeInfo.mVolume; +            mAddress = routeInfo.mAddress;              if (routeInfo.mExtras != null) {                  mExtras = new Bundle(routeInfo.mExtras);              } @@ -865,6 +864,16 @@ public final class MediaRoute2Info implements Parcelable {          }          /** +         * Sets the hardware address of the route. +         * @hide +         */ +        @NonNull +        public Builder setAddress(String address) { +            mAddress = address; +            return this; +        } + +        /**           * Sets a bundle of extras for the route.           * <p>           * Note: The extras will not affect the result of {@link MediaRoute2Info#equals(Object)}. diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index b83a9c4835e0..3bdf1d0bf407 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -430,7 +430,7 @@ public class InfoMediaManager extends MediaManager {              case TYPE_HEARING_AID:              case TYPE_BLUETOOTH_A2DP:                  final BluetoothDevice device = -                        BluetoothAdapter.getDefaultAdapter().getRemoteDevice(route.getOriginalId()); +                        BluetoothAdapter.getDefaultAdapter().getRemoteDevice(route.getAddress());                  final CachedBluetoothDevice cachedDevice =                          mBluetoothManager.getCachedDeviceManager().findDevice(device);                  if (cachedDevice != null) { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java index 248eb5b96b92..94d95f06050d 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java @@ -681,7 +681,7 @@ public class InfoMediaManagerTest {          assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();          when(route2Info.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); -        when(route2Info.getOriginalId()).thenReturn("00:00:00:00:00:00"); +        when(route2Info.getAddress()).thenReturn("00:00:00:00:00:00");          when(mLocalBluetoothManager.getCachedDeviceManager())                  .thenReturn(cachedBluetoothDeviceManager);          when(cachedBluetoothDeviceManager.findDevice(any(BluetoothDevice.class))) @@ -703,7 +703,7 @@ public class InfoMediaManagerTest {                  mock(CachedBluetoothDeviceManager.class);          when(route2Info.getType()).thenReturn(TYPE_BLUETOOTH_A2DP); -        when(route2Info.getOriginalId()).thenReturn("00:00:00:00:00:00"); +        when(route2Info.getAddress()).thenReturn("00:00:00:00:00:00");          when(mLocalBluetoothManager.getCachedDeviceManager())                  .thenReturn(cachedBluetoothDeviceManager);          when(cachedBluetoothDeviceManager.findDevice(any(BluetoothDevice.class))) diff --git a/services/core/java/com/android/server/media/BluetoothRouteProvider.java b/services/core/java/com/android/server/media/BluetoothRouteProvider.java index 2461b0ce93a5..30a636d4240e 100644 --- a/services/core/java/com/android/server/media/BluetoothRouteProvider.java +++ b/services/core/java/com/android/server/media/BluetoothRouteProvider.java @@ -247,6 +247,7 @@ class BluetoothRouteProvider {                  .setType(type)                  .setVolumeHandling(MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE)                  .setVolumeMax(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)) +                .setAddress(device.getAddress())                  .build();          return newBtRoute;      }  |