Back to Exoplayer

FrameworkMediaDrm (ExoPlayer library)

docs/doc/reference/com/google/android/exoplayer2/drm/FrameworkMediaDrm.html

latest25.7 KB
Original Source

Package com.google.android.exoplayer2.drm

Class FrameworkMediaDrm

  • java.lang.Object

    • com.google.android.exoplayer2.drm.FrameworkMediaDrm
  • All Implemented Interfaces:ExoMediaDrm


@RequiresApi(18)[@Deprecated](https://developer.android.com/reference/java/lang/Deprecated.html "class or interface in java.lang")public final classFrameworkMediaDrmextends[Object](https://developer.android.com/reference/java/lang/Object.html "class or interface in java.lang")implements[ExoMediaDrm](ExoMediaDrm.html "interface in com.google.android.exoplayer2.drm")

Deprecated. com.google.android.exoplayer2 is deprecated. Please migrate to androidx.media3 (which contains the same ExoPlayer code). See the migration guide for more details, including a script to help with the migration.

An ExoMediaDrm implementation that wraps the framework MediaDrm.

Nested Class Summary

- 

Nested classes/interfaces inherited from interface com.google.android.exoplayer2.drm.ExoMediaDrm

ExoMediaDrm.AppManagedProvider, ExoMediaDrm.KeyRequest, ExoMediaDrm.KeyStatus, ExoMediaDrm.OnEventListener, ExoMediaDrm.OnExpirationUpdateListener, ExoMediaDrm.OnKeyStatusChangeListener, ExoMediaDrm.Provider, ExoMediaDrm.ProvisionRequest

Field Summary

Fields | Modifier and Type | Field | Description | | --- | --- | --- | | static ExoMediaDrm.Provider | DEFAULT_PROVIDER | Deprecated.

ExoMediaDrm.Provider that returns a new FrameworkMediaDrm for the requested UUID. |

- 

Fields inherited from interface com.google.android.exoplayer2.drm.ExoMediaDrm

EVENT_KEY_EXPIRED, EVENT_KEY_REQUIRED, EVENT_PROVISION_REQUIRED, KEY_TYPE_OFFLINE, KEY_TYPE_RELEASE, KEY_TYPE_STREAMING

Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods | Modifier and Type | Method | Description | | --- | --- | --- | | void | acquire() | Deprecated.

Increments the reference count. | | void | closeSession​(byte[] sessionId) | Deprecated.

Closes a DRM session. | | FrameworkCryptoConfig | createCryptoConfig​(byte[] sessionId) | Deprecated.

Creates a CryptoConfig that can be passed to a compatible decoder to allow decryption of protected content using the specified session. | | @com.google.android.exoplayer2.C.CryptoType int | getCryptoType() | Deprecated.

Returns the type of CryptoConfig instances returned by ExoMediaDrm.createCryptoConfig(byte[]). | | ExoMediaDrm.KeyRequest | getKeyRequest​(byte[] scope, List<DrmInitData.SchemeData> schemeDatas, int keyType, HashMap<String,​String> optionalParameters) | Deprecated.

Generates a key request. | | PersistableBundle | getMetrics() | Deprecated.

Returns metrics data for this ExoMediaDrm instance, or null if metrics are unavailable. | | byte[] | getPropertyByteArray​(String propertyName) | Deprecated.

Returns the value of a byte array property. | | String | getPropertyString​(String propertyName) | Deprecated.

Returns the value of a string property. | | ExoMediaDrm.ProvisionRequest | getProvisionRequest() | Deprecated.

Generates a provisioning request. | | static boolean | isCryptoSchemeSupported​(UUID uuid) | Deprecated.

Returns whether the DRM scheme with the given UUID is supported on this device. | | static FrameworkMediaDrm | newInstance​(UUID uuid) | Deprecated.

Creates an instance with an initial reference count of 1. | | byte[] | openSession() | Deprecated.

Opens a new DRM session. | | byte[] | provideKeyResponse​(byte[] scope, byte[] response) | Deprecated.

Provides a key response for the last request to be generated using ExoMediaDrm.getKeyRequest(byte[], java.util.List<com.google.android.exoplayer2.drm.DrmInitData.SchemeData>, int, java.util.HashMap<java.lang.String, java.lang.String>). | | void | provideProvisionResponse​(byte[] response) | Deprecated.

Provides a provisioning response for the last request to be generated using ExoMediaDrm.getProvisionRequest(). | | Map<String,​String> | queryKeyStatus​(byte[] sessionId) | Deprecated.

Returns the key status for a given session, as {name, value} pairs. | | void | release() | Deprecated.

Decrements the reference count. | | boolean | requiresSecureDecoder​(byte[] sessionId, String mimeType) | Deprecated.

Returns whether the given session requires use of a secure decoder for the given MIME type. | | void | restoreKeys​(byte[] sessionId, byte[] keySetId) | Deprecated.

Restores persisted offline keys into a session. | | void | setOnEventListener​(ExoMediaDrm.OnEventListener listener) | Deprecated.

Sets the listener for DRM events. | | void | setOnExpirationUpdateListener​(ExoMediaDrm.OnExpirationUpdateListener listener) | Deprecated.

Sets the listener for session expiration events. | | void | setOnKeyStatusChangeListener​(ExoMediaDrm.OnKeyStatusChangeListener listener) | Deprecated.

Sets the listener for key status change events. | | void | setPlayerIdForSession​(byte[] sessionId, PlayerId playerId) | Deprecated.

Sets the PlayerId of the player using a session. | | void | setPropertyByteArray​(String propertyName, byte[] value) | Deprecated.

Sets the value of a byte array property. | | void | setPropertyString​(String propertyName, String value) | Deprecated.

Sets the value of a string property. |

- 

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

- 

DEFAULT_PROVIDER

public static final[ExoMediaDrm.Provider](ExoMediaDrm.Provider.html "interface in com.google.android.exoplayer2.drm")DEFAULT_PROVIDER

Deprecated.

ExoMediaDrm.Provider that returns a new FrameworkMediaDrm for the requested UUID. Returns a DummyExoMediaDrm if the protection scheme identified by the given UUID is not supported by the device.

Method Detail

- 

isCryptoSchemeSupported

public static boolean isCryptoSchemeSupported​([UUID](https://developer.android.com/reference/java/util/UUID.html "class or interface in java.util")uuid)

Deprecated.

Returns whether the DRM scheme with the given UUID is supported on this device. See Also:MediaDrm.isCryptoSchemeSupported(UUID)

- 

newInstance

public static[FrameworkMediaDrm](FrameworkMediaDrm.html "class in com.google.android.exoplayer2.drm")newInstance​([UUID](https://developer.android.com/reference/java/util/UUID.html "class or interface in java.util")uuid)
                                     throws[UnsupportedDrmException](UnsupportedDrmException.html "class in com.google.android.exoplayer2.drm")

Deprecated.

Creates an instance with an initial reference count of 1. release() must be called on the instance when it's no longer required. Parameters:uuid - The scheme uuid.Returns:The created instance.Throws:UnsupportedDrmException - If the DRM scheme is unsupported or cannot be instantiated.

- 

setOnEventListener

public void setOnEventListener​(@Nullable[ExoMediaDrm.OnEventListener](ExoMediaDrm.OnEventListener.html "interface in com.google.android.exoplayer2.drm")listener)

Deprecated.

Description copied from interface: ExoMediaDrm

Sets the listener for DRM events.

This is an optional method, and some implementations may only support it on certain Android API levels.

Specified by:setOnEventListener in interface ExoMediaDrmParameters:listener - The listener to receive events, or null to stop receiving events.See Also:MediaDrm.setOnEventListener(MediaDrm.OnEventListener)

- 

setOnKeyStatusChangeListener

@RequiresApi(23)
public void setOnKeyStatusChangeListener​(@Nullable[ExoMediaDrm.OnKeyStatusChangeListener](ExoMediaDrm.OnKeyStatusChangeListener.html "interface in com.google.android.exoplayer2.drm")listener)

Deprecated.

Sets the listener for key status change events.

This is an optional method, and some implementations may only support it on certain Android API levels.

Specified by:setOnKeyStatusChangeListener in interface ExoMediaDrmParameters:listener - The listener to receive events, or null to stop receiving events.Throws:UnsupportedOperationException - on API levels lower than 23.See Also:MediaDrm.setOnKeyStatusChangeListener(MediaDrm.OnKeyStatusChangeListener, Handler)

- 

setOnExpirationUpdateListener

@RequiresApi(23)
public void setOnExpirationUpdateListener​(@Nullable[ExoMediaDrm.OnExpirationUpdateListener](ExoMediaDrm.OnExpirationUpdateListener.html "interface in com.google.android.exoplayer2.drm")listener)

Deprecated.

Sets the listener for session expiration events.

This is an optional method, and some implementations may only support it on certain Android API levels.

Specified by:setOnExpirationUpdateListener in interface ExoMediaDrmParameters:listener - The listener to receive events, or null to stop receiving events.Throws:UnsupportedOperationException - on API levels lower than 23.See Also:MediaDrm.setOnExpirationUpdateListener(MediaDrm.OnExpirationUpdateListener, Handler)

- 

openSession

public byte[] openSession()
                   throws[MediaDrmException](https://developer.android.com/reference/android/media/MediaDrmException.html "class or interface in android.media")

Deprecated.

Description copied from interface: ExoMediaDrm

Opens a new DRM session. A session ID is returned. Specified by:openSession in interface ExoMediaDrmReturns:The session ID.Throws:NotProvisionedException - If provisioning is needed.ResourceBusyException - If required resources are in use.MediaDrmException - If the session could not be opened.

- 

closeSession

public void closeSession​(byte[] sessionId)

Deprecated.

Description copied from interface: ExoMediaDrm

Closes a DRM session. Specified by:closeSession in interface ExoMediaDrmParameters:sessionId - The ID of the session to close.

- 

setPlayerIdForSession

public void setPlayerIdForSession​(byte[] sessionId,[PlayerId](../analytics/PlayerId.html "class in com.google.android.exoplayer2.analytics")playerId)

Deprecated.

Description copied from interface: ExoMediaDrm

Sets the PlayerId of the player using a session. Specified by:setPlayerIdForSession in interface ExoMediaDrmParameters:sessionId - The ID of the session.playerId - The PlayerId of the player using the session.

- 

getKeyRequest

public[ExoMediaDrm.KeyRequest](ExoMediaDrm.KeyRequest.html "class in com.google.android.exoplayer2.drm")getKeyRequest​(byte[] scope,
                                            @Nullable[List](https://developer.android.com/reference/java/util/List.html "class or interface in java.util")<[DrmInitData.SchemeData](DrmInitData.SchemeData.html "class in com.google.android.exoplayer2.drm")> schemeDatas,
                                            int keyType,
                                            @Nullable[HashMap](https://developer.android.com/reference/java/util/HashMap.html "class or interface in java.util")<[String](https://developer.android.com/reference/java/lang/String.html?is-external=true "class or interface in java.lang"),​[String](https://developer.android.com/reference/java/lang/String.html?is-external=true "class or interface in java.lang")> optionalParameters)
                                     throws[NotProvisionedException](https://developer.android.com/reference/android/media/NotProvisionedException.html "class or interface in android.media")

Deprecated.

Description copied from interface: ExoMediaDrm

Generates a key request. Specified by:getKeyRequest in interface ExoMediaDrmParameters:scope - If keyType is ExoMediaDrm.KEY_TYPE_STREAMING or ExoMediaDrm.KEY_TYPE_OFFLINE, the ID of the session that the keys will be provided to. If keyType is ExoMediaDrm.KEY_TYPE_RELEASE, the keySetId of the keys to release.schemeDatas - If key type is ExoMediaDrm.KEY_TYPE_STREAMING or ExoMediaDrm.KEY_TYPE_OFFLINE, a list of DrmInitData.SchemeData instances extracted from the media. Null otherwise.keyType - The type of the request. Either ExoMediaDrm.KEY_TYPE_STREAMING to acquire keys for streaming, ExoMediaDrm.KEY_TYPE_OFFLINE to acquire keys for offline usage, or ExoMediaDrm.KEY_TYPE_RELEASE to release acquired keys. Releasing keys invalidates them for all sessions.optionalParameters - Are included in the key request message to allow a client application to provide additional message parameters to the server. This may be null if no additional parameters are to be sent.Returns:The generated key request.Throws:NotProvisionedExceptionSee Also:MediaDrm.getKeyRequest(byte[], byte[], String, int, HashMap)

- 

provideKeyResponse

@Nullable
public byte[] provideKeyResponse​(byte[] scope,
                                 byte[] response)
                          throws[NotProvisionedException](https://developer.android.com/reference/android/media/NotProvisionedException.html "class or interface in android.media"),[DeniedByServerException](https://developer.android.com/reference/android/media/DeniedByServerException.html "class or interface in android.media")

Deprecated.

Description copied from interface: ExoMediaDrm

Provides a key response for the last request to be generated using ExoMediaDrm.getKeyRequest(byte[], java.util.List<com.google.android.exoplayer2.drm.DrmInitData.SchemeData>, int, java.util.HashMap<java.lang.String, java.lang.String>). Specified by:provideKeyResponse in interface ExoMediaDrmParameters:scope - If the request had type ExoMediaDrm.KEY_TYPE_STREAMING or ExoMediaDrm.KEY_TYPE_OFFLINE, the ID of the session to provide the keys to. If keyType is ExoMediaDrm.KEY_TYPE_RELEASE, the keySetId of the keys being released.response - The response data from the server.Returns:If the request had type ExoMediaDrm.KEY_TYPE_OFFLINE, the keySetId for the offline keys. An empty byte array or null may be returned for other cases.Throws:NotProvisionedException - If the response indicates that provisioning is needed.DeniedByServerException - If the response indicates that the server rejected the request.

- 

getProvisionRequest

public[ExoMediaDrm.ProvisionRequest](ExoMediaDrm.ProvisionRequest.html "class in com.google.android.exoplayer2.drm")getProvisionRequest()

Deprecated.

Description copied from interface: ExoMediaDrm

Generates a provisioning request. Specified by:getProvisionRequest in interface ExoMediaDrmReturns:The generated provisioning request.

- 

provideProvisionResponse

public void provideProvisionResponse​(byte[] response)
                              throws[DeniedByServerException](https://developer.android.com/reference/android/media/DeniedByServerException.html "class or interface in android.media")

Deprecated.

Description copied from interface: ExoMediaDrm

Provides a provisioning response for the last request to be generated using ExoMediaDrm.getProvisionRequest(). Specified by:provideProvisionResponse in interface ExoMediaDrmParameters:response - The response data from the server.Throws:DeniedByServerException - If the response indicates that the server rejected the request.

- 

queryKeyStatus

public[Map](https://developer.android.com/reference/java/util/Map.html "class or interface in java.util")<[String](https://developer.android.com/reference/java/lang/String.html?is-external=true "class or interface in java.lang"),​[String](https://developer.android.com/reference/java/lang/String.html?is-external=true "class or interface in java.lang")> queryKeyStatus​(byte[] sessionId)

Deprecated.

Description copied from interface: ExoMediaDrm

Returns the key status for a given session, as {name, value} pairs. Since DRM license policies vary by vendor, the returned entries depend on the DRM plugin being used. Refer to your DRM provider's documentation for more information. Specified by:queryKeyStatus in interface ExoMediaDrmParameters:sessionId - The ID of the session being queried.Returns:The key status for the session.

- 

requiresSecureDecoder

public boolean requiresSecureDecoder​(byte[] sessionId,[String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")mimeType)

Deprecated.

Description copied from interface: ExoMediaDrm

Returns whether the given session requires use of a secure decoder for the given MIME type. Assumes a license policy that requires the highest level of security supported by the session. Specified by:requiresSecureDecoder in interface ExoMediaDrmParameters:sessionId - The ID of the session.mimeType - The content MIME type to query.

- 

acquire

public void acquire()

Deprecated.

Description copied from interface: ExoMediaDrm

Increments the reference count. When the caller no longer needs to use the instance, it must call ExoMediaDrm.release() to decrement the reference count.

A new instance will have an initial reference count of 1, and therefore it is not normally necessary for application code to call this method.

Specified by:acquire in interface ExoMediaDrm

- 

release

public void release()

Deprecated.

Description copied from interface: ExoMediaDrm

Decrements the reference count. If the reference count drops to 0 underlying resources are released, and the instance cannot be re-used. Specified by:release in interface ExoMediaDrm

- 

restoreKeys

public void restoreKeys​(byte[] sessionId,
                        byte[] keySetId)

Deprecated.

Description copied from interface: ExoMediaDrm

Restores persisted offline keys into a session. Specified by:restoreKeys in interface ExoMediaDrmParameters:sessionId - The ID of the session into which the keys will be restored.keySetId - The keySetId of the keys to restore, as provided by the call to ExoMediaDrm.provideKeyResponse(byte[], byte[]) that persisted them.

- 

getMetrics

@Nullable
public[PersistableBundle](https://developer.android.com/reference/android/os/PersistableBundle.html "class or interface in android.os")getMetrics()

Deprecated.

Description copied from interface: ExoMediaDrm

Returns metrics data for this ExoMediaDrm instance, or null if metrics are unavailable. Specified by:getMetrics in interface ExoMediaDrm

- 

getPropertyString

public[String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")getPropertyString​([String](https://developer.android.com/reference/java/lang/String.html?is-external=true "class or interface in java.lang")propertyName)

Deprecated.

Description copied from interface: ExoMediaDrm

Returns the value of a string property. For standard property names, see MediaDrm.getPropertyString(java.lang.String). Specified by:getPropertyString in interface ExoMediaDrmParameters:propertyName - The property name.Returns:The property value.

- 

getPropertyByteArray

public byte[] getPropertyByteArray​([String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")propertyName)

Deprecated.

Description copied from interface: ExoMediaDrm

Returns the value of a byte array property. For standard property names, see MediaDrm.getPropertyByteArray(java.lang.String). Specified by:getPropertyByteArray in interface ExoMediaDrmParameters:propertyName - The property name.Returns:The property value.

- 

setPropertyString

public void setPropertyString​([String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")propertyName,[String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")value)

Deprecated.

Description copied from interface: ExoMediaDrm

Sets the value of a string property. Specified by:setPropertyString in interface ExoMediaDrmParameters:propertyName - The property name.value - The value.

- 

setPropertyByteArray

public void setPropertyByteArray​([String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")propertyName,
                                 byte[] value)

Deprecated.

Description copied from interface: ExoMediaDrm

Sets the value of a byte array property. Specified by:setPropertyByteArray in interface ExoMediaDrmParameters:propertyName - The property name.value - The value.

- 

createCryptoConfig

public[FrameworkCryptoConfig](FrameworkCryptoConfig.html "class in com.google.android.exoplayer2.drm")createCryptoConfig​(byte[] sessionId)
                                         throws[MediaCryptoException](https://developer.android.com/reference/android/media/MediaCryptoException.html "class or interface in android.media")

Deprecated.

Description copied from interface: ExoMediaDrm

Creates a CryptoConfig that can be passed to a compatible decoder to allow decryption of protected content using the specified session. Specified by:createCryptoConfig in interface ExoMediaDrmParameters:sessionId - The ID of the session.Returns:A CryptoConfig for the given session.Throws:MediaCryptoException - If a CryptoConfig could not be created.

- 

getCryptoType

public @com.google.android.exoplayer2.C.CryptoType int getCryptoType()

Deprecated.

Description copied from interface: ExoMediaDrm

Returns the type of CryptoConfig instances returned by ExoMediaDrm.createCryptoConfig(byte[]). Specified by:getCryptoType in interface ExoMediaDrm