diff --git a/api/current.txt b/api/current.txt index 3c62a220c32f8..9a5a8dcb1ac4b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -22785,7 +22785,7 @@ package android.media { method public deprecated void setAudioStreamType(int); method public void setAuxEffectSendLevel(float); method public void setDataSource(android.content.Context, android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; - method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map, java.util.List) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; + method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map, java.util.List) throws java.io.IOException; method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; method public void setDataSource(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; method public void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; diff --git a/api/system-current.txt b/api/system-current.txt index dc4c9100fae88..02858654a4e34 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -24621,7 +24621,7 @@ package android.media { method public deprecated void setAudioStreamType(int); method public void setAuxEffectSendLevel(float); method public void setDataSource(android.content.Context, android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; - method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map, java.util.List) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; + method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map, java.util.List) throws java.io.IOException; method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; method public void setDataSource(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; method public void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; diff --git a/api/test-current.txt b/api/test-current.txt index d325dbd0a6375..f02b5aaf26b05 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -22892,7 +22892,7 @@ package android.media { method public deprecated void setAudioStreamType(int); method public void setAuxEffectSendLevel(float); method public void setDataSource(android.content.Context, android.net.Uri) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; - method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map, java.util.List) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; + method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map, java.util.List) throws java.io.IOException; method public void setDataSource(android.content.Context, android.net.Uri, java.util.Map) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; method public void setDataSource(java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.SecurityException; method public void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index d5efc971d1fd5..293ceea79523c 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -1010,6 +1010,8 @@ public class MediaPlayer extends PlayerBase * The headers must not include cookies. Instead, use the cookies param. * @param cookies the cookies to be sent together with the request * @throws IllegalStateException if it is called in an invalid state + * @throws NullPointerException if context or uri is null + * @throws IOException if uri has a file scheme and an I/O error occurs * *

Note that the cross domain redirection is allowed by default, * but that can be changed with key/value pairs through the headers parameter with @@ -1018,7 +1020,15 @@ public class MediaPlayer extends PlayerBase */ public void setDataSource(@NonNull Context context, @NonNull Uri uri, @Nullable Map headers, @Nullable List cookies) - throws IOException, IllegalArgumentException, SecurityException, IllegalStateException { + throws IOException { + if (context == null) { + throw new NullPointerException("context param can not be null."); + } + + if (uri == null) { + throw new NullPointerException("uri param can not be null."); + } + // The context and URI usually belong to the calling user. Get a resolver for that user // and strip out the userId from the URI if present. final ContentResolver resolver = context.getContentResolver(); @@ -4624,13 +4634,25 @@ public class MediaPlayer extends PlayerBase } // synchronized } + /** + * Encapsulates the DRM properties of the source. + */ public static final class DrmInfo { private Map mapPssh; private UUID[] supportedSchemes; + /** + * Returns the PSSH info of the data source for each supported DRM scheme. + */ public Map getPssh() { return mapPssh; } + + /** + * Returns the intersection of the data source and the device DRM schemes. + * It effectively identifies the subset of the source's DRM schemes which + * are supported by the device too. + */ public UUID[] getSupportedSchemes() { return supportedSchemes; }