MediaDrm Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |
| 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 |
| 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 |
| JniPeerMembers |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| LogMessages |
Devuelve los datos recientes |
| MaxHdcpLevel |
Devuelve el nivel máximo admitido de HDCP. |
| MaxSecurityLevel |
Devuelve un valor que se puede pasar como parámetro para |
| 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 |
| 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 . |
| ClearOnExpirationUpdateListener() |
Borre el . |
| ClearOnKeyStatusChangeListener() |
Borre el . |
| ClearOnSessionLostStateListener() |
Borre el . |
| 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 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| 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 |
| Equals(Object) |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| IJavaPeerable.Finalized() |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| IJavaPeerable.JniObjectReferenceControlBlock |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
| IJavaPeerable.UnregisterFromRuntime() |
MediaDrm se puede usar para obtener claves para descifrar secuencias multimedia protegidas, junto con |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| 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 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |