MediaDrm Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
| 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 |
| 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 |
| JniPeerMembers |
Obtém os metadados JNI usados para acessar membros dessa associação Java. |
| LogMessages |
Retorna recentemente |
| MaxHdcpLevel |
Retorne o nível máximo de HDCP com suporte. |
| MaxSecurityLevel |
Retorna um valor que pode ser passado como um parâmetro para |
| 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 |
| 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 |
| ClearOnExpirationUpdateListener() |
Desmarque o |
| ClearOnKeyStatusChangeListener() |
Desmarque o |
| ClearOnSessionLostStateListener() |
Desmarque o |
| 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 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| 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 |
| Equals(Object) |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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 |
| IJavaPeerable.Finalized() |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| IJavaPeerable.JniObjectReferenceControlBlock |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
MediaDrm pode ser usado para obter chaves para descriptografar fluxos de mídia protegidos, em conjunto com |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| 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 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |