Package com.google.android.exoplayer2.drm

## Class DummyExoMediaDrm

- java.lang.Object
- - com.google.android.exoplayer2.drm.DummyExoMediaDrm

- All Implemented Interfaces:
    `ExoMediaDrm`

      public final class DummyExoMediaDrm
      extends Object
      implements ExoMediaDrm

  An `ExoMediaDrm` that does not support any protection schemes.

- - ### 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 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`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DummyExoMediaDrm()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `acquire()` | Increments the reference count.
    `void` | `closeSession​(byte[] sessionId)` | Closes a DRM session.
    `ExoMediaCrypto` | `createMediaCrypto​(byte[] sessionId)` | Creates an `ExoMediaCrypto` for a given session.
    `Class<UnsupportedMediaCrypto>` | `getExoMediaCryptoType()` | Returns the `ExoMediaCrypto` type created by `ExoMediaDrm.createMediaCrypto(byte[])`.
    `static DummyExoMediaDrm` | `getInstance()` | Returns a new instance.
    `ExoMediaDrm.KeyRequest` | `getKeyRequest​(byte[] scope, List<DrmInitData.SchemeData> schemeDatas, int keyType, HashMap<String,​String> optionalParameters)` | Generates a key request.
    `PersistableBundle` | `getMetrics()` | Returns metrics data for this ExoMediaDrm instance, or `null` if metrics are unavailable.
    `byte[]` | `getPropertyByteArray​(String propertyName)` | Returns the value of a byte array property.
    `String` | `getPropertyString​(String propertyName)` | Returns the value of a string property.
    `ExoMediaDrm.ProvisionRequest` | `getProvisionRequest()` | Generates a provisioning request.
    `byte[]` | `openSession()` | Opens a new DRM session.
    `byte[]` | `provideKeyResponse​(byte[] scope, byte[] response)` | 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)` | Provides a provisioning response for the last request to be generated using `ExoMediaDrm.getProvisionRequest()`.
    `Map<String,​String>` | `queryKeyStatus​(byte[] sessionId)` | Returns the key status for a given session, as {name, value} pairs.
    `void` | `release()` | Decrements the reference count.
    `void` | `restoreKeys​(byte[] sessionId, byte[] keySetId)` | Restores persisted offline keys into a session.
    `void` | `setOnEventListener​(ExoMediaDrm.OnEventListener listener)` | Sets the listener for DRM events.
    `void` | `setOnExpirationUpdateListener​(ExoMediaDrm.OnExpirationUpdateListener listener)` | Sets the listener for session expiration events.
    `void` | `setOnKeyStatusChangeListener​(ExoMediaDrm.OnKeyStatusChangeListener listener)` | Sets the listener for key status change events.
    `void` | `setPropertyByteArray​(String propertyName, byte[] value)` | Sets the value of a byte array property.
    `void` | `setPropertyString​(String propertyName, String value)` | 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`

- - ### Constructor Detail

    - #### DummyExoMediaDrm

          public DummyExoMediaDrm()

  - ### Method Detail

    - #### getInstance

          public static DummyExoMediaDrm getInstance()

      Returns a new instance.

    - #### setOnEventListener

          public void setOnEventListener​(@Nullable
                                         ExoMediaDrm.OnEventListener listener)

      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 `ExoMediaDrm`
      Parameters:
        `listener` - The listener to receive events, or `null` to stop receiving events.
      See Also:
        `MediaDrm.setOnEventListener(MediaDrm.OnEventListener)`

    - #### setOnKeyStatusChangeListener

          public void setOnKeyStatusChangeListener​(@Nullable
                                                   ExoMediaDrm.OnKeyStatusChangeListener listener)

      Description copied from interface: `ExoMediaDrm`
      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 `ExoMediaDrm`
      Parameters:
        `listener` - The listener to receive events, or `null` to stop receiving events.
      See Also:
        `MediaDrm.setOnKeyStatusChangeListener(MediaDrm.OnKeyStatusChangeListener, Handler)`

    - #### setOnExpirationUpdateListener

          public void setOnExpirationUpdateListener​(@Nullable
                                                    ExoMediaDrm.OnExpirationUpdateListener listener)

      Description copied from interface: `ExoMediaDrm`
      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 `ExoMediaDrm`
      Parameters:
        `listener` - The listener to receive events, or `null` to stop receiving events.
      See Also:
        `MediaDrm.setOnExpirationUpdateListener(MediaDrm.OnExpirationUpdateListener, Handler)`

    - #### openSession

          public byte[] openSession()
                             throws MediaDrmException

      Description copied from interface: `ExoMediaDrm`
      Opens a new DRM session. A session ID is returned.
      Specified by:
        `openSession` in interface `ExoMediaDrm`
      Returns:
        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)

      Description copied from interface: `ExoMediaDrm`
      Closes a DRM session.
      Specified by:
        `closeSession` in interface `ExoMediaDrm`
      Parameters:
        `sessionId` - The ID of the session to close.

    - #### getKeyRequest

          public ExoMediaDrm.KeyRequest getKeyRequest​(byte[] scope,
                                                      @Nullable
                                                      List<DrmInitData.SchemeData> schemeDatas,
                                                      int keyType,
                                                      @Nullable
                                                      HashMap<String,​String> optionalParameters)

      Description copied from interface: `ExoMediaDrm`
      Generates a key request.
      Specified by:
        `getKeyRequest` in interface `ExoMediaDrm`
      Parameters:
        `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.
      See Also:
        `MediaDrm.getKeyRequest(byte[], byte[], String, int, HashMap)`

    - #### provideKeyResponse

          @Nullable
          public byte[] provideKeyResponse​(byte[] scope,
                                           byte[] response)

      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 `ExoMediaDrm`
      Parameters:
        `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.

    - #### getProvisionRequest

          public ExoMediaDrm.ProvisionRequest getProvisionRequest()

      Description copied from interface: `ExoMediaDrm`
      Generates a provisioning request.
      Specified by:
        `getProvisionRequest` in interface `ExoMediaDrm`
      Returns:
        The generated provisioning request.

    - #### provideProvisionResponse

          public void provideProvisionResponse​(byte[] response)

      Description copied from interface: `ExoMediaDrm`
      Provides a provisioning response for the last request to be generated using `ExoMediaDrm.getProvisionRequest()`.
      Specified by:
        `provideProvisionResponse` in interface `ExoMediaDrm`
      Parameters:
        `response` - The response data from the server.

    - #### queryKeyStatus

          public Map<String,​String> queryKeyStatus​(byte[] sessionId)

      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 `ExoMediaDrm`
      Parameters:
        `sessionId` - The ID of the session being queried.
      Returns:
        The key status for the session.

    - #### acquire

          public void acquire()

      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()

      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)

      Description copied from interface: `ExoMediaDrm`
      Restores persisted offline keys into a session.
      Specified by:
        `restoreKeys` in interface `ExoMediaDrm`
      Parameters:
        `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 getMetrics()

      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 getPropertyString​(String propertyName)

      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 `ExoMediaDrm`
      Parameters:
        `propertyName` - The property name.
      Returns:
        The property value.

    - #### getPropertyByteArray

          public byte[] getPropertyByteArray​(String propertyName)

      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 `ExoMediaDrm`
      Parameters:
        `propertyName` - The property name.
      Returns:
        The property value.

    - #### setPropertyString

          public void setPropertyString​(String propertyName,
                                        String value)

      Description copied from interface: `ExoMediaDrm`
      Sets the value of a string property.
      Specified by:
        `setPropertyString` in interface `ExoMediaDrm`
      Parameters:
        `propertyName` - The property name.
        `value` - The value.

    - #### setPropertyByteArray

          public void setPropertyByteArray​(String propertyName,
                                           byte[] value)

      Description copied from interface: `ExoMediaDrm`
      Sets the value of a byte array property.
      Specified by:
        `setPropertyByteArray` in interface `ExoMediaDrm`
      Parameters:
        `propertyName` - The property name.
        `value` - The value.

    - #### createMediaCrypto

          public ExoMediaCrypto createMediaCrypto​(byte[] sessionId)

      Description copied from interface: `ExoMediaDrm`
      Creates an `ExoMediaCrypto` for a given session.
      Specified by:
        `createMediaCrypto` in interface `ExoMediaDrm`
      Parameters:
        `sessionId` - The ID of the session.
      Returns:
        An `ExoMediaCrypto` for the given session.

    - #### getExoMediaCryptoType

          public Class<UnsupportedMediaCrypto> getExoMediaCryptoType()

      Description copied from interface: `ExoMediaDrm`
      Returns the `ExoMediaCrypto` type created by `ExoMediaDrm.createMediaCrypto(byte[])`.
      Specified by:
        `getExoMediaCryptoType` in interface `ExoMediaDrm`