Lenguaje

MediaDrm Clase

Definición

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

[Android.Runtime.Register("android/media/MediaDrm", DoNotGenerateAcw=true)]
public sealed class MediaDrm : Java.Lang.Object, IDisposable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("android/media/MediaDrm", DoNotGenerateAcw=true)>]
type MediaDrm = class
    inherit Object
    interface IAutoCloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Herencia
Atributos
Implementaciones

Comentarios

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto. Las API de MediaDrm están diseñadas para admitir iso/IEC 23001-7: estándar de cifrado común, pero también se pueden usar para implementar otros esquemas de cifrado.

El contenido cifrado se prepara mediante un servidor de cifrado y se almacena en una biblioteca de contenido. El contenido cifrado se transmite o descarga de la biblioteca de contenido a los dispositivos cliente a través de servidores de contenido. Las licencias para ver el contenido se obtienen de un servidor de licencias.

<img src=".. /.. /.. /images/mediadrm_overview.png" alt="MediaDrm Overview diagram" border="0" />

Las claves se solicitan desde el servidor de licencias mediante una solicitud de clave. La respuesta clave se entrega a la aplicación cliente, que proporciona la respuesta a la API MediaDrm.

Es posible que se requiera un servidor de aprovisionamiento para distribuir las credenciales únicas del dispositivo a los dispositivos.

La aplicación de requisitos relacionados con el número de dispositivos que pueden reproducir contenido simultáneamente se puede realizar a través de la renovación de claves o mediante los métodos de detención seguros.

En el diagrama de secuencia siguiente se muestran las interacciones entre los objetos implicados al reproducir contenido cifrado:

<img src=".. /.. /.. /images/mediadrm_decryption_sequence.png" alt="MediaDrm Overview diagram" border="0" />

La aplicación construye primero android.media.MediaExtractor objetos y android.media.MediaCodec . Obtiene acceso al UUID de identificación de esquema DRM, normalmente a partir de metadatos del contenido, y usa este UUID para construir una instancia de un objeto MediaDrm que sea capaz de admitir el esquema DRM requerido por el contenido. A los esquemas criptográficos se les asignan 16 BYTES UUID. El método #isCryptoSchemeSupported se puede usar para consultar si se admite un esquema determinado en el dispositivo.

La aplicación llama #openSession a para generar un sessionId que identificará de forma única la sesión en interacciones posteriores. A continuación, la aplicación usa el objeto MediaDrm para obtener un mensaje de solicitud de clave y enviarlo al servidor de licencias y, a continuación, proporcionar la respuesta del servidor al objeto MediaDrm.

Una vez que la aplicación tiene un sessionId, puede construir un objeto MediaCrypto a partir del UUID y sessionId. El objeto MediaCrypto se registra con MediaCodec en el MediaCodec#configure método para permitir que el códec descifre contenido.

Cuando la aplicación ha construido android.media.MediaExtractory android.media.MediaCodecandroid.media.MediaCrypto objetos, continúa con la extracción de muestras del extractor y las pone en cola en el descodificador. Para el contenido cifrado, las muestras devueltas del extractor permanecen cifradas, solo se descifran cuando las muestras se entregan al descodificador.

Los métodos MediaDrm inician android.media.MediaDrm.MediaDrmStateException cuando se llama a un método en un objeto MediaDrm que ha tenido un error irrecuperable en el complemento DRM o el hardware de seguridad. android.media.MediaDrm.MediaDrmStateException java.lang.IllegalStateException se extiende con la adición de una cadena de información de diagnóstico legible para desarrolladores asociada a la excepción.

En caso de que un proceso de mediaserver se bloquee o reinicie mientras un objeto MediaDrm está activo, los métodos MediaDrm pueden producir android.media.MediaDrmResetException. Para recuperarla, la aplicación debe liberar el objeto MediaDrm y, a continuación, crear e inicializar uno nuevo.

Como android.media.MediaDrmResetException y android.media.MediaDrm.MediaDrmStateException ambos extienden java.lang.IllegalStateException, deben estar en un bloque catch() anterior que java.lang.IllegalStateException si se controla por separado.

"Devoluciones de llamada"><h3>Devoluciones de llamada</h3>

Las aplicaciones deben registrarse para eventos informativos con el fin de informarse de las actualizaciones de estado de clave durante la reproducción o el streaming. El registro de estos eventos se realiza a través de una llamada a #setOnEventListener. Para recibir la devolución de llamada correspondiente asociada a este agente de escucha, las aplicaciones deben crear objetos MediaDrm en un subproceso con su propio looper en ejecución (el subproceso principal de la interfaz de usuario tiene un bucle en ejecución de forma predeterminada).

Documentación de Java para android.media.MediaDrm.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Constructores

Nombre Description
MediaDrm(UUID)

Creación de una instancia de un objeto MediaDrm

Campos

Nombre Description
EventKeyExpired

Este tipo de evento indica que la duración del uso con licencia para las claves de una sesión ha expirado.

EventKeyRequired
Obsoletos.

Este tipo de evento indica que la aplicación debe solicitar claves desde un servidor de licencias.

EventProvisionRequired
Obsoletos.

Este tipo de evento indica que la aplicación debe solicitar un certificado desde el servidor de aprovisionamiento.

EventSessionReclaimed
Obsoletos.

Este evento indica que el administrador de recursos ha reclamado una sesión abierta por la aplicación.

EventVendorDefined
Obsoletos.

Este evento puede indicar alguna condición específica definida por el proveedor, consulte la documentación del proveedor drm para obtener más información.

HdcpLevelUnknown
Obsoletos.

El complemento DRM no informaba de un nivel de HDCP o se produjo un error al acceder a él.

HdcpNoDigitalOutput
Obsoletos.

Sin salida digital, implícitamente segura

HdcpNone
Obsoletos.

HDCP no se admite en este dispositivo, el contenido no está protegido

HdcpV1
Obsoletos.

HDCP versión 1.

HdcpV2
Obsoletos.

HDCP versión 2.

HdcpV21
Obsoletos.

HDCP versión 2.

HdcpV22
Obsoletos.

HDCP versión 2.

HdcpV23
Obsoletos.

HDCP versión 2.

KeyTypeOffline
Obsoletos.

Este tipo de solicitud de clave especifica que las claves serán para su uso sin conexión, se guardarán en el dispositivo para su uso cuando el dispositivo no esté conectado a una red.

KeyTypeRelease
Obsoletos.

Este tipo de solicitud de clave especifica que se deben liberar las claves sin conexión guardadas anteriormente.

KeyTypeStreaming
Obsoletos.

Esta especie de tipo de solicitud de clave que las claves serán para uso en línea, no se guardarán en el dispositivo para su uso posterior cuando el dispositivo no esté conectado a una red.

OfflineLicenseStateReleased
Obsoletos.

Se libera la licencia sin conexión, las claves se han marcado para su lanzamiento con #getKeyRequest KEY_TYPE_RELEASE, pero no se ha recibido la respuesta de la clave.

OfflineLicenseStateUnknown
Obsoletos.

El estado de la licencia sin conexión es desconocido, se produjo un error al intentar acceder a él.

OfflineLicenseStateUsable
Obsoletos.

Se puede usar la licencia sin conexión, las claves se pueden usar para el descifrado.

PropertyAlgorithms

Nombre de propiedad de cadena: una lista separada por comas de algoritmos de cifrado y mac compatibles con CryptoSession.

PropertyDescription

Nombre de propiedad de cadena: describe el complemento DRM.

PropertyDeviceUniqueId

Nombre de propiedad de matriz de bytes: el identificador único del dispositivo se establece durante el aprovisionamiento de dispositivos y proporciona un medio para identificar de forma única cada dispositivo.

PropertyVendor

Nombre de propiedad de cadena: identifica el creador del complemento DRM.

PropertyVersion

Nombre de propiedad de cadena: identifica la versión del complemento DRM.

SecurityLevelHwSecureAll
Obsoletos.

La administración de claves DRM, las operaciones criptográficas, la descodificación del contenido y todo el control de los medios (comprimidos y sin comprimir) se controla dentro de un entorno de ejecución de confianza respaldado por hardware.

SecurityLevelHwSecureCrypto
Obsoletos.

La administración de claves DRM y las operaciones criptográficas se realizan dentro de un entorno de ejecución de confianza respaldado por hardware.

SecurityLevelHwSecureDecode
Obsoletos.

La administración de claves DRM, las operaciones criptográficas y la descodificación del contenido se realizan dentro de un entorno de ejecución de confianza respaldado por hardware.

SecurityLevelSwSecureCrypto
Obsoletos.

La administración de claves DRM usa la criptografía de caja blanca basada en software.

SecurityLevelSwSecureDecode
Obsoletos.

La administración y descodificación de claves DRM usan criptografía de caja blanca basada en software.

SecurityLevelUnknown
Obsoletos.

El complemento DRM no informaba de un nivel de seguridad o se produjo un error al acceder a él.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
ConnectedHdcpLevel

Devuelve el nivel de HDCP negociado con receptores de bajada al que está conectado el dispositivo.

Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad.

(Heredado de Object)
JniManagedPeerState

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
JniPeerMembers

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

LogMessages

Devuelve los datos recientes LogMessage LogMessages asociados a esta MediaDrm instancia.

MaxHdcpLevel

Devuelve el nivel máximo admitido de HDCP.

MaxSecurityLevel

Devuelve un valor que se puede pasar como parámetro para #openSession(int) solicitar que la sesión se abra en el nivel de seguridad máximo del dispositivo.

MaxSessionCount

Devuelve el número máximo de sesiones de MediaDrm que se pueden abrir simultaneosly entre todas las instancias de MediaDrm para el esquema DRM activo.

Metrics

Devuelve datos de métricas sobre la instancia actual de MediaDrm.

OfflineLicenseKeySetIds

Las claves de una licencia sin conexión permiten reproducir contenido protegido incluso si el dispositivo no está conectado a una red.

OpenSessionCount

Devuelve el número de sesiones de MediaDrm que se abren actualmente simultáneamente entre todas las instancias de MediaDrm para el esquema DRM activo.

PeerReference

Obtiene la referencia de objeto JNI para este Java del mismo nivel.

(Heredado de Object)
SecureStopIds

Devuelve una lista de todos los identificadores de detención seguros actualmente en memoria persistente.

SecureStops

Las paradas seguras son una manera de aplicar límites en el número de secuencias simultáneas por suscriptor en todos los dispositivos.

SupportedCryptoSchemes

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)
ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

(Heredado de Object)

Métodos

Nombre Description
ClearOnEventListener()

Borre el .OnEventListener

ClearOnExpirationUpdateListener()

Borre el .OnExpirationUpdateListener

ClearOnKeyStatusChangeListener()

Borre el .OnKeyStatusChangeListener

ClearOnSessionLostStateListener()

Borre el .OnSessionLostStateListener

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Close()

Libera los recursos asociados a la sesión actual de MediaDrm.

CloseSession(Byte[])

Cierre una sesión en el objeto MediaDrm que se abrió anteriormente con #openSession.

Construct(JniObjectReference, JniObjectReferenceOptions)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
Dispose()

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
Dispose(Boolean)

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
DisposeUnlessReferenced()

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
Equals(Object)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetCryptoSession(Byte[], String, String)

Obtenga un objeto CryptoSession que se puede usar para cifrar, descifrar, firmar y comprobar mensajes o datos mediante las claves de sesión establecidas para la sesión mediante métodos #getKeyRequest y #provideKeyResponse mediante un servidor de claves de sesión.

GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
GetKeyRequest(Byte[], Byte[], String, Int32, IDictionary<String,String>)

Se produce un intercambio de solicitud o respuesta de claves entre la aplicación y un servidor de licencias para obtener o liberar claves usadas para descifrar el contenido cifrado.

GetOfflineLicenseState(Byte[])

Solicite el estado de una licencia sin conexión.

GetPlaybackComponent(Byte[])

Obtenga un PlaybackComponent asociado a una sesión DRM.

GetPropertyByteArray(String)

Lea un valor de propiedad de matriz de bytes MediaDrm, dada la cadena de nombre de propiedad.

GetPropertyString(String)

Lea un valor de propiedad MediaDrm String, dada la cadena de nombre de propiedad.

GetProvisionRequest()

Se produce un intercambio de solicitudes y respuestas de aprovisionamiento entre la aplicación y un servidor de aprovisionamiento para recuperar un certificado de dispositivo.

GetSecureStop(Byte[])

Acceda a una parada segura específica según su identificador de detención seguro.

GetSecurityLevel(Byte[])

Devuelve el nivel de seguridad actual de una sesión.

IsCryptoSchemeSupported(UUID, String, SecurityLevel)

Consulte si se admite el esquema especificado por su UUID en este dispositivo y si el complemento DRM puede controlar el formato de contenedor multimedia especificado por mimeType en el nivel de seguridad solicitado.

IsCryptoSchemeSupported(UUID, String)

Consulte si el esquema especificado por su UUID es compatible con este dispositivo y si el complemento DRM puede controlar el formato del contenedor multimedia especificado por mimeType.

IsCryptoSchemeSupported(UUID)

Consulte si el esquema especificado identificado por su UUID se admite en este dispositivo.

JavaFinalize()
Obsoletos.

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
OpenSession()

Abra una nueva sesión con el objeto MediaDrm.

OpenSession(Int32)

Abra una nueva sesión en un nivel de seguridad solicitado.

ProvideKeyResponse(Byte[], Byte[])

La aplicación recibe una respuesta clave del servidor de licencias y, a continuación, se proporciona a la instancia de MediaDrm mediante provideKeyResponse.

ProvideProvisionResponse(Byte[])

Una vez recibida una respuesta de aprovisionamiento por la aplicación, se proporciona a la instancia de MediaDrm mediante este método.

QueryKeyStatus(Byte[])

Solicite una descripción informativa del estado de la clave para la sesión.

Release()

Este miembro está en desuso.

ReleaseAllSecureStops()

Quite todas las paradas seguras sin necesidad de un mensaje de liberación de detención seguro del servidor de licencias.

ReleaseSecureStops(Byte[])

Procese el mensaje de respuesta del servidor de detención segura ssRelease.

RemoveAllSecureStops()

Quite todas las paradas seguras sin necesidad de un mensaje de liberación de detención seguro del servidor de licencias.

RemoveKeys(Byte[])

Quite las claves actuales de una sesión.

RemoveOfflineLicense(Byte[])

Normalmente, las licencias sin conexión se liberan mediante un intercambio de solicitud o respuesta de clave mediante #getKeyRequest donde se KEY_TYPE_RELEASE el tipo de clave, seguido de #provideKeyResponse.

RemoveSecureStop(Byte[])

Quite una parada segura específica sin necesidad de un mensaje de liberación de detención seguro del servidor de licencias.

RequiresSecureDecoder(String, Int32)

Consulta si el esquema criptográfico requiere el uso de un descodificador seguro para descodificar datos del tipo mime determinado en el nivel de seguridad especificado.

RequiresSecureDecoder(String)

Consulta si el esquema criptográfico requiere el uso de un descodificador seguro para descodificar datos del tipo mime determinado en el nivel de seguridad predeterminado.

RestoreKeys(Byte[], Byte[])

Restaure las claves sin conexión persistentes en una nueva sesión.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetOnEventListener(IExecutor, MediaDrm+IOnEventListener)

Registrar una devolución de llamada que se va a invocar cuando se produce un evento

SetOnEventListener(MediaDrm+IOnEventListener, Handler)

Registrar una devolución de llamada que se va a invocar cuando se produce un evento

SetOnEventListener(MediaDrm+IOnEventListener)

Registrar una devolución de llamada que se va a invocar cuando se produce un evento

SetOnExpirationUpdateListener(IExecutor, MediaDrm+IOnExpirationUpdateListener)

Registre una devolución de llamada que se invocará cuando se produzca una actualización de expiración de sesión.

SetOnExpirationUpdateListener(MediaDrm+IOnExpirationUpdateListener, Handler)

Registre una devolución de llamada que se invocará cuando se produzca una actualización de expiración de sesión.

SetOnKeyStatusChangeListener(IExecutor, MediaDrm+IOnKeyStatusChangeListener)

Registre una devolución de llamada que se invocará cuando cambie el estado de las claves en una sesión, e.

SetOnKeyStatusChangeListener(MediaDrm+IOnKeyStatusChangeListener, Handler)

Registre una devolución de llamada que se invocará cuando cambie el estado de las claves en una sesión, e.

SetOnSessionLostStateListener(IExecutor, MediaDrm+IOnSessionLostStateListener)

Registre una devolución de llamada que se invocará cuando se haya perdido el estado de sesión.

SetOnSessionLostStateListener(MediaDrm+IOnSessionLostStateListener, Handler)

Registre una devolución de llamada que se invocará cuando se haya perdido el estado de sesión.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
SetPropertyByteArray(String, Byte[])

Establezca un valor de propiedad de matriz de bytes MediaDrm, dada la cadena de nombre de propiedad y el nuevo valor de la propiedad.

SetPropertyString(String, String)

Establezca un valor de propiedad MediaDrm String, dada la cadena de nombre de propiedad y el nuevo valor de la propiedad.

ToArray<T>()

Crea una matriz administrada a partir de este contenedor de matriz Java.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
UnregisterFromRuntime()

Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><>

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Eventos

Nombre Description
MediaDrmEvent

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

Implementaciones de interfaz explícitas

Nombre Description
IJavaPeerable.Disposed()

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
IJavaPeerable.Finalized()

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

(Heredado de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con android.media.MediaCrypto.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a