public final class FrameworkMediaDrm extends java.lang.Object implements ExoMediaDrm<FrameworkMediaCrypto>
ExoMediaDrm
implementation that wraps the framework MediaDrm
.ExoMediaDrm.KeyRequest, ExoMediaDrm.KeyStatus, ExoMediaDrm.OnEventListener<T extends ExoMediaCrypto>, ExoMediaDrm.OnKeyStatusChangeListener<T extends ExoMediaCrypto>, ExoMediaDrm.ProvisionRequest
EVENT_KEY_EXPIRED, EVENT_KEY_REQUIRED, EVENT_PROVISION_REQUIRED, KEY_TYPE_OFFLINE, KEY_TYPE_RELEASE, KEY_TYPE_STREAMING
Modifier and Type | Method and Description |
---|---|
void |
closeSession(byte[] sessionId) |
FrameworkMediaCrypto |
createMediaCrypto(byte[] initData) |
ExoMediaDrm.KeyRequest |
getKeyRequest(byte[] scope,
java.util.List<DrmInitData.SchemeData> schemeDatas,
int keyType,
java.util.HashMap<java.lang.String,java.lang.String> optionalParameters)
Generates a key request.
|
byte[] |
getPropertyByteArray(java.lang.String propertyName) |
java.lang.String |
getPropertyString(java.lang.String propertyName) |
ExoMediaDrm.ProvisionRequest |
getProvisionRequest() |
static FrameworkMediaDrm |
newInstance(java.util.UUID uuid)
Creates an instance for the specified scheme UUID.
|
byte[] |
openSession() |
byte[] |
provideKeyResponse(byte[] scope,
byte[] response) |
void |
provideProvisionResponse(byte[] response) |
java.util.Map<java.lang.String,java.lang.String> |
queryKeyStatus(byte[] sessionId) |
void |
release() |
void |
restoreKeys(byte[] sessionId,
byte[] keySetId) |
void |
setOnEventListener(ExoMediaDrm.OnEventListener<? super FrameworkMediaCrypto> listener) |
void |
setOnKeyStatusChangeListener(ExoMediaDrm.OnKeyStatusChangeListener<? super FrameworkMediaCrypto> listener) |
void |
setPropertyByteArray(java.lang.String propertyName,
byte[] value) |
void |
setPropertyString(java.lang.String propertyName,
java.lang.String value) |
public static FrameworkMediaDrm newInstance(java.util.UUID uuid) throws UnsupportedDrmException
uuid
- The scheme uuid.UnsupportedDrmException
- If the DRM scheme is unsupported or cannot be instantiated.public void setOnEventListener(ExoMediaDrm.OnEventListener<? super FrameworkMediaCrypto> listener)
setOnEventListener
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.setOnEventListener(MediaDrm.OnEventListener)
public void setOnKeyStatusChangeListener(ExoMediaDrm.OnKeyStatusChangeListener<? super FrameworkMediaCrypto> listener)
setOnKeyStatusChangeListener
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.setOnKeyStatusChangeListener(MediaDrm.OnKeyStatusChangeListener, Handler)
public byte[] openSession() throws android.media.MediaDrmException
openSession
in interface ExoMediaDrm<FrameworkMediaCrypto>
android.media.MediaDrmException
MediaDrm.openSession()
public void closeSession(byte[] sessionId)
closeSession
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.closeSession(byte[])
public ExoMediaDrm.KeyRequest getKeyRequest(byte[] scope, @Nullable java.util.List<DrmInitData.SchemeData> schemeDatas, int keyType, @Nullable java.util.HashMap<java.lang.String,java.lang.String> optionalParameters) throws android.media.NotProvisionedException
ExoMediaDrm
getKeyRequest
in interface ExoMediaDrm<FrameworkMediaCrypto>
scope
- If keyType
is ExoMediaDrm.KEY_TYPE_STREAMING
or ExoMediaDrm.KEY_TYPE_OFFLINE
,
the session id 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.android.media.NotProvisionedException
MediaDrm.getKeyRequest(byte[], byte[], String, int, HashMap)
public byte[] provideKeyResponse(byte[] scope, byte[] response) throws android.media.NotProvisionedException, android.media.DeniedByServerException
provideKeyResponse
in interface ExoMediaDrm<FrameworkMediaCrypto>
android.media.NotProvisionedException
android.media.DeniedByServerException
MediaDrm.provideKeyResponse(byte[], byte[])
public ExoMediaDrm.ProvisionRequest getProvisionRequest()
getProvisionRequest
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.getProvisionRequest()
public void provideProvisionResponse(byte[] response) throws android.media.DeniedByServerException
provideProvisionResponse
in interface ExoMediaDrm<FrameworkMediaCrypto>
android.media.DeniedByServerException
MediaDrm.provideProvisionResponse(byte[])
public java.util.Map<java.lang.String,java.lang.String> queryKeyStatus(byte[] sessionId)
queryKeyStatus
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.queryKeyStatus(byte[])
public void release()
release
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.release()
public void restoreKeys(byte[] sessionId, byte[] keySetId)
restoreKeys
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.restoreKeys(byte[], byte[])
public java.lang.String getPropertyString(java.lang.String propertyName)
getPropertyString
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.getPropertyString(String)
public byte[] getPropertyByteArray(java.lang.String propertyName)
getPropertyByteArray
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.getPropertyByteArray(String)
public void setPropertyString(java.lang.String propertyName, java.lang.String value)
setPropertyString
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.setPropertyString(String, String)
public void setPropertyByteArray(java.lang.String propertyName, byte[] value)
setPropertyByteArray
in interface ExoMediaDrm<FrameworkMediaCrypto>
MediaDrm.setPropertyByteArray(String, byte[])
public FrameworkMediaCrypto createMediaCrypto(byte[] initData) throws android.media.MediaCryptoException
createMediaCrypto
in interface ExoMediaDrm<FrameworkMediaCrypto>
initData
- Opaque initialization data specific to the crypto scheme.ExoMediaCrypto
, using opaque crypto scheme specific data.android.media.MediaCryptoException
- If the instance can't be created.MediaCrypto.MediaCrypto(UUID, byte[])