diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 0b02b7629b2..074bd8a13c8 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -63,6 +63,10 @@ * Update CMake version to avoid incompatibilities with the latest Android Studio releases ([#9933](https://github.com/google/ExoPlayer/issues/9933)). +* Cast extension: + * Implement `getDeviceInfo()` to be able to identify `CastPlayer` when + controlling playback with a `MediaController` + ([#142](https://github.com/google/ExoPlayer/issues/142)). ### 1.0.0-beta02 (2022-07-21) diff --git a/libraries/cast/src/main/java/androidx/media3/cast/CastPlayer.java b/libraries/cast/src/main/java/androidx/media3/cast/CastPlayer.java index bd27d3479e8..72682c70737 100644 --- a/libraries/cast/src/main/java/androidx/media3/cast/CastPlayer.java +++ b/libraries/cast/src/main/java/androidx/media3/cast/CastPlayer.java @@ -82,6 +82,10 @@ @UnstableApi public final class CastPlayer extends BasePlayer { + /** The {@link DeviceInfo} returned by {@link #getDeviceInfo() this player}. */ + public static final DeviceInfo DEVICE_INFO = + new DeviceInfo(DeviceInfo.PLAYBACK_TYPE_REMOTE, /* minVolume= */ 0, /* maxVolume= */ 0); + static { MediaLibraryInfo.registerModule("media3.cast"); } @@ -729,10 +733,10 @@ public CueGroup getCurrentCues() { return CueGroup.EMPTY_TIME_ZERO; } - /** This method is not supported and always returns {@link DeviceInfo#UNKNOWN}. */ + /** This method always returns {@link CastPlayer#DEVICE_INFO}. */ @Override public DeviceInfo getDeviceInfo() { - return DeviceInfo.UNKNOWN; + return DEVICE_INFO; } /** This method is not supported and always returns {@code 0}. */ diff --git a/libraries/cast/src/test/java/androidx/media3/cast/CastPlayerTest.java b/libraries/cast/src/test/java/androidx/media3/cast/CastPlayerTest.java index 0462878afa5..5837d8492d9 100644 --- a/libraries/cast/src/test/java/androidx/media3/cast/CastPlayerTest.java +++ b/libraries/cast/src/test/java/androidx/media3/cast/CastPlayerTest.java @@ -62,6 +62,7 @@ import android.net.Uri; import androidx.media3.common.C; +import androidx.media3.common.DeviceInfo; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaMetadata; import androidx.media3.common.MimeTypes; @@ -1864,6 +1865,14 @@ public void setMediaItems_equalMetadata_doesNotNotifyOnMediaMetadataChanged() { verify(mockListener, never()).onMediaMetadataChanged(any()); } + @Test + public void getDeviceInfo_returnsCorrectDeviceInfoWithPlaybackTypeRemote() { + DeviceInfo deviceInfo = castPlayer.getDeviceInfo(); + + assertThat(deviceInfo).isEqualTo(CastPlayer.DEVICE_INFO); + assertThat(deviceInfo.playbackType).isEqualTo(DeviceInfo.PLAYBACK_TYPE_REMOTE); + } + private int[] createMediaQueueItemIds(int numberOfIds) { int[] mediaQueueItemIds = new int[numberOfIds]; for (int i = 0; i < numberOfIds; i++) {