Idioma

MediaDrm Classe

Definição

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com 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
Herança
Atributos
Implementações

Comentários

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto. As APIs MediaDrm foram projetadas para dar suporte ao padrão ISO/IEC 23001-7: Common Encryption, mas também podem ser usadas para implementar outros esquemas de criptografia.

O conteúdo criptografado é preparado usando um servidor de criptografia e armazenado em uma biblioteca de conteúdo. O conteúdo criptografado é transmitido ou baixado da biblioteca de conteúdo para dispositivos cliente por meio de servidores de conteúdo. As licenças para exibir o conteúdo são obtidas de um Servidor de Licença.

<img src=".. /.. /.. /images/mediadrm_overview.png" alt="Diagrama de visão geral do MediaDrm" border="0" />

As chaves são solicitadas do servidor de licença usando uma solicitação de chave. A resposta de chave é entregue ao aplicativo cliente, que fornece a resposta à API MediaDrm.

Um servidor de provisionamento pode ser necessário para distribuir credenciais exclusivas do dispositivo para os dispositivos.

A imposição de requisitos relacionados ao número de dispositivos que podem reproduzir conteúdo simultaneamente pode ser executada por meio da renovação de chave ou usando os métodos de parada segura.

O diagrama de sequência a seguir mostra as interações entre os objetos envolvidos ao reproduzir conteúdo criptografado:

<img src=".. /.. /.. /images/mediadrm_decryption_sequence.png" alt="Diagrama de visão geral do MediaDrm" border="0" />

O aplicativo primeiro constrói android.media.MediaExtractor e android.media.MediaCodec objetos. Ele acessa a UUID que identifica o esquema DRM, normalmente de metadados no conteúdo, e usa essa UUID para construir uma instância de um objeto MediaDrm que é capaz de dar suporte ao esquema DRM exigido pelo conteúdo. Esquemas de criptografia são atribuídos a 16 UUIDs de bytes. O método #isCryptoSchemeSupported pode ser usado para consultar se um determinado esquema tem suporte no dispositivo.

O aplicativo chama #openSession para gerar uma sessionId que identificará exclusivamente a sessão nas interações subsequentes. Em seguida, o aplicativo usa o objeto MediaDrm para obter uma mensagem de solicitação de chave e enviá-la para o servidor de licença e, em seguida, fornecer a resposta do servidor ao objeto MediaDrm.

Depois que o aplicativo tiver uma sessionId, ele poderá construir um objeto MediaCrypto a partir da UUID e sessionId. O objeto MediaCrypto é registrado com o MediaCodec no MediaCodec#configure método para habilitar o codec a descriptografar o conteúdo.

Quando o aplicativo é construído android.media.MediaExtractore android.media.MediaCodecandroid.media.MediaCrypto os objetos, ele passa a efetuar pull de amostras do extrator e enfileira-los no decodificador. Para conteúdo criptografado, os exemplos retornados do extrator permanecem criptografados, eles só são descriptografados quando os exemplos são entregues ao decodificador.

Métodos MediaDrm são gerados android.media.MediaDrm.MediaDrmStateException quando um método é chamado em um objeto MediaDrm que teve uma falha irrecuperável no plug-in drm ou hardware de segurança. android.media.MediaDrm.MediaDrmStateException estende-se com a adição de uma cadeia de caracteres java.lang.IllegalStateException de informações de diagnóstico legíveis pelo desenvolvedor associada à exceção.

No caso de um processo mediaserver falhar ou reiniciar enquanto um objeto MediaDrm estiver ativo, os métodos MediaDrm podem gerar android.media.MediaDrmResetException. Para recuperar, o aplicativo deve liberar o objeto MediaDrm e, em seguida, criar e inicializar um novo.

Como android.media.MediaDrmResetException e android.media.MediaDrm.MediaDrmStateException ambos se estendem java.lang.IllegalStateException, eles devem estar em um bloco catch() anterior do que java.lang.IllegalStateException se tratado separadamente.

"Retornos de chamada"><h3>Retornos de< chamada/h3>

Os aplicativos devem se registrar para eventos informativos para serem informados das principais atualizações de estado durante a reprodução ou streaming. O registro desses eventos é feito por meio de uma chamada para #setOnEventListener. Para receber o respectivo retorno de chamada associado a esse ouvinte, os aplicativos são necessários para criar objetos MediaDrm em um thread com seu próprio Looper em execução (o thread de interface do usuário principal por padrão tem um Looper em execução).

Java documentação para android.media.MediaDrm.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Construtores

Nome Description
MediaDrm(UUID)

Criar uma instância de um objeto MediaDrm

Campos

Nome Description
EventKeyExpired

Esse tipo de evento indica que a duração de uso licenciado para chaves em uma sessão expirou.

EventKeyRequired
Obsoleto.

Esse tipo de evento indica que o aplicativo precisa solicitar chaves de um servidor de licença.

EventProvisionRequired
Obsoleto.

Esse tipo de evento indica que o aplicativo precisa solicitar um certificado do servidor de provisionamento.

EventSessionReclaimed
Obsoleto.

Esse evento indica que uma sessão aberta pelo aplicativo foi recuperada pelo gerenciador de recursos.

EventVendorDefined
Obsoleto.

Esse evento pode indicar alguma condição específica definida pelo fornecedor, consulte a documentação do provedor DRM para obter detalhes

HdcpLevelUnknown
Obsoleto.

O plug-in drm não relatou um nível HDCP ou ocorreu um erro ao acessá-lo

HdcpNoDigitalOutput
Obsoleto.

Sem saída digital, implicitamente segura

HdcpNone
Obsoleto.

Não há suporte para HDCP neste dispositivo, o conteúdo está desprotegido

HdcpV1
Obsoleto.

HDCP versão 1.

HdcpV2
Obsoleto.

HDCP versão 2.

HdcpV21
Obsoleto.

HDCP versão 2.

HdcpV22
Obsoleto.

HDCP versão 2.

HdcpV23
Obsoleto.

HDCP versão 2.

KeyTypeOffline
Obsoleto.

Esse tipo de solicitação de chave especifica que as chaves serão para uso offline, elas serão salvas no dispositivo para uso quando o dispositivo não estiver conectado a uma rede.

KeyTypeRelease
Obsoleto.

Esse tipo de solicitação de chave especifica que as chaves offline salvas anteriormente devem ser liberadas.

KeyTypeStreaming
Obsoleto.

Essa espécie de tipo de solicitação de chave que as chaves serão para uso online, elas não serão salvas no dispositivo para uso subsequente quando o dispositivo não estiver conectado a uma rede.

OfflineLicenseStateReleased
Obsoleto.

A licença offline foi liberada, as chaves foram marcadas para liberação usando #getKeyRequest KEY_TYPE_RELEASE mas a resposta de chave não foi recebida.

OfflineLicenseStateUnknown
Obsoleto.

O estado de licença offline é desconhecido, ocorreu um erro ao tentar acessá-lo.

OfflineLicenseStateUsable
Obsoleto.

A licença offline é utilizável, as chaves podem ser usadas para descriptografia.

PropertyAlgorithms

Nome da propriedade da cadeia de caracteres: uma lista separada por vírgulas de algoritmos de criptografia e mac com suporte pelo CryptoSession.

PropertyDescription

Nome da propriedade string: descreve o plug-in DRM

PropertyDeviceUniqueId

Nome da propriedade da matriz de bytes: o identificador exclusivo do dispositivo é estabelecido durante o provisionamento de dispositivo e fornece um meio de identificar exclusivamente cada dispositivo.

PropertyVendor

Nome da propriedade string: identifica o criador do plug-in DRM

PropertyVersion

Nome da propriedade String: identifica a versão do plug-in DRM

SecurityLevelHwSecureAll
Obsoleto.

Gerenciamento de chaves DRM, operações de criptografia, decodificação de conteúdo e todo o tratamento da mídia (compactada e descompactada) é tratado em um ambiente de execução confiável com suporte de hardware.

SecurityLevelHwSecureCrypto
Obsoleto.

O gerenciamento de chaves DRM e as operações de criptografia são executados em um ambiente de execução confiável com suporte de hardware.

SecurityLevelHwSecureDecode
Obsoleto.

O gerenciamento de chaves drm, as operações de criptografia e a decodificação de conteúdo são executados em um ambiente de execução confiável com suporte de hardware.

SecurityLevelSwSecureCrypto
Obsoleto.

O gerenciamento de chaves DRM usa a criptografia de caixa de caracteres baseada em software.

SecurityLevelSwSecureDecode
Obsoleto.

O gerenciamento e a decodificação de chaves DRM usam a criptografia de caixa branca baseada em software.

SecurityLevelUnknown
Obsoleto.

O plug-in drm não relatou um nível de segurança ou ocorreu um erro ao acessá-lo

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
ConnectedHdcpLevel

Retorne o nível de HDCP negociado com receptores downstream aos quais o dispositivo está conectado.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
JniPeerMembers

Obtém os metadados JNI usados para acessar membros dessa associação Java.

LogMessages

Retorna recentemente LogMessage LogMessages associado a essa MediaDrm instância.

MaxHdcpLevel

Retorne o nível máximo de HDCP com suporte.

MaxSecurityLevel

Retorna um valor que pode ser passado como um parâmetro para #openSession(int) solicitar que a sessão seja aberta no nível máximo de segurança do dispositivo.

MaxSessionCount

Retorne o número máximo de sessões MediaDrm que podem ser abertas simultaneamente entre todas as instâncias do MediaDrm para o esquema drm ativo.

Metrics

Retornar dados de métricas sobre a instância atual do MediaDrm.

OfflineLicenseKeySetIds

As chaves em uma licença offline permitem que o conteúdo protegido seja reproduzido mesmo se o dispositivo não estiver conectado a uma rede.

OpenSessionCount

Retorne o número de sessões MediaDrm que estão abertas simultaneamente entre todas as instâncias do MediaDrm para o esquema drm ativo.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
SecureStopIds

Retorne uma lista de todas as IDs de parada seguras atualmente na memória persistente.

SecureStops

As paradas seguras são uma maneira de impor limites ao número de fluxos simultâneos por assinante entre dispositivos.

SupportedCryptoSchemes

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

ThresholdClass

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

(Herdado de Object)
ThresholdType

Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código.

(Herdado de Object)

Métodos

Nome Description
ClearOnEventListener()

Desmarque o OnEventListener.

ClearOnExpirationUpdateListener()

Desmarque o OnExpirationUpdateListener.

ClearOnKeyStatusChangeListener()

Desmarque o OnKeyStatusChangeListener.

ClearOnSessionLostStateListener()

Desmarque o OnSessionLostStateListener.

Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
Close()

Libera recursos associados à sessão atual do MediaDrm.

CloseSession(Byte[])

Feche uma sessão no objeto MediaDrm que foi aberta anteriormente com #openSession.

Construct(JniObjectReference, JniObjectReferenceOptions)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
Equals(Object)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

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

Obtenha um objeto CryptoSession que pode ser usado para criptografar, descriptografar, assinar e verificar mensagens ou dados usando as chaves de sessão estabelecidas para a sessão usando métodos #getKeyRequest e #provideKeyResponse usando um servidor de chave de sessão.

GetHashCode()

Retorna um valor de código hash para o objeto.

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

Uma troca de solicitação/resposta chave ocorre entre o aplicativo e um servidor de licença para obter ou liberar chaves usadas para descriptografar o conteúdo criptografado.

GetOfflineLicenseState(Byte[])

Solicite o estado de uma licença offline.

GetPlaybackComponent(Byte[])

Obtenha uma PlaybackComponent sessão de DRM associada.

GetPropertyByteArray(String)

Leia um valor da propriedade de matriz de bytes MediaDrm, considerando a cadeia de caracteres de nome da propriedade.

GetPropertyString(String)

Leia um valor da propriedade MediaDrm String, considerando a cadeia de caracteres de nome da propriedade.

GetProvisionRequest()

Uma troca de solicitação/resposta de provisionamento ocorre entre o aplicativo e um servidor de provisionamento para recuperar um certificado do dispositivo.

GetSecureStop(Byte[])

Acesse uma parada segura específica, considerando sua ID de parada segura.

GetSecurityLevel(Byte[])

Retorne o nível de segurança atual de uma sessão.

IsCryptoSchemeSupported(UUID, String, SecurityLevel)

Consulte se o esquema determinado identificado por sua UUID tem suporte neste dispositivo e se o plug-in drm é capaz de lidar com o formato de contêiner de mídia especificado pelo mimeType no nível de segurança solicitado.

IsCryptoSchemeSupported(UUID, String)

Consulte se o esquema determinado identificado por sua UUID tem suporte neste dispositivo e se o plug-in DRM é capaz de lidar com o formato de contêiner de mídia especificado pelo mimeType.

IsCryptoSchemeSupported(UUID)

Consulte se o esquema determinado identificado por sua UUID tem suporte neste dispositivo.

JavaFinalize()
Obsoleto.

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
OpenSession()

Abra uma nova sessão com o objeto MediaDrm.

OpenSession(Int32)

Abra uma nova sessão em um nível de segurança solicitado.

ProvideKeyResponse(Byte[], Byte[])

Uma resposta de chave é recebida do servidor de licença pelo aplicativo e, em seguida, é fornecida à instância do MediaDrm usando provideKeyResponse.

ProvideProvisionResponse(Byte[])

Depois que uma resposta de provisionamento é recebida pelo aplicativo, ela é fornecida à instância do MediaDrm usando esse método.

QueryKeyStatus(Byte[])

Solicite uma descrição informativa do status da chave para a sessão.

Release()

Este membro foi preterido.

ReleaseAllSecureStops()

Remova todas as paradas seguras sem exigir uma mensagem de liberação de parada segura do servidor de licença.

ReleaseSecureStops(Byte[])

Processe a mensagem de resposta do servidor de parada segura ssRelease.

RemoveAllSecureStops()

Remova todas as paradas seguras sem exigir uma mensagem de liberação de parada segura do servidor de licença.

RemoveKeys(Byte[])

Remova as chaves atuais de uma sessão.

RemoveOfflineLicense(Byte[])

Normalmente, as licenças offline são liberadas usando uma troca de solicitação/resposta de chave usando #getKeyRequest onde o tipo de chave é KEY_TYPE_RELEASE, seguido por #provideKeyResponse.

RemoveSecureStop(Byte[])

Remova uma parada segura específica sem exigir uma mensagem de liberação de parada segura do servidor de licença.

RequiresSecureDecoder(String, Int32)

Consulte se o esquema de criptografia requer o uso de um decodificador seguro para decodificar dados do tipo mime fornecido no nível de segurança fornecido.

RequiresSecureDecoder(String)

Consulte se o esquema de criptografia requer o uso de um decodificador seguro para decodificar dados do tipo mime fornecido no nível de segurança padrão.

RestoreKeys(Byte[], Byte[])

Restaurar as chaves offline persistentes em uma nova sessão.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

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

Registrar um retorno de chamada a ser invocado quando ocorrer um evento

SetOnEventListener(MediaDrm+IOnEventListener, Handler)

Registrar um retorno de chamada a ser invocado quando ocorrer um evento

SetOnEventListener(MediaDrm+IOnEventListener)

Registrar um retorno de chamada a ser invocado quando ocorrer um evento

SetOnExpirationUpdateListener(IExecutor, MediaDrm+IOnExpirationUpdateListener)

Registre um retorno de chamada a ser invocado quando ocorrer uma atualização de expiração de sessão.

SetOnExpirationUpdateListener(MediaDrm+IOnExpirationUpdateListener, Handler)

Registre um retorno de chamada a ser invocado quando ocorrer uma atualização de expiração de sessão.

SetOnKeyStatusChangeListener(IExecutor, MediaDrm+IOnKeyStatusChangeListener)

Registre um retorno de chamada a ser invocado quando o estado das chaves em uma sessão for alterado, e.

SetOnKeyStatusChangeListener(MediaDrm+IOnKeyStatusChangeListener, Handler)

Registre um retorno de chamada a ser invocado quando o estado das chaves em uma sessão for alterado, e.

SetOnSessionLostStateListener(IExecutor, MediaDrm+IOnSessionLostStateListener)

Registre um retorno de chamada a ser invocado quando o estado da sessão tiver sido perdido.

SetOnSessionLostStateListener(MediaDrm+IOnSessionLostStateListener, Handler)

Registre um retorno de chamada a ser invocado quando o estado da sessão tiver sido perdido.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

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

Defina um valor de propriedade de matriz de bytes MediaDrm, considerando a cadeia de caracteres de nome da propriedade e o novo valor da propriedade.

SetPropertyString(String, String)

Defina um valor da propriedade MediaDrm String, considerando a cadeia de caracteres de nome da propriedade e o novo valor da propriedade.

ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Eventos

Nome Description
MediaDrmEvent

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

(Herdado de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Remove essa instância da pesquisa de objeto Java do runtime.

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com android.media.MediaCrypto.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a