diff --git a/api/current.txt b/api/current.txt index f23f41fe147da..8880f2764e71d 100644 --- a/api/current.txt +++ b/api/current.txt @@ -24371,8 +24371,6 @@ package android.media { field public static final int MEDIA_CALL_PAUSE = 4; // 0x4 field public static final int MEDIA_CALL_PLAY = 5; // 0x5 field public static final int MEDIA_CALL_PREPARE = 6; // 0x6 - field public static final int MEDIA_CALL_PREPARE_DRM = 7; // 0x7 - field public static final int MEDIA_CALL_PROVIDE_DRM_KEY_RESPONSE = 8; // 0x8 field public static final int MEDIA_CALL_RELEASE_DRM = 12; // 0xc field public static final int MEDIA_CALL_RESTORE_DRM_KEYS = 13; // 0xd field public static final int MEDIA_CALL_SEEK_TO = 14; // 0xe @@ -24381,8 +24379,6 @@ package android.media { field public static final int MEDIA_CALL_SET_AUDIO_SESSION_ID = 17; // 0x11 field public static final int MEDIA_CALL_SET_AUX_EFFECT_SEND_LEVEL = 18; // 0x12 field public static final int MEDIA_CALL_SET_DATA_SOURCE = 19; // 0x13 - field public static final int MEDIA_CALL_SET_DRM_CONFIG_HELPER = 20; // 0x14 - field public static final int MEDIA_CALL_SET_DRM_PROPERTY_STRING = 21; // 0x15 field public static final int MEDIA_CALL_SET_NEXT_DATA_SOURCE = 22; // 0x16 field public static final int MEDIA_CALL_SET_NEXT_DATA_SOURCES = 23; // 0x17 field public static final int MEDIA_CALL_SET_PLAYBACK_PARAMS = 24; // 0x18 diff --git a/media/java/android/media/MediaPlayer2.java b/media/java/android/media/MediaPlayer2.java index 0cc744186a75d..f73c38eb9fb08 100644 --- a/media/java/android/media/MediaPlayer2.java +++ b/media/java/android/media/MediaPlayer2.java @@ -130,22 +130,21 @@ import java.util.concurrent.Executor; * the internal player engine. *
  • IllegalStateException is * thrown to prevent programming errors such as calling - * {@link #prepare()}, {@link #setDataSource(DataSourceDesc)}, or - * {@code setPlaylist} methods in an invalid state.
  • + * {@link #prepare()}, {@link #setDataSource(DataSourceDesc)} + * methods in an invalid state. * * *
  • Calling - * {@link #setDataSource(DataSourceDesc)}, or - * {@code setPlaylist} transfers a + * {@link #setDataSource(DataSourceDesc)} transfers a * MediaPlayer2 object in the Idle state to the * Initialized state. * *
  • *
  • A MediaPlayer2 object must first enter the Prepared state @@ -258,7 +257,7 @@ import java.util.concurrent.Executor; * attachAuxEffect

    * {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}

    * {Idle, Error}

    - * This method must be called after setDataSource or setPlaylist. + * This method must be called after setDataSource. * Calling it does not change the object state.

    * getAudioSessionId

    * any

    @@ -338,7 +337,7 @@ import java.util.concurrent.Executor; * {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, * Error}

    * This method must be called in idle state as the audio session ID must be known before - * calling setDataSource or setPlaylist. Calling it does not change the object + * calling setDataSource. Calling it does not change the object * state.

    * setAudioStreamType (deprecated)

    * {Idle, Initialized, Stopped, Prepared, Started, Paused, @@ -358,13 +357,6 @@ import java.util.concurrent.Executor; * Successful invoke of this method in a valid state transfers the * object to the Initialized state. Calling this method in an * invalid state throws an IllegalStateException.

    - * setPlaylist

    - * {Idle}

    - * {Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, - * Error}

    - * Successful invoke of this method in a valid state transfers the - * object to the Initialized state. Calling this method in an - * invalid state throws an IllegalStateException.

    * setDisplay

    * any

    * {}

    @@ -500,6 +492,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * This class implements the Java {@code AutoCloseable} interface and * may be used with try-with-resources. */ + // This is a synchronous call. @Override public abstract void close(); @@ -511,6 +504,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * prepared, the player will prepare the source and play. * */ + // This is an asynchronous call. @Override public abstract void play(); @@ -521,18 +515,21 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * call prepare(). * */ + // This is an asynchronous call. @Override public abstract void prepare(); /** * Pauses playback. Call play() to resume. */ + // This is an asynchronous call. @Override public abstract void pause(); /** * Tries to play next data source if applicable. */ + // This is an asynchronous call. @Override public abstract void skipToNext(); @@ -542,6 +539,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param msec the offset in milliseconds from the start to seek to */ + // This is an asynchronous call. @Override public void seekTo(long msec) { seekTo(msec, SEEK_PREVIOUS_SYNC /* mode */); @@ -600,6 +598,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * for the audio attributes to become effective thereafter. * @param attributes a non-null set of audio attributes */ + // This is an asynchronous call. @Override public abstract void setAudioAttributes(@NonNull AudioAttributes attributes); @@ -615,6 +614,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param dsd the descriptor of data source you want to play */ + // This is an asynchronous call. @Override public abstract void setDataSource(@NonNull DataSourceDesc dsd); @@ -624,6 +624,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param dsd the descriptor of data source you want to play after current one */ + // This is an asynchronous call. @Override public abstract void setNextDataSource(@NonNull DataSourceDesc dsd); @@ -632,6 +633,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param dsds the list of data sources you want to play after current one */ + // This is an asynchronous call. @Override public abstract void setNextDataSources(@NonNull List dsds); @@ -647,6 +649,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * Configures the player to loop on the current data source. * @param loop true if the current data source is meant to loop. */ + // This is an asynchronous call. @Override public abstract void loopCurrent(boolean loop); @@ -659,6 +662,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * by the player, see {@link #getPlaybackSpeed()}. * @param speed the desired playback speed */ + // This is an asynchronous call. @Override public abstract void setPlaybackSpeed(float speed); @@ -692,6 +696,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * gain. See {@link #getMaxPlayerVolume()} for the volume range supported by this player. * @param volume a value between 0.0f and {@link #getMaxPlayerVolume()}. */ + // This is an asynchronous call. @Override public abstract void setPlayerVolume(float volume); @@ -716,6 +721,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @param e the {@link Executor} to be used for the events. * @param cb the callback to receive the events. */ + // This is a synchronous call. @Override public abstract void registerPlayerEventCallback(@NonNull Executor e, @NonNull PlayerEventCallback cb); @@ -724,6 +730,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * Removes a previously registered callback for player events * @param cb the callback to remove */ + // This is a synchronous call. @Override public abstract void unregisterPlayerEventCallback(@NonNull PlayerEventCallback cb); @@ -746,7 +753,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * Invoke a generic method on the native player using opaque * parcels for the request and reply. Both payloads' format is a * convention between the java caller and the native player. - * Must be called after setDataSource or setPlaylist to make sure a native player + * Must be called after setDataSource to make sure a native player * exists. On failure, a RuntimeException is thrown. * * @param request Parcel with the data for the extension. The @@ -769,6 +776,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @param label An application specific Object used to help to identify the completeness * of a batch of commands. */ + // This is an asynchronous call. public void notifyWhenCommandLabelReached(Object label) { } /** @@ -807,6 +815,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @throws IllegalStateException if the internal player engine has not been * initialized or has been released. */ + // This is an asynchronous call. public abstract void setSurface(Surface surface); /* Do not change these video scaling mode values below without updating @@ -855,6 +864,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase /** * Discards all pending commands. */ + // This is a synchronous call. public abstract void clearPendingCommands(); /** @@ -878,6 +888,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @return true if succesful, false if the specified {@link AudioDeviceInfo} is non-null and * does not correspond to a valid audio device. */ + // This is an asynchronous call. @Override public abstract boolean setPreferredDevice(AudioDeviceInfo deviceInfo); @@ -905,6 +916,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @param handler Specifies the {@link Handler} object for the thread on which to execute * the callback. If null, the handler on the main looper will be used. */ + // This is a synchronous call. @Override public abstract void addOnRoutingChangedListener(AudioRouting.OnRoutingChangedListener listener, Handler handler); @@ -915,6 +927,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @param listener The previously added {@link AudioRouting.OnRoutingChangedListener} interface * to remove. */ + // This is a synchronous call. @Override public abstract void removeOnRoutingChangedListener(AudioRouting.OnRoutingChangedListener listener); @@ -1070,6 +1083,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @throws IllegalArgumentException if params is invalid or not supported. * @hide */ + // This is an asynchronous call. public void setBufferingParams(@NonNull BufferingParams params) { } /** @@ -1152,6 +1166,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param params the playback params. */ + // This is an asynchronous call. public abstract void setPlaybackParams(@NonNull PlaybackParams params); /** @@ -1167,6 +1182,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param params the A/V sync params to apply */ + // This is an asynchronous call. public abstract void setSyncParams(@NonNull SyncParams params); /** @@ -1255,6 +1271,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * {@link #SEEK_CLOSEST} often has larger performance overhead compared * to the other options if there is no sync frame located at msec. */ + // This is an asynchronous call. public abstract void seekTo(long msec, @SeekMode int mode); /** @@ -1327,6 +1344,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * this method, you will have to initialize it again by setting the * data source and calling prepare(). */ + // This is a synchronous call. @Override public abstract void reset(); @@ -1365,6 +1383,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * by calling this method. * This method must be called before one of the overloaded setDataSource methods. */ + // This is an asynchronous call. public abstract void setAudioSessionId(int sessionId); /** @@ -1389,6 +1408,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * methods. * @param effectId system wide unique id of the effect to attach */ + // This is an asynchronous call. public abstract void attachAuxEffect(int effectId); @@ -1404,6 +1424,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * 0 < x <= R -> level = 10^(72*(x-R)/20/R) * @param level send level scalar */ + // This is an asynchronous call. public abstract void setAuxEffectSendLevel(float level); /** @@ -1618,6 +1639,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @see android.media.MediaPlayer2#getTrackInfo */ + // This is an asynchronous call. public abstract void selectTrack(int index); /** @@ -1634,6 +1656,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @see android.media.MediaPlayer2#getTrackInfo */ + // This is an asynchronous call. public abstract void deselectTrack(int index); /** @hide */ @@ -1754,8 +1777,6 @@ public abstract class MediaPlayer2 extends MediaPlayerBase *
  • {@link #MEDIA_CALL_PAUSE} *
  • {@link #MEDIA_CALL_PLAY} *
  • {@link #MEDIA_CALL_PREPARE} - *
  • {@link #MEDIA_CALL_PREPARE_DRM} - *
  • {@link #MEDIA_CALL_PROVIDE_DRM_KEY_RESPONSE} *
  • {@link #MEDIA_CALL_RELEASE_DRM} *
  • {@link #MEDIA_CALL_RESTORE_DRM_KEYS} *
  • {@link #MEDIA_CALL_SEEK_TO} @@ -1764,8 +1785,6 @@ public abstract class MediaPlayer2 extends MediaPlayerBase *
  • {@link #MEDIA_CALL_SET_AUDIO_SESSION_ID} *
  • {@link #MEDIA_CALL_SET_AUX_EFFECT_SEND_LEVEL} *
  • {@link #MEDIA_CALL_SET_DATA_SOURCE} - *
  • {@link #MEDIA_CALL_SET_DRM_CONFIG_HELPER} - *
  • {@link #MEDIA_CALL_SET_DRM_PROPERTY_STRING} *
  • {@link #MEDIA_CALL_SET_NEXT_DATA_SOURCE} *
  • {@link #MEDIA_CALL_SET_NEXT_DATA_SOURCES} *
  • {@link #MEDIA_CALL_SET_PLAYBACK_PARAMS} @@ -1804,12 +1823,14 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @param eventCallback the callback that will be run * @param executor the executor through which the callback should be invoked */ + // This is a synchronous call. public abstract void setMediaPlayer2EventCallback(@NonNull @CallbackExecutor Executor executor, @NonNull MediaPlayer2EventCallback eventCallback); /** * Clears the {@link MediaPlayer2EventCallback}. */ + // This is a synchronous call. public abstract void clearMediaPlayer2EventCallback(); /** @@ -1830,6 +1851,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @hide */ + // This is a synchronous call. public void setOnSubtitleDataListener(OnSubtitleDataListener listener) { } @@ -1996,136 +2018,128 @@ public abstract class MediaPlayer2 extends MediaPlayerBase public static final int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902; //-------------------------------------------------------------------------- - /** The player just completed a call {@code attachAuxEffect}. + /** The player just completed a call {@link #attachAuxEffect}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_ATTACH_AUX_EFFECT = 1; - /** The player just completed a call {@code deselectTrack}. + /** The player just completed a call {@link #deselectTrack}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_DESELECT_TRACK = 2; - /** The player just completed a call {@code loopCurrent}. + /** The player just completed a call {@link #loopCurrent}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_LOOP_CURRENT = 3; - /** The player just completed a call {@code pause}. + /** The player just completed a call {@link #pause}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_PAUSE = 4; - /** The player just completed a call {@code play}. + /** The player just completed a call {@link #play}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_PLAY = 5; - /** The player just completed a call {@code prepare}. + /** The player just completed a call {@link #prepare}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_PREPARE = 6; - /** The player just completed a call {@code prepareDrm}. - * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete - */ - public static final int MEDIA_CALL_PREPARE_DRM = 7; - - /** The player just completed a call {@code provideDrmKeyResponse}. - * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete - */ - public static final int MEDIA_CALL_PROVIDE_DRM_KEY_RESPONSE = 8; - - /** The player just completed a call {@code releaseDrm}. + /** The player just completed a call {@link #releaseDrm}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_RELEASE_DRM = 12; - /** The player just completed a call {@code restoreDrmKeys}. + /** The player just completed a call {@link #restoreDrmKeys}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_RESTORE_DRM_KEYS = 13; - /** The player just completed a call {@code seekTo}. + /** The player just completed a call {@link #seekTo}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SEEK_TO = 14; - /** The player just completed a call {@code selectTrack}. + /** The player just completed a call {@link #selectTrack}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SELECT_TRACK = 15; - /** The player just completed a call {@code setAudioAttributes}. + /** The player just completed a call {@link #setAudioAttributes}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_AUDIO_ATTRIBUTES = 16; - /** The player just completed a call {@code setAudioSessionId}. + /** The player just completed a call {@link #setAudioSessionId}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_AUDIO_SESSION_ID = 17; - /** The player just completed a call {@code setAuxEffectSendLevel}. + /** The player just completed a call {@link #setAuxEffectSendLevel}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_AUX_EFFECT_SEND_LEVEL = 18; - /** The player just completed a call {@code setDataSource}. + /** The player just completed a call {@link #setDataSource}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_DATA_SOURCE = 19; - /** The player just completed a call {@code setOnDrmConfigHelper}. - * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete - */ - public static final int MEDIA_CALL_SET_DRM_CONFIG_HELPER = 20; - - /** The player just completed a call {@code setDrmPropertyString}. - * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete - */ - public static final int MEDIA_CALL_SET_DRM_PROPERTY_STRING = 21; - - /** The player just completed a call {@code setNextDataSource}. + /** The player just completed a call {@link #setNextDataSource}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_NEXT_DATA_SOURCE = 22; - /** The player just completed a call {@code setNextDataSources}. + /** The player just completed a call {@link #setNextDataSources}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_NEXT_DATA_SOURCES = 23; - /** The player just completed a call {@code setPlaybackParams}. + /** The player just completed a call {@link #setPlaybackParams}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_PLAYBACK_PARAMS = 24; - /** The player just completed a call {@code setPlaybackSpeed}. + /** The player just completed a call {@link #setPlaybackSpeed}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_PLAYBACK_SPEED = 25; - /** The player just completed a call {@code setPlayerVolume}. + /** The player just completed a call {@link #setPlayerVolume}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_PLAYER_VOLUME = 26; - /** The player just completed a call {@code setSurface}. + /** The player just completed a call {@link #setSurface}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_SURFACE = 27; - /** The player just completed a call {@code setSyncParams}. + /** The player just completed a call {@link #setSyncParams}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SET_SYNC_PARAMS = 28; - /** The player just completed a call {@code skipToNext}. + /** The player just completed a call {@link #skipToNext}. * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete */ public static final int MEDIA_CALL_SKIP_TO_NEXT = 29; + /** The player just completed a call {@link #setBufferingParams}. + * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete + * @hide + */ + public static final int MEDIA_CALL_SET_BUFFERING_PARAMS = 1001; + + /** The player just completed a call {@link #setPreferredDevice}. + * @see android.media.MediaPlayer2.MediaPlayer2EventCallback#onCallComplete + * @hide + */ + public static final int MEDIA_CALL_SET_PREFERRED_DEVICE = 1002; + // Modular DRM begin @@ -2136,8 +2150,8 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * 'securityLevel', which has to be set after DRM scheme creation but * before the DRM session is opened. * - * The only allowed DRM calls in this listener are {@code getDrmPropertyString} - * and {@code setDrmPropertyString}. + * The only allowed DRM calls in this listener are {@link #getDrmPropertyString} + * and {@link #setDrmPropertyString}. */ public interface OnDrmConfigHelper { @@ -2158,6 +2172,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param listener the callback that will be run */ + // This is a synchronous call. public abstract void setOnDrmConfigHelper(OnDrmConfigHelper listener); /** @@ -2176,7 +2191,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase public void onDrmInfo(MediaPlayer2 mp, DataSourceDesc dsd, DrmInfo drmInfo) { } /** - * Called to notify the client that {@code prepareDrm} is finished and ready for + * Called to notify the client that {@link #prepareDrm} is finished and ready for * key request/response. * * @param mp the {@code MediaPlayer2} associated with this callback @@ -2196,12 +2211,14 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @param eventCallback the callback that will be run * @param executor the executor through which the callback should be invoked */ + // This is a synchronous call. public abstract void setDrmEventCallback(@NonNull @CallbackExecutor Executor executor, @NonNull DrmEventCallback eventCallback); /** * Clears the {@link DrmEventCallback}. */ + // This is a synchronous call. public abstract void clearDrmEventCallback(); /** @@ -2248,10 +2265,10 @@ public abstract class MediaPlayer2 extends MediaPlayerBase /** * Prepares the DRM for the current source *

    - * If {@code OnDrmConfigHelper} is registered, it will be called during + * If {@link OnDrmConfigHelper} is registered, it will be called during * preparation to allow configuration of the DRM properties before opening the * DRM session. Note that the callback is called synchronously in the thread that called - * {@code prepareDrm}. It should be used only for a series of {@code getDrmPropertyString} + * {@link #prepareDrm}. It should be used only for a series of {@code getDrmPropertyString} * and {@code setDrmPropertyString} calls and refrain from any lengthy operation. *

    * If the device has not been provisioned before, this call also provisions the device @@ -2281,6 +2298,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @throws ProvisioningServerErrorException if provisioning is required but failed due to * the request denied by the provisioning server */ + // This is a synchronous call. public abstract void prepareDrm(@NonNull UUID uuid) throws UnsupportedSchemeException, ResourceBusyException, ProvisioningNetworkErrorException, ProvisioningServerErrorException; @@ -2294,6 +2312,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @throws NoDrmSchemeException if there is no active DRM session to release */ + // This is an asynchronous call. public abstract void releaseDrm() throws NoDrmSchemeException; /** @@ -2359,6 +2378,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * @throws DeniedByServerException if the response indicates that the * server rejected the request */ + // This is a synchronous call. public abstract byte[] provideDrmKeyResponse( @Nullable byte[] keySetId, @NonNull byte[] response) throws NoDrmSchemeException, DeniedByServerException; @@ -2369,6 +2389,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * * @param keySetId identifies the saved key set to restore */ + // This is an asynchronous call. public abstract void restoreDrmKeys(@NonNull byte[] keySetId) throws NoDrmSchemeException; @@ -2396,6 +2417,7 @@ public abstract class MediaPlayer2 extends MediaPlayerBase * {@link MediaDrm#PROPERTY_VENDOR}, {@link MediaDrm#PROPERTY_VERSION}, * {@link MediaDrm#PROPERTY_DESCRIPTION}, {@link MediaDrm#PROPERTY_ALGORITHMS} */ + // This is a synchronous call. public abstract void setDrmPropertyString( @NonNull @MediaDrm.StringProperty String propertyName, @NonNull String value) throws NoDrmSchemeException;