Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
3fc61bb7
authored
Apr 05, 2023
by
tonihei
Committed by
Ian Baker
Apr 11, 2023
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Deprecate MediaMetadata folderType and stabilize mediaType+isBrowsable
PiperOrigin-RevId: 522058915
parent
e4194fc8
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
197 additions
and
81 deletions
RELEASENOTES.md
api.txt
libraries/common/src/main/java/androidx/media3/common/MediaMetadata.java
libraries/common/src/test/java/androidx/media3/common/MediaMetadataTest.java
libraries/session/src/main/java/androidx/media3/session/LibraryResult.java
libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java
libraries/session/src/main/java/androidx/media3/session/MediaUtils.java
RELEASENOTES.md
View file @
3fc61bb7
...
@@ -52,6 +52,9 @@
...
@@ -52,6 +52,9 @@
`onAudioCapabilitiesChanged`
in
`AudioSink.Listener`
interface, and a
`onAudioCapabilitiesChanged`
in
`AudioSink.Listener`
interface, and a
new interface
`RendererCapabilities.Listener`
which triggers
new interface
`RendererCapabilities.Listener`
which triggers
`onRendererCapabilitiesChanged`
events.
`onRendererCapabilitiesChanged`
events.
*
Metadata:
*
Deprecate
`MediaMetadata.folderType`
in favor of
`isBrowsable`
and
`mediaType`
.
*
DRM:
*
DRM:
*
Reduce the visibility of several internal-only methods on
*
Reduce the visibility of several internal-only methods on
`DefaultDrmSession`
that aren't expected to be called from outside the
`DefaultDrmSession`
that aren't expected to be called from outside the
...
...
api.txt
View file @
3fc61bb7
...
@@ -369,14 +369,50 @@ package androidx.media3.common {
...
@@ -369,14 +369,50 @@ package androidx.media3.common {
public final class MediaMetadata {
public final class MediaMetadata {
method public androidx.media3.common.MediaMetadata.Builder buildUpon();
method public androidx.media3.common.MediaMetadata.Builder buildUpon();
field public static final androidx.media3.common.MediaMetadata EMPTY;
field public static final androidx.media3.common.MediaMetadata EMPTY;
field public static final int FOLDER_TYPE_ALBUMS = 2; // 0x2
field @Deprecated public static final int FOLDER_TYPE_ALBUMS = 2; // 0x2
field public static final int FOLDER_TYPE_ARTISTS = 3; // 0x3
field @Deprecated public static final int FOLDER_TYPE_ARTISTS = 3; // 0x3
field public static final int FOLDER_TYPE_GENRES = 4; // 0x4
field @Deprecated public static final int FOLDER_TYPE_GENRES = 4; // 0x4
field public static final int FOLDER_TYPE_MIXED = 0; // 0x0
field @Deprecated public static final int FOLDER_TYPE_MIXED = 0; // 0x0
field public static final int FOLDER_TYPE_NONE = -1; // 0xffffffff
field @Deprecated public static final int FOLDER_TYPE_NONE = -1; // 0xffffffff
field public static final int FOLDER_TYPE_PLAYLISTS = 5; // 0x5
field @Deprecated public static final int FOLDER_TYPE_PLAYLISTS = 5; // 0x5
field public static final int FOLDER_TYPE_TITLES = 1; // 0x1
field @Deprecated public static final int FOLDER_TYPE_TITLES = 1; // 0x1
field public static final int FOLDER_TYPE_YEARS = 6; // 0x6
field @Deprecated public static final int FOLDER_TYPE_YEARS = 6; // 0x6
field public static final int MEDIA_TYPE_ALBUM = 10; // 0xa
field public static final int MEDIA_TYPE_ARTIST = 11; // 0xb
field public static final int MEDIA_TYPE_AUDIO_BOOK = 15; // 0xf
field public static final int MEDIA_TYPE_AUDIO_BOOK_CHAPTER = 2; // 0x2
field public static final int MEDIA_TYPE_FOLDER_ALBUMS = 21; // 0x15
field public static final int MEDIA_TYPE_FOLDER_ARTISTS = 22; // 0x16
field public static final int MEDIA_TYPE_FOLDER_AUDIO_BOOKS = 26; // 0x1a
field public static final int MEDIA_TYPE_FOLDER_GENRES = 23; // 0x17
field public static final int MEDIA_TYPE_FOLDER_MIXED = 20; // 0x14
field public static final int MEDIA_TYPE_FOLDER_MOVIES = 35; // 0x23
field public static final int MEDIA_TYPE_FOLDER_NEWS = 32; // 0x20
field public static final int MEDIA_TYPE_FOLDER_PLAYLISTS = 24; // 0x18
field public static final int MEDIA_TYPE_FOLDER_PODCASTS = 27; // 0x1b
field public static final int MEDIA_TYPE_FOLDER_RADIO_STATIONS = 31; // 0x1f
field public static final int MEDIA_TYPE_FOLDER_TRAILERS = 34; // 0x22
field public static final int MEDIA_TYPE_FOLDER_TV_CHANNELS = 28; // 0x1c
field public static final int MEDIA_TYPE_FOLDER_TV_SERIES = 29; // 0x1d
field public static final int MEDIA_TYPE_FOLDER_TV_SHOWS = 30; // 0x1e
field public static final int MEDIA_TYPE_FOLDER_VIDEOS = 33; // 0x21
field public static final int MEDIA_TYPE_FOLDER_YEARS = 25; // 0x19
field public static final int MEDIA_TYPE_GENRE = 12; // 0xc
field public static final int MEDIA_TYPE_MIXED = 0; // 0x0
field public static final int MEDIA_TYPE_MOVIE = 8; // 0x8
field public static final int MEDIA_TYPE_MUSIC = 1; // 0x1
field public static final int MEDIA_TYPE_NEWS = 5; // 0x5
field public static final int MEDIA_TYPE_PLAYLIST = 13; // 0xd
field public static final int MEDIA_TYPE_PODCAST = 16; // 0x10
field public static final int MEDIA_TYPE_PODCAST_EPISODE = 3; // 0x3
field public static final int MEDIA_TYPE_RADIO_STATION = 4; // 0x4
field public static final int MEDIA_TYPE_TRAILER = 7; // 0x7
field public static final int MEDIA_TYPE_TV_CHANNEL = 17; // 0x11
field public static final int MEDIA_TYPE_TV_SEASON = 19; // 0x13
field public static final int MEDIA_TYPE_TV_SERIES = 18; // 0x12
field public static final int MEDIA_TYPE_TV_SHOW = 9; // 0x9
field public static final int MEDIA_TYPE_VIDEO = 6; // 0x6
field public static final int MEDIA_TYPE_YEAR = 14; // 0xe
field public static final int PICTURE_TYPE_ARTIST_PERFORMER = 8; // 0x8
field public static final int PICTURE_TYPE_ARTIST_PERFORMER = 8; // 0x8
field public static final int PICTURE_TYPE_A_BRIGHT_COLORED_FISH = 17; // 0x11
field public static final int PICTURE_TYPE_A_BRIGHT_COLORED_FISH = 17; // 0x11
field public static final int PICTURE_TYPE_BACK_COVER = 4; // 0x4
field public static final int PICTURE_TYPE_BACK_COVER = 4; // 0x4
...
@@ -411,9 +447,11 @@ package androidx.media3.common {
...
@@ -411,9 +447,11 @@ package androidx.media3.common {
field @Nullable public final Integer discNumber;
field @Nullable public final Integer discNumber;
field @Nullable public final CharSequence displayTitle;
field @Nullable public final CharSequence displayTitle;
field @Nullable public final android.os.Bundle extras;
field @Nullable public final android.os.Bundle extras;
field @Nullable @androidx.media3.common.MediaMetadata.FolderType public final Integer folderType;
field @
Deprecated @
Nullable @androidx.media3.common.MediaMetadata.FolderType public final Integer folderType;
field @Nullable public final CharSequence genre;
field @Nullable public final CharSequence genre;
field @Nullable public final Boolean isBrowsable;
field @Nullable public final Boolean isPlayable;
field @Nullable public final Boolean isPlayable;
field @Nullable @androidx.media3.common.MediaMetadata.MediaType public final Integer mediaType;
field @Nullable public final androidx.media3.common.Rating overallRating;
field @Nullable public final androidx.media3.common.Rating overallRating;
field @Nullable public final Integer recordingDay;
field @Nullable public final Integer recordingDay;
field @Nullable public final Integer recordingMonth;
field @Nullable public final Integer recordingMonth;
...
@@ -447,9 +485,11 @@ package androidx.media3.common {
...
@@ -447,9 +485,11 @@ package androidx.media3.common {
method public androidx.media3.common.MediaMetadata.Builder setDiscNumber(@Nullable Integer);
method public androidx.media3.common.MediaMetadata.Builder setDiscNumber(@Nullable Integer);
method public androidx.media3.common.MediaMetadata.Builder setDisplayTitle(@Nullable CharSequence);
method public androidx.media3.common.MediaMetadata.Builder setDisplayTitle(@Nullable CharSequence);
method public androidx.media3.common.MediaMetadata.Builder setExtras(@Nullable android.os.Bundle);
method public androidx.media3.common.MediaMetadata.Builder setExtras(@Nullable android.os.Bundle);
method public androidx.media3.common.MediaMetadata.Builder setFolderType(@Nullable @androidx.media3.common.MediaMetadata.FolderType Integer);
method
@Deprecated
public androidx.media3.common.MediaMetadata.Builder setFolderType(@Nullable @androidx.media3.common.MediaMetadata.FolderType Integer);
method public androidx.media3.common.MediaMetadata.Builder setGenre(@Nullable CharSequence);
method public androidx.media3.common.MediaMetadata.Builder setGenre(@Nullable CharSequence);
method public androidx.media3.common.MediaMetadata.Builder setIsBrowsable(@Nullable Boolean);
method public androidx.media3.common.MediaMetadata.Builder setIsPlayable(@Nullable Boolean);
method public androidx.media3.common.MediaMetadata.Builder setIsPlayable(@Nullable Boolean);
method public androidx.media3.common.MediaMetadata.Builder setMediaType(@Nullable @androidx.media3.common.MediaMetadata.MediaType Integer);
method public androidx.media3.common.MediaMetadata.Builder setOverallRating(@Nullable androidx.media3.common.Rating);
method public androidx.media3.common.MediaMetadata.Builder setOverallRating(@Nullable androidx.media3.common.Rating);
method public androidx.media3.common.MediaMetadata.Builder setRecordingDay(@IntRange(from=1, to=31) @Nullable Integer);
method public androidx.media3.common.MediaMetadata.Builder setRecordingDay(@IntRange(from=1, to=31) @Nullable Integer);
method public androidx.media3.common.MediaMetadata.Builder setRecordingMonth(@IntRange(from=1, to=12) @Nullable Integer);
method public androidx.media3.common.MediaMetadata.Builder setRecordingMonth(@IntRange(from=1, to=12) @Nullable Integer);
...
@@ -467,7 +507,10 @@ package androidx.media3.common {
...
@@ -467,7 +507,10 @@ package androidx.media3.common {
method public androidx.media3.common.MediaMetadata.Builder setWriter(@Nullable CharSequence);
method public androidx.media3.common.MediaMetadata.Builder setWriter(@Nullable CharSequence);
}
}
@IntDef({androidx.media3.common.MediaMetadata.FOLDER_TYPE_NONE, androidx.media3.common.MediaMetadata.FOLDER_TYPE_MIXED, androidx.media3.common.MediaMetadata.FOLDER_TYPE_TITLES, androidx.media3.common.MediaMetadata.FOLDER_TYPE_ALBUMS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_ARTISTS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_GENRES, androidx.media3.common.MediaMetadata.FOLDER_TYPE_PLAYLISTS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_YEARS}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface MediaMetadata.FolderType {
@Deprecated @IntDef({androidx.media3.common.MediaMetadata.FOLDER_TYPE_NONE, androidx.media3.common.MediaMetadata.FOLDER_TYPE_MIXED, androidx.media3.common.MediaMetadata.FOLDER_TYPE_TITLES, androidx.media3.common.MediaMetadata.FOLDER_TYPE_ALBUMS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_ARTISTS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_GENRES, androidx.media3.common.MediaMetadata.FOLDER_TYPE_PLAYLISTS, androidx.media3.common.MediaMetadata.FOLDER_TYPE_YEARS}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface MediaMetadata.FolderType {
}
@IntDef({androidx.media3.common.MediaMetadata.MEDIA_TYPE_MIXED, androidx.media3.common.MediaMetadata.MEDIA_TYPE_MUSIC, androidx.media3.common.MediaMetadata.MEDIA_TYPE_AUDIO_BOOK_CHAPTER, androidx.media3.common.MediaMetadata.MEDIA_TYPE_PODCAST_EPISODE, androidx.media3.common.MediaMetadata.MEDIA_TYPE_RADIO_STATION, androidx.media3.common.MediaMetadata.MEDIA_TYPE_NEWS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_VIDEO, androidx.media3.common.MediaMetadata.MEDIA_TYPE_TRAILER, androidx.media3.common.MediaMetadata.MEDIA_TYPE_MOVIE, androidx.media3.common.MediaMetadata.MEDIA_TYPE_TV_SHOW, androidx.media3.common.MediaMetadata.MEDIA_TYPE_ALBUM, androidx.media3.common.MediaMetadata.MEDIA_TYPE_ARTIST, androidx.media3.common.MediaMetadata.MEDIA_TYPE_GENRE, androidx.media3.common.MediaMetadata.MEDIA_TYPE_PLAYLIST, androidx.media3.common.MediaMetadata.MEDIA_TYPE_YEAR, androidx.media3.common.MediaMetadata.MEDIA_TYPE_AUDIO_BOOK, androidx.media3.common.MediaMetadata.MEDIA_TYPE_PODCAST, androidx.media3.common.MediaMetadata.MEDIA_TYPE_TV_CHANNEL, androidx.media3.common.MediaMetadata.MEDIA_TYPE_TV_SERIES, androidx.media3.common.MediaMetadata.MEDIA_TYPE_TV_SEASON, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_MIXED, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_ARTISTS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_GENRES, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_PLAYLISTS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_YEARS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_AUDIO_BOOKS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_PODCASTS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_TV_CHANNELS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_TV_SERIES, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_TV_SHOWS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_RADIO_STATIONS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_NEWS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_VIDEOS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_TRAILERS, androidx.media3.common.MediaMetadata.MEDIA_TYPE_FOLDER_MOVIES}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE_USE) public static @interface MediaMetadata.MediaType {
}
}
@IntDef({androidx.media3.common.MediaMetadata.PICTURE_TYPE_OTHER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FILE_ICON, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FILE_ICON_OTHER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FRONT_COVER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BACK_COVER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LEAFLET_PAGE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_MEDIA, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LEAD_ARTIST_PERFORMER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_ARTIST_PERFORMER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_CONDUCTOR, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BAND_ORCHESTRA, androidx.media3.common.MediaMetadata.PICTURE_TYPE_COMPOSER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LYRICIST, androidx.media3.common.MediaMetadata.PICTURE_TYPE_RECORDING_LOCATION, androidx.media3.common.MediaMetadata.PICTURE_TYPE_DURING_RECORDING, androidx.media3.common.MediaMetadata.PICTURE_TYPE_DURING_PERFORMANCE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_MOVIE_VIDEO_SCREEN_CAPTURE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_A_BRIGHT_COLORED_FISH, androidx.media3.common.MediaMetadata.PICTURE_TYPE_ILLUSTRATION, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BAND_ARTIST_LOGO, androidx.media3.common.MediaMetadata.PICTURE_TYPE_PUBLISHER_STUDIO_LOGO}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface MediaMetadata.PictureType {
@IntDef({androidx.media3.common.MediaMetadata.PICTURE_TYPE_OTHER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FILE_ICON, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FILE_ICON_OTHER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_FRONT_COVER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BACK_COVER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LEAFLET_PAGE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_MEDIA, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LEAD_ARTIST_PERFORMER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_ARTIST_PERFORMER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_CONDUCTOR, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BAND_ORCHESTRA, androidx.media3.common.MediaMetadata.PICTURE_TYPE_COMPOSER, androidx.media3.common.MediaMetadata.PICTURE_TYPE_LYRICIST, androidx.media3.common.MediaMetadata.PICTURE_TYPE_RECORDING_LOCATION, androidx.media3.common.MediaMetadata.PICTURE_TYPE_DURING_RECORDING, androidx.media3.common.MediaMetadata.PICTURE_TYPE_DURING_PERFORMANCE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_MOVIE_VIDEO_SCREEN_CAPTURE, androidx.media3.common.MediaMetadata.PICTURE_TYPE_A_BRIGHT_COLORED_FISH, androidx.media3.common.MediaMetadata.PICTURE_TYPE_ILLUSTRATION, androidx.media3.common.MediaMetadata.PICTURE_TYPE_BAND_ARTIST_LOGO, androidx.media3.common.MediaMetadata.PICTURE_TYPE_PUBLISHER_STUDIO_LOGO}) @java.lang.annotation.Documented @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.LOCAL_VARIABLE, java.lang.annotation.ElementType.TYPE_USE}) public static @interface MediaMetadata.PictureType {
...
...
libraries/common/src/main/java/androidx/media3/common/MediaMetadata.java
View file @
3fc61bb7
...
@@ -60,7 +60,11 @@ public final class MediaMetadata implements Bundleable {
...
@@ -60,7 +60,11 @@ public final class MediaMetadata implements Bundleable {
@Nullable
private
Uri
artworkUri
;
@Nullable
private
Uri
artworkUri
;
@Nullable
private
Integer
trackNumber
;
@Nullable
private
Integer
trackNumber
;
@Nullable
private
Integer
totalTrackCount
;
@Nullable
private
Integer
totalTrackCount
;
@Nullable
private
@FolderType
Integer
folderType
;
@SuppressWarnings
(
"deprecation"
)
// Builder for deprecated field.
@Nullable
private
@FolderType
Integer
folderType
;
@Nullable
private
Boolean
isBrowsable
;
@Nullable
private
Boolean
isBrowsable
;
@Nullable
private
Boolean
isPlayable
;
@Nullable
private
Boolean
isPlayable
;
@Nullable
private
Integer
recordingYear
;
@Nullable
private
Integer
recordingYear
;
...
@@ -82,6 +86,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -82,6 +86,7 @@ public final class MediaMetadata implements Bundleable {
public
Builder
()
{}
public
Builder
()
{}
@SuppressWarnings
(
"deprecation"
)
// Assigning from deprecated fields.
private
Builder
(
MediaMetadata
mediaMetadata
)
{
private
Builder
(
MediaMetadata
mediaMetadata
)
{
this
.
title
=
mediaMetadata
.
title
;
this
.
title
=
mediaMetadata
.
title
;
this
.
artist
=
mediaMetadata
.
artist
;
this
.
artist
=
mediaMetadata
.
artist
;
...
@@ -251,9 +256,11 @@ public final class MediaMetadata implements Bundleable {
...
@@ -251,9 +256,11 @@ public final class MediaMetadata implements Bundleable {
/**
/**
* Sets the {@link FolderType}.
* Sets the {@link FolderType}.
*
*
*
<p>This method will be deprecated. Use {@link #setIsBrowsable} to indicate if an item is a
*
@deprecated Use {@link #setIsBrowsable} to indicate if an item is a browsable folder and use
*
browsable folder and use
{@link #setMediaType} to indicate the type of the folder.
*
{@link #setMediaType} to indicate the type of the folder.
*/
*/
@SuppressWarnings
(
"deprecation"
)
// Using deprecated type.
@Deprecated
@CanIgnoreReturnValue
@CanIgnoreReturnValue
public
Builder
setFolderType
(
@Nullable
@FolderType
Integer
folderType
)
{
public
Builder
setFolderType
(
@Nullable
@FolderType
Integer
folderType
)
{
this
.
folderType
=
folderType
;
this
.
folderType
=
folderType
;
...
@@ -261,7 +268,6 @@ public final class MediaMetadata implements Bundleable {
...
@@ -261,7 +268,6 @@ public final class MediaMetadata implements Bundleable {
}
}
/** Sets whether the media is a browsable folder. */
/** Sets whether the media is a browsable folder. */
@UnstableApi
@CanIgnoreReturnValue
@CanIgnoreReturnValue
public
Builder
setIsBrowsable
(
@Nullable
Boolean
isBrowsable
)
{
public
Builder
setIsBrowsable
(
@Nullable
Boolean
isBrowsable
)
{
this
.
isBrowsable
=
isBrowsable
;
this
.
isBrowsable
=
isBrowsable
;
...
@@ -402,7 +408,6 @@ public final class MediaMetadata implements Bundleable {
...
@@ -402,7 +408,6 @@ public final class MediaMetadata implements Bundleable {
/** Sets the {@link MediaType}. */
/** Sets the {@link MediaType}. */
@CanIgnoreReturnValue
@CanIgnoreReturnValue
@UnstableApi
public
Builder
setMediaType
(
@Nullable
@MediaType
Integer
mediaType
)
{
public
Builder
setMediaType
(
@Nullable
@MediaType
Integer
mediaType
)
{
this
.
mediaType
=
mediaType
;
this
.
mediaType
=
mediaType
;
return
this
;
return
this
;
...
@@ -458,6 +463,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -458,6 +463,7 @@ public final class MediaMetadata implements Bundleable {
}
}
/** Populates all the fields from {@code mediaMetadata}, provided they are non-null. */
/** Populates all the fields from {@code mediaMetadata}, provided they are non-null. */
@SuppressWarnings
(
"deprecation"
)
// Populating deprecated fields.
@CanIgnoreReturnValue
@CanIgnoreReturnValue
@UnstableApi
@UnstableApi
public
Builder
populate
(
@Nullable
MediaMetadata
mediaMetadata
)
{
public
Builder
populate
(
@Nullable
MediaMetadata
mediaMetadata
)
{
...
@@ -595,7 +601,6 @@ public final class MediaMetadata implements Bundleable {
...
@@ -595,7 +601,6 @@ public final class MediaMetadata implements Bundleable {
@Documented
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@Retention
(
RetentionPolicy
.
SOURCE
)
@Target
(
TYPE_USE
)
@Target
(
TYPE_USE
)
@UnstableApi
@IntDef
({
@IntDef
({
MEDIA_TYPE_MIXED
,
MEDIA_TYPE_MIXED
,
MEDIA_TYPE_MUSIC
,
MEDIA_TYPE_MUSIC
,
...
@@ -637,111 +642,111 @@ public final class MediaMetadata implements Bundleable {
...
@@ -637,111 +642,111 @@ public final class MediaMetadata implements Bundleable {
public
@interface
MediaType
{}
public
@interface
MediaType
{}
/** Media of undetermined type or a mix of multiple {@linkplain MediaType media types}. */
/** Media of undetermined type or a mix of multiple {@linkplain MediaType media types}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_MIXED
=
0
;
public
static
final
int
MEDIA_TYPE_MIXED
=
0
;
/** {@link MediaType} for music. */
/** {@link MediaType} for music. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_MUSIC
=
1
;
public
static
final
int
MEDIA_TYPE_MUSIC
=
1
;
/** {@link MediaType} for an audio book chapter. */
/** {@link MediaType} for an audio book chapter. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_AUDIO_BOOK_CHAPTER
=
2
;
public
static
final
int
MEDIA_TYPE_AUDIO_BOOK_CHAPTER
=
2
;
/** {@link MediaType} for a podcast episode. */
/** {@link MediaType} for a podcast episode. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_PODCAST_EPISODE
=
3
;
public
static
final
int
MEDIA_TYPE_PODCAST_EPISODE
=
3
;
/** {@link MediaType} for a radio station. */
/** {@link MediaType} for a radio station. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_RADIO_STATION
=
4
;
public
static
final
int
MEDIA_TYPE_RADIO_STATION
=
4
;
/** {@link MediaType} for news. */
/** {@link MediaType} for news. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_NEWS
=
5
;
public
static
final
int
MEDIA_TYPE_NEWS
=
5
;
/** {@link MediaType} for a video. */
/** {@link MediaType} for a video. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_VIDEO
=
6
;
public
static
final
int
MEDIA_TYPE_VIDEO
=
6
;
/** {@link MediaType} for a movie trailer. */
/** {@link MediaType} for a movie trailer. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_TRAILER
=
7
;
public
static
final
int
MEDIA_TYPE_TRAILER
=
7
;
/** {@link MediaType} for a movie. */
/** {@link MediaType} for a movie. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_MOVIE
=
8
;
public
static
final
int
MEDIA_TYPE_MOVIE
=
8
;
/** {@link MediaType} for a TV show. */
/** {@link MediaType} for a TV show. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_TV_SHOW
=
9
;
public
static
final
int
MEDIA_TYPE_TV_SHOW
=
9
;
/**
/**
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) belonging to an
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) belonging to an
* album.
* album.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_ALBUM
=
10
;
public
static
final
int
MEDIA_TYPE_ALBUM
=
10
;
/**
/**
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) from the same
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) from the same
* artist.
* artist.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_ARTIST
=
11
;
public
static
final
int
MEDIA_TYPE_ARTIST
=
11
;
/**
/**
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) of the same
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) of the same
* genre.
* genre.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_GENRE
=
12
;
public
static
final
int
MEDIA_TYPE_GENRE
=
12
;
/**
/**
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) forming a
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) forming a
* playlist.
* playlist.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_PLAYLIST
=
13
;
public
static
final
int
MEDIA_TYPE_PLAYLIST
=
13
;
/**
/**
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) from the same
* {@link MediaType} for a group of items (e.g., {@link #MEDIA_TYPE_MUSIC music}) from the same
* year.
* year.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_YEAR
=
14
;
public
static
final
int
MEDIA_TYPE_YEAR
=
14
;
/**
/**
* {@link MediaType} for a group of items forming an audio book. Items in this group are typically
* {@link MediaType} for a group of items forming an audio book. Items in this group are typically
* of type {@link #MEDIA_TYPE_AUDIO_BOOK_CHAPTER}.
* of type {@link #MEDIA_TYPE_AUDIO_BOOK_CHAPTER}.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_AUDIO_BOOK
=
15
;
public
static
final
int
MEDIA_TYPE_AUDIO_BOOK
=
15
;
/**
/**
* {@link MediaType} for a group of items belonging to a podcast. Items in this group are
* {@link MediaType} for a group of items belonging to a podcast. Items in this group are
* typically of type {@link #MEDIA_TYPE_PODCAST_EPISODE}.
* typically of type {@link #MEDIA_TYPE_PODCAST_EPISODE}.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_PODCAST
=
16
;
public
static
final
int
MEDIA_TYPE_PODCAST
=
16
;
/**
/**
* {@link MediaType} for a group of items that are part of a TV channel. Items in this group are
* {@link MediaType} for a group of items that are part of a TV channel. Items in this group are
* typically of type {@link #MEDIA_TYPE_TV_SHOW}, {@link #MEDIA_TYPE_TV_SERIES} or {@link
* typically of type {@link #MEDIA_TYPE_TV_SHOW}, {@link #MEDIA_TYPE_TV_SERIES} or {@link
* #MEDIA_TYPE_MOVIE}.
* #MEDIA_TYPE_MOVIE}.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_TV_CHANNEL
=
17
;
public
static
final
int
MEDIA_TYPE_TV_CHANNEL
=
17
;
/**
/**
* {@link MediaType} for a group of items that are part of a TV series. Items in this group are
* {@link MediaType} for a group of items that are part of a TV series. Items in this group are
* typically of type {@link #MEDIA_TYPE_TV_SHOW} or {@link #MEDIA_TYPE_TV_SEASON}.
* typically of type {@link #MEDIA_TYPE_TV_SHOW} or {@link #MEDIA_TYPE_TV_SEASON}.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_TV_SERIES
=
18
;
public
static
final
int
MEDIA_TYPE_TV_SERIES
=
18
;
/**
/**
* {@link MediaType} for a group of items that are part of a TV series. Items in this group are
* {@link MediaType} for a group of items that are part of a TV series. Items in this group are
* typically of type {@link #MEDIA_TYPE_TV_SHOW}.
* typically of type {@link #MEDIA_TYPE_TV_SHOW}.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_TV_SEASON
=
19
;
public
static
final
int
MEDIA_TYPE_TV_SEASON
=
19
;
/** {@link MediaType} for a folder with mixed or undetermined content. */
/** {@link MediaType} for a folder with mixed or undetermined content. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_MIXED
=
20
;
public
static
final
int
MEDIA_TYPE_FOLDER_MIXED
=
20
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_ALBUM albums}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_ALBUM albums}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_ALBUMS
=
21
;
public
static
final
int
MEDIA_TYPE_FOLDER_ALBUMS
=
21
;
/** {@link MediaType} for a folder containing {@linkplain #FIELD_ARTIST artists}. */
/** {@link MediaType} for a folder containing {@linkplain #FIELD_ARTIST artists}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_ARTISTS
=
22
;
public
static
final
int
MEDIA_TYPE_FOLDER_ARTISTS
=
22
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_GENRE genres}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_GENRE genres}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_GENRES
=
23
;
public
static
final
int
MEDIA_TYPE_FOLDER_GENRES
=
23
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_PLAYLIST playlists}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_PLAYLIST playlists}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_PLAYLISTS
=
24
;
public
static
final
int
MEDIA_TYPE_FOLDER_PLAYLISTS
=
24
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_YEAR years}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_YEAR years}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_YEARS
=
25
;
public
static
final
int
MEDIA_TYPE_FOLDER_YEARS
=
25
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_AUDIO_BOOK audio books}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_AUDIO_BOOK audio books}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_AUDIO_BOOKS
=
26
;
public
static
final
int
MEDIA_TYPE_FOLDER_AUDIO_BOOKS
=
26
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_PODCAST podcasts}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_PODCAST podcasts}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_PODCASTS
=
27
;
public
static
final
int
MEDIA_TYPE_FOLDER_PODCASTS
=
27
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TV_CHANNEL TV channels}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TV_CHANNEL TV channels}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_TV_CHANNELS
=
28
;
public
static
final
int
MEDIA_TYPE_FOLDER_TV_CHANNELS
=
28
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TV_SERIES TV series}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TV_SERIES TV series}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_TV_SERIES
=
29
;
public
static
final
int
MEDIA_TYPE_FOLDER_TV_SERIES
=
29
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TV_SHOW TV shows}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TV_SHOW TV shows}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_TV_SHOWS
=
30
;
public
static
final
int
MEDIA_TYPE_FOLDER_TV_SHOWS
=
30
;
/**
/**
* {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_RADIO_STATION radio
* {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_RADIO_STATION radio
* stations}.
* stations}.
*/
*/
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_RADIO_STATIONS
=
31
;
public
static
final
int
MEDIA_TYPE_FOLDER_RADIO_STATIONS
=
31
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_NEWS news}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_NEWS news}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_NEWS
=
32
;
public
static
final
int
MEDIA_TYPE_FOLDER_NEWS
=
32
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_VIDEO videos}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_VIDEO videos}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_VIDEOS
=
33
;
public
static
final
int
MEDIA_TYPE_FOLDER_VIDEOS
=
33
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TRAILER movie trailers}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_TRAILER movie trailers}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_TRAILERS
=
34
;
public
static
final
int
MEDIA_TYPE_FOLDER_TRAILERS
=
34
;
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_MOVIE movies}. */
/** {@link MediaType} for a folder containing {@linkplain #MEDIA_TYPE_MOVIE movies}. */
@UnstableApi
public
static
final
int
MEDIA_TYPE_FOLDER_MOVIES
=
35
;
public
static
final
int
MEDIA_TYPE_FOLDER_MOVIES
=
35
;
/**
/**
* The folder type of the media item.
* The folder type of the media item.
...
@@ -753,12 +758,17 @@ public final class MediaMetadata implements Bundleable {
...
@@ -753,12 +758,17 @@ public final class MediaMetadata implements Bundleable {
* <p>One of {@link #FOLDER_TYPE_NONE}, {@link #FOLDER_TYPE_MIXED}, {@link #FOLDER_TYPE_TITLES},
* <p>One of {@link #FOLDER_TYPE_NONE}, {@link #FOLDER_TYPE_MIXED}, {@link #FOLDER_TYPE_TITLES},
* {@link #FOLDER_TYPE_ALBUMS}, {@link #FOLDER_TYPE_ARTISTS}, {@link #FOLDER_TYPE_GENRES}, {@link
* {@link #FOLDER_TYPE_ALBUMS}, {@link #FOLDER_TYPE_ARTISTS}, {@link #FOLDER_TYPE_GENRES}, {@link
* #FOLDER_TYPE_PLAYLISTS} or {@link #FOLDER_TYPE_YEARS}.
* #FOLDER_TYPE_PLAYLISTS} or {@link #FOLDER_TYPE_YEARS}.
*
* @deprecated Use {@link #isBrowsable} to indicate if an item is a browsable folder and use
* {@link #mediaType} to indicate the type of the folder.
*/
*/
// @Target list includes both 'default' targets and TYPE_USE, to ensure backwards compatibility
// @Target list includes both 'default' targets and TYPE_USE, to ensure backwards compatibility
// with Kotlin usages from before TYPE_USE was added.
// with Kotlin usages from before TYPE_USE was added.
@Documented
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@Retention
(
RetentionPolicy
.
SOURCE
)
@Target
({
FIELD
,
METHOD
,
PARAMETER
,
LOCAL_VARIABLE
,
TYPE_USE
})
@Target
({
FIELD
,
METHOD
,
PARAMETER
,
LOCAL_VARIABLE
,
TYPE_USE
})
@Deprecated
@SuppressWarnings
(
"deprecation"
)
// Defining deprecated constants.
@IntDef
({
@IntDef
({
FOLDER_TYPE_NONE
,
FOLDER_TYPE_NONE
,
FOLDER_TYPE_MIXED
,
FOLDER_TYPE_MIXED
,
...
@@ -771,22 +781,60 @@ public final class MediaMetadata implements Bundleable {
...
@@ -771,22 +781,60 @@ public final class MediaMetadata implements Bundleable {
})
})
public
@interface
FolderType
{}
public
@interface
FolderType
{}
/** Type for an item that is not a folder. */
/**
public
static
final
int
FOLDER_TYPE_NONE
=
-
1
;
* Type for an item that is not a folder.
/** Type for a folder containing media of mixed types. */
*
public
static
final
int
FOLDER_TYPE_MIXED
=
0
;
* @deprecated Use {@link #isBrowsable} set to false instead.
/** Type for a folder containing only playable media. */
*/
public
static
final
int
FOLDER_TYPE_TITLES
=
1
;
@Deprecated
public
static
final
int
FOLDER_TYPE_NONE
=
-
1
;
/** Type for a folder containing media categorized by album. */
/**
public
static
final
int
FOLDER_TYPE_ALBUMS
=
2
;
* Type for a folder containing media of mixed types.
/** Type for a folder containing media categorized by artist. */
*
public
static
final
int
FOLDER_TYPE_ARTISTS
=
3
;
* @deprecated Use {@link #isBrowsable} set to true and {@link #mediaType} set to {@link
/** Type for a folder containing media categorized by genre. */
* #MEDIA_TYPE_FOLDER_MIXED} instead.
public
static
final
int
FOLDER_TYPE_GENRES
=
4
;
*/
/** Type for a folder containing a playlist. */
@Deprecated
public
static
final
int
FOLDER_TYPE_MIXED
=
0
;
public
static
final
int
FOLDER_TYPE_PLAYLISTS
=
5
;
/**
/** Type for a folder containing media categorized by year. */
* Type for a folder containing only playable media.
public
static
final
int
FOLDER_TYPE_YEARS
=
6
;
*
* @deprecated Use {@link #isBrowsable} set to true instead.
*/
@Deprecated
public
static
final
int
FOLDER_TYPE_TITLES
=
1
;
/**
* Type for a folder containing media categorized by album.
*
* @deprecated Use {@link #isBrowsable} set to true and {@link #mediaType} set to {@link
* #MEDIA_TYPE_FOLDER_ALBUMS} instead.
*/
@Deprecated
public
static
final
int
FOLDER_TYPE_ALBUMS
=
2
;
/**
* Type for a folder containing media categorized by artist.
*
* @deprecated Use {@link #isBrowsable} set to true and {@link #mediaType} set to {@link
* #MEDIA_TYPE_FOLDER_ARTISTS} instead.
*/
@Deprecated
public
static
final
int
FOLDER_TYPE_ARTISTS
=
3
;
/**
* Type for a folder containing media categorized by genre.
*
* @deprecated Use {@link #isBrowsable} set to true and {@link #mediaType} set to {@link
* #MEDIA_TYPE_FOLDER_GENRES} instead.
*/
@Deprecated
public
static
final
int
FOLDER_TYPE_GENRES
=
4
;
/**
* Type for a folder containing a playlist.
*
* @deprecated Use {@link #isBrowsable} set to true and {@link #mediaType} set to {@link
* #MEDIA_TYPE_FOLDER_PLAYLISTS} instead.
*/
@Deprecated
public
static
final
int
FOLDER_TYPE_PLAYLISTS
=
5
;
/**
* Type for a folder containing media categorized by year.
*
* @deprecated Use {@link #isBrowsable} set to true and {@link #mediaType} set to {@link
* #MEDIA_TYPE_FOLDER_YEARS} instead.
*/
@Deprecated
public
static
final
int
FOLDER_TYPE_YEARS
=
6
;
/**
/**
* The picture type of the artwork.
* The picture type of the artwork.
...
@@ -895,12 +943,15 @@ public final class MediaMetadata implements Bundleable {
...
@@ -895,12 +943,15 @@ public final class MediaMetadata implements Bundleable {
/**
/**
* Optional {@link FolderType}.
* Optional {@link FolderType}.
*
*
*
<p>This field will be deprecated. Use {@link #isBrowsable} to indicate if an item is a
*
@deprecated Use {@link #isBrowsable} to indicate if an item is a browsable folder and use
*
browsable folder and use
{@link #mediaType} to indicate the type of the folder.
*
{@link #mediaType} to indicate the type of the folder.
*/
*/
@Nullable
public
final
@FolderType
Integer
folderType
;
@SuppressWarnings
(
"deprecation"
)
// Defining field of deprecated type.
@Deprecated
@Nullable
public
final
@FolderType
Integer
folderType
;
/** Optional boolean to indicate that the media is a browsable folder. */
/** Optional boolean to indicate that the media is a browsable folder. */
@
UnstableApi
@
Nullable
public
final
Boolean
isBrowsable
;
@Nullable
public
final
Boolean
isBrowsable
;
/** Optional boolean to indicate that the media is playable. */
/** Optional boolean to indicate that the media is playable. */
@Nullable
public
final
Boolean
isPlayable
;
@Nullable
public
final
Boolean
isPlayable
;
/**
/**
...
@@ -953,7 +1004,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -953,7 +1004,7 @@ public final class MediaMetadata implements Bundleable {
/** Optional name of the station streaming the media. */
/** Optional name of the station streaming the media. */
@Nullable
public
final
CharSequence
station
;
@Nullable
public
final
CharSequence
station
;
/** Optional {@link MediaType}. */
/** Optional {@link MediaType}. */
@
UnstableApi
@
Nullable
public
final
@MediaType
Integer
mediaType
;
@Nullable
public
final
@MediaType
Integer
mediaType
;
/**
/**
* Optional extras {@link Bundle}.
* Optional extras {@link Bundle}.
...
@@ -963,6 +1014,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -963,6 +1014,7 @@ public final class MediaMetadata implements Bundleable {
*/
*/
@Nullable
public
final
Bundle
extras
;
@Nullable
public
final
Bundle
extras
;
@SuppressWarnings
(
"deprecation"
)
// Assigning deprecated fields.
private
MediaMetadata
(
Builder
builder
)
{
private
MediaMetadata
(
Builder
builder
)
{
// Handle compatibility for deprecated fields.
// Handle compatibility for deprecated fields.
@Nullable
Boolean
isBrowsable
=
builder
.
isBrowsable
;
@Nullable
Boolean
isBrowsable
=
builder
.
isBrowsable
;
...
@@ -1021,6 +1073,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -1021,6 +1073,7 @@ public final class MediaMetadata implements Bundleable {
return
new
Builder
(
/* mediaMetadata= */
this
);
return
new
Builder
(
/* mediaMetadata= */
this
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Comparing deprecated fields.
@Override
@Override
public
boolean
equals
(
@Nullable
Object
obj
)
{
public
boolean
equals
(
@Nullable
Object
obj
)
{
if
(
this
==
obj
)
{
if
(
this
==
obj
)
{
...
@@ -1064,6 +1117,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -1064,6 +1117,7 @@ public final class MediaMetadata implements Bundleable {
&&
Util
.
areEqual
(
mediaType
,
that
.
mediaType
);
&&
Util
.
areEqual
(
mediaType
,
that
.
mediaType
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Hashing deprecated fields.
@Override
@Override
public
int
hashCode
()
{
public
int
hashCode
()
{
return
Objects
.
hashCode
(
return
Objects
.
hashCode
(
...
@@ -1138,6 +1192,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -1138,6 +1192,7 @@ public final class MediaMetadata implements Bundleable {
private
static
final
String
FIELD_IS_BROWSABLE
=
Util
.
intToStringMaxRadix
(
32
);
private
static
final
String
FIELD_IS_BROWSABLE
=
Util
.
intToStringMaxRadix
(
32
);
private
static
final
String
FIELD_EXTRAS
=
Util
.
intToStringMaxRadix
(
1000
);
private
static
final
String
FIELD_EXTRAS
=
Util
.
intToStringMaxRadix
(
1000
);
@SuppressWarnings
(
"deprecation"
)
// Bundling deprecated fields.
@UnstableApi
@UnstableApi
@Override
@Override
public
Bundle
toBundle
()
{
public
Bundle
toBundle
()
{
...
@@ -1247,6 +1302,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -1247,6 +1302,7 @@ public final class MediaMetadata implements Bundleable {
/** Object that can restore {@link MediaMetadata} from a {@link Bundle}. */
/** Object that can restore {@link MediaMetadata} from a {@link Bundle}. */
@UnstableApi
public
static
final
Creator
<
MediaMetadata
>
CREATOR
=
MediaMetadata:
:
fromBundle
;
@UnstableApi
public
static
final
Creator
<
MediaMetadata
>
CREATOR
=
MediaMetadata:
:
fromBundle
;
@SuppressWarnings
(
"deprecation"
)
// Unbundling deprecated fields.
private
static
MediaMetadata
fromBundle
(
Bundle
bundle
)
{
private
static
MediaMetadata
fromBundle
(
Bundle
bundle
)
{
Builder
builder
=
new
Builder
();
Builder
builder
=
new
Builder
();
builder
builder
...
@@ -1329,6 +1385,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -1329,6 +1385,7 @@ public final class MediaMetadata implements Bundleable {
return
builder
.
build
();
return
builder
.
build
();
}
}
@SuppressWarnings
(
"deprecation"
)
// Converting deprecated field.
private
static
@FolderType
int
getFolderTypeFromMediaType
(
@MediaType
int
mediaType
)
{
private
static
@FolderType
int
getFolderTypeFromMediaType
(
@MediaType
int
mediaType
)
{
switch
(
mediaType
)
{
switch
(
mediaType
)
{
case
MEDIA_TYPE_ALBUM:
case
MEDIA_TYPE_ALBUM:
...
@@ -1378,6 +1435,7 @@ public final class MediaMetadata implements Bundleable {
...
@@ -1378,6 +1435,7 @@ public final class MediaMetadata implements Bundleable {
}
}
}
}
@SuppressWarnings
(
"deprecation"
)
// Converting deprecated field.
private
static
@MediaType
int
getMediaTypeFromFolderType
(
@FolderType
int
folderType
)
{
private
static
@MediaType
int
getMediaTypeFromFolderType
(
@FolderType
int
folderType
)
{
switch
(
folderType
)
{
switch
(
folderType
)
{
case
FOLDER_TYPE_ALBUMS:
case
FOLDER_TYPE_ALBUMS:
...
...
libraries/common/src/test/java/androidx/media3/common/MediaMetadataTest.java
View file @
3fc61bb7
...
@@ -30,6 +30,7 @@ public class MediaMetadataTest {
...
@@ -30,6 +30,7 @@ public class MediaMetadataTest {
private
static
final
String
EXTRAS_KEY
=
"exampleKey"
;
private
static
final
String
EXTRAS_KEY
=
"exampleKey"
;
private
static
final
String
EXTRAS_VALUE
=
"exampleValue"
;
private
static
final
String
EXTRAS_VALUE
=
"exampleValue"
;
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated field.
@Test
@Test
public
void
builder_minimal_correctDefaults
()
{
public
void
builder_minimal_correctDefaults
()
{
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
build
();
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
build
();
...
@@ -134,6 +135,7 @@ public class MediaMetadataTest {
...
@@ -134,6 +135,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadataFromBundle
.
extras
.
getString
(
EXTRAS_KEY
)).
isEqualTo
(
EXTRAS_VALUE
);
assertThat
(
mediaMetadataFromBundle
.
extras
.
getString
(
EXTRAS_KEY
)).
isEqualTo
(
EXTRAS_VALUE
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated setter.
@Test
@Test
public
void
builderSetFolderType_toNone_setsIsBrowsableToFalse
()
{
public
void
builderSetFolderType_toNone_setsIsBrowsableToFalse
()
{
MediaMetadata
mediaMetadata
=
MediaMetadata
mediaMetadata
=
...
@@ -142,6 +144,7 @@ public class MediaMetadataTest {
...
@@ -142,6 +144,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadata
.
isBrowsable
).
isFalse
();
assertThat
(
mediaMetadata
.
isBrowsable
).
isFalse
();
}
}
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated setter.
@Test
@Test
public
void
builderSetFolderType_toNotNone_setsIsBrowsableToTrueAndMatchingMediaType
()
{
public
void
builderSetFolderType_toNotNone_setsIsBrowsableToTrueAndMatchingMediaType
()
{
MediaMetadata
mediaMetadata
=
MediaMetadata
mediaMetadata
=
...
@@ -151,6 +154,7 @@ public class MediaMetadataTest {
...
@@ -151,6 +154,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadata
.
mediaType
).
isEqualTo
(
MediaMetadata
.
MEDIA_TYPE_FOLDER_PLAYLISTS
);
assertThat
(
mediaMetadata
.
mediaType
).
isEqualTo
(
MediaMetadata
.
MEDIA_TYPE_FOLDER_PLAYLISTS
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated setter.
@Test
@Test
public
void
public
void
builderSetFolderType_toNotNoneWithManualMediaType_setsIsBrowsableToTrueAndDoesNotOverrideMediaType
()
{
builderSetFolderType_toNotNoneWithManualMediaType_setsIsBrowsableToTrueAndDoesNotOverrideMediaType
()
{
...
@@ -164,6 +168,7 @@ public class MediaMetadataTest {
...
@@ -164,6 +168,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadata
.
mediaType
).
isEqualTo
(
MediaMetadata
.
MEDIA_TYPE_FOLDER_PODCASTS
);
assertThat
(
mediaMetadata
.
mediaType
).
isEqualTo
(
MediaMetadata
.
MEDIA_TYPE_FOLDER_PODCASTS
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated field.
@Test
@Test
public
void
builderSetIsBrowsable_toTrueWithoutMediaType_setsFolderTypeToMixed
()
{
public
void
builderSetIsBrowsable_toTrueWithoutMediaType_setsFolderTypeToMixed
()
{
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
setIsBrowsable
(
true
).
build
();
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
setIsBrowsable
(
true
).
build
();
...
@@ -171,6 +176,7 @@ public class MediaMetadataTest {
...
@@ -171,6 +176,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadata
.
folderType
).
isEqualTo
(
MediaMetadata
.
FOLDER_TYPE_MIXED
);
assertThat
(
mediaMetadata
.
folderType
).
isEqualTo
(
MediaMetadata
.
FOLDER_TYPE_MIXED
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated field.
@Test
@Test
public
void
builderSetIsBrowsable_toTrueWithMediaType_setsFolderTypeToMatchMediaType
()
{
public
void
builderSetIsBrowsable_toTrueWithMediaType_setsFolderTypeToMatchMediaType
()
{
MediaMetadata
mediaMetadata
=
MediaMetadata
mediaMetadata
=
...
@@ -182,6 +188,7 @@ public class MediaMetadataTest {
...
@@ -182,6 +188,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadata
.
folderType
).
isEqualTo
(
MediaMetadata
.
FOLDER_TYPE_ARTISTS
);
assertThat
(
mediaMetadata
.
folderType
).
isEqualTo
(
MediaMetadata
.
FOLDER_TYPE_ARTISTS
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Testing deprecated field.
@Test
@Test
public
void
builderSetFolderType_toFalse_setsFolderTypeToNone
()
{
public
void
builderSetFolderType_toFalse_setsFolderTypeToNone
()
{
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
setIsBrowsable
(
false
).
build
();
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
setIsBrowsable
(
false
).
build
();
...
@@ -189,6 +196,7 @@ public class MediaMetadataTest {
...
@@ -189,6 +196,7 @@ public class MediaMetadataTest {
assertThat
(
mediaMetadata
.
folderType
).
isEqualTo
(
MediaMetadata
.
FOLDER_TYPE_NONE
);
assertThat
(
mediaMetadata
.
folderType
).
isEqualTo
(
MediaMetadata
.
FOLDER_TYPE_NONE
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Setting deprecated fields.
private
static
MediaMetadata
getFullyPopulatedMediaMetadata
()
{
private
static
MediaMetadata
getFullyPopulatedMediaMetadata
()
{
Bundle
extras
=
new
Bundle
();
Bundle
extras
=
new
Bundle
();
extras
.
putString
(
EXTRAS_KEY
,
EXTRAS_VALUE
);
extras
.
putString
(
EXTRAS_KEY
,
EXTRAS_VALUE
);
...
...
libraries/session/src/main/java/androidx/media3/session/LibraryResult.java
View file @
3fc61bb7
...
@@ -176,8 +176,8 @@ public final class LibraryResult<V> implements Bundleable {
...
@@ -176,8 +176,8 @@ public final class LibraryResult<V> implements Bundleable {
/**
/**
* Creates an instance with a media item and {@link #resultCode}{@code ==}{@link #RESULT_SUCCESS}.
* Creates an instance with a media item and {@link #resultCode}{@code ==}{@link #RESULT_SUCCESS}.
*
*
* <p>The {@link MediaItem#mediaMetadata} must specify {@link MediaMetadata#isBrowsable}
(or
* <p>The {@link MediaItem#mediaMetadata} must specify {@link MediaMetadata#isBrowsable}
and
* {@link MediaMetadata#
folderType}) and {@link MediaMetadata#
isPlayable} fields.
* {@link MediaMetadata#isPlayable} fields.
*
*
* @param item The media item.
* @param item The media item.
* @param params The optional parameters to describe the media item.
* @param params The optional parameters to describe the media item.
...
@@ -193,8 +193,7 @@ public final class LibraryResult<V> implements Bundleable {
...
@@ -193,8 +193,7 @@ public final class LibraryResult<V> implements Bundleable {
* #RESULT_SUCCESS}.
* #RESULT_SUCCESS}.
*
*
* <p>The {@link MediaItem#mediaMetadata} of each item in the list must specify {@link
* <p>The {@link MediaItem#mediaMetadata} of each item in the list must specify {@link
* MediaMetadata#isBrowsable} (or {@link MediaMetadata#folderType}) and {@link
* MediaMetadata#isBrowsable} and {@link MediaMetadata#isPlayable} fields.
* MediaMetadata#isPlayable} fields.
*
*
* @param items The list of media items.
* @param items The list of media items.
* @param params The optional parameters to describe the list of media items.
* @param params The optional parameters to describe the list of media items.
...
...
libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java
View file @
3fc61bb7
...
@@ -119,9 +119,8 @@ public abstract class MediaLibraryService extends MediaSessionService {
...
@@ -119,9 +119,8 @@ public abstract class MediaLibraryService extends MediaSessionService {
* An extended {@link MediaSession.Callback} for the {@link MediaLibrarySession}.
* An extended {@link MediaSession.Callback} for the {@link MediaLibrarySession}.
*
*
* <p>When you return {@link LibraryResult} with {@link MediaItem media items}, each item must
* <p>When you return {@link LibraryResult} with {@link MediaItem media items}, each item must
* have valid {@link MediaItem#mediaId} and specify {@link MediaMetadata#isBrowsable} (or {@link
* have valid {@link MediaItem#mediaId} and specify {@link MediaMetadata#isBrowsable} and {@link
* MediaMetadata#folderType}) and {@link MediaMetadata#isPlayable} in its {@link
* MediaMetadata#isPlayable} in its {@link MediaItem#mediaMetadata}.
* MediaItem#mediaMetadata}.
*/
*/
public
interface
Callback
extends
MediaSession
.
Callback
{
public
interface
Callback
extends
MediaSession
.
Callback
{
...
...
libraries/session/src/main/java/androidx/media3/session/MediaUtils.java
View file @
3fc61bb7
...
@@ -317,6 +317,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -317,6 +317,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
}
}
/** Converts a {@link MediaItem} to a {@link MediaDescriptionCompat} */
/** Converts a {@link MediaItem} to a {@link MediaDescriptionCompat} */
@SuppressWarnings
(
"deprecation"
)
// Converting deprecated fields.
public
static
MediaDescriptionCompat
convertToMediaDescriptionCompat
(
public
static
MediaDescriptionCompat
convertToMediaDescriptionCompat
(
MediaItem
item
,
@Nullable
Bitmap
artworkBitmap
)
{
MediaItem
item
,
@Nullable
Bitmap
artworkBitmap
)
{
MediaDescriptionCompat
.
Builder
builder
=
MediaDescriptionCompat
.
Builder
builder
=
...
@@ -372,6 +373,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -372,6 +373,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
descriptionCompat
,
ratingType
,
/* browsable= */
false
,
/* playable= */
true
);
descriptionCompat
,
ratingType
,
/* browsable= */
false
,
/* playable= */
true
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Populating deprecated fields.
private
static
MediaMetadata
convertToMediaMetadata
(
private
static
MediaMetadata
convertToMediaMetadata
(
@Nullable
MediaDescriptionCompat
descriptionCompat
,
@Nullable
MediaDescriptionCompat
descriptionCompat
,
@RatingCompat
.
Style
int
ratingType
,
@RatingCompat
.
Style
int
ratingType
,
...
@@ -425,6 +427,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -425,6 +427,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
}
}
/** Creates {@link MediaMetadata} from the {@link MediaMetadataCompat} and rating type. */
/** Creates {@link MediaMetadata} from the {@link MediaMetadataCompat} and rating type. */
@SuppressWarnings
(
"deprecation"
)
// Populating deprecated fields.
public
static
MediaMetadata
convertToMediaMetadata
(
public
static
MediaMetadata
convertToMediaMetadata
(
@Nullable
MediaMetadataCompat
metadataCompat
,
@RatingCompat
.
Style
int
ratingType
)
{
@Nullable
MediaMetadataCompat
metadataCompat
,
@RatingCompat
.
Style
int
ratingType
)
{
if
(
metadataCompat
==
null
)
{
if
(
metadataCompat
==
null
)
{
...
@@ -547,6 +550,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -547,6 +550,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
* duration should be included.
* duration should be included.
* @return An instance of the legacy {@link MediaMetadataCompat}.
* @return An instance of the legacy {@link MediaMetadataCompat}.
*/
*/
@SuppressWarnings
(
"deprecation"
)
// Converting deprecated fields.
public
static
MediaMetadataCompat
convertToMediaMetadataCompat
(
public
static
MediaMetadataCompat
convertToMediaMetadataCompat
(
MediaMetadata
metadata
,
MediaMetadata
metadata
,
String
mediaId
,
String
mediaId
,
...
@@ -629,6 +633,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -629,6 +633,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
return
builder
.
build
();
return
builder
.
build
();
}
}
@SuppressWarnings
(
"deprecation"
)
// Converting to deprecated constants.
@MediaMetadata
.
FolderType
@MediaMetadata
.
FolderType
private
static
int
convertToFolderType
(
long
extraBtFolderType
)
{
private
static
int
convertToFolderType
(
long
extraBtFolderType
)
{
if
(
extraBtFolderType
==
MediaDescriptionCompat
.
BT_FOLDER_TYPE_MIXED
)
{
if
(
extraBtFolderType
==
MediaDescriptionCompat
.
BT_FOLDER_TYPE_MIXED
)
{
...
@@ -650,6 +655,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -650,6 +655,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
}
}
}
}
@SuppressWarnings
(
"deprecation"
)
// Converting from deprecated constants.
private
static
long
convertToExtraBtFolderType
(
@MediaMetadata
.
FolderType
int
folderType
)
{
private
static
long
convertToExtraBtFolderType
(
@MediaMetadata
.
FolderType
int
folderType
)
{
switch
(
folderType
)
{
switch
(
folderType
)
{
case
MediaMetadata
.
FOLDER_TYPE_MIXED
:
case
MediaMetadata
.
FOLDER_TYPE_MIXED
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment