Lingua

MediaDrm Classe

Definizione

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a 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
Ereditarietà
Attributi
Implementazioni

Commenti

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto. Le API MediaDrm sono progettate per supportare lo standard ISO/IEC 23001-7: Common Encryption, ma possono essere usate anche per implementare altri schemi di crittografia.

Il contenuto crittografato viene preparato usando un server di crittografia e archiviato in una raccolta contenuto. Il contenuto crittografato viene trasmesso o scaricato dalla raccolta contenuto ai dispositivi client tramite server di contenuto. Le licenze per visualizzare il contenuto vengono ottenute da un server licenze.

<img src=".. /.. /.. /images/mediadrm_overview.png" alt="Diagramma della panoramica di MediaDrm" border="0" />

Le chiavi vengono richieste dal server licenze usando una richiesta di chiave. La risposta chiave viene recapitata all'app client, che fornisce la risposta all'API MediaDrm.

Potrebbe essere necessario un server di provisioning per distribuire le credenziali univoce del dispositivo ai dispositivi.

L'applicazione dei requisiti correlati al numero di dispositivi che possono riprodurre il contenuto contemporaneamente può essere eseguita tramite il rinnovo della chiave o usando i metodi di arresto sicuro.

Il diagramma di sequenza seguente mostra le interazioni tra gli oggetti coinvolti durante la riproduzione di contenuto crittografato:

<img src=".. /.. /.. /images/mediadrm_decryption_sequence.png" alt="Diagramma della panoramica di MediaDrm" border="0" />

L'app crea innanzitutto costrutti android.media.MediaExtractor e android.media.MediaCodec oggetti. Accede all'UUID di identificazione dello schema DRM, in genere dai metadati nel contenuto e usa questo UUID per costruire un'istanza di un oggetto MediaDrm in grado di supportare lo schema DRM richiesto dal contenuto. Agli schemi di crittografia vengono assegnati 16 UUID di byte. Il metodo #isCryptoSchemeSupported può essere usato per eseguire query se nel dispositivo è supportato uno schema specifico.

L'app chiama #openSession per generare un sessionId che identificherà in modo univoco la sessione nelle interazioni successive. L'app usa quindi l'oggetto MediaDrm per ottenere un messaggio di richiesta di chiave e inviarlo al server licenze, quindi fornire la risposta del server all'oggetto MediaDrm.

Una volta che l'app ha un sessionId, può costruire un oggetto MediaCrypto dall'UUID e dal sessionId. L'oggetto MediaCrypto viene registrato con MediaCodec nel MediaCodec#configure metodo per consentire al codec di decrittografare il contenuto.

Quando l'app ha costruito android.media.MediaExtractoroggetti e android.media.MediaCodecandroid.media.MediaCrypto , procede al pull dei campioni dall'estrattore e li accoda nel decodificatore. Per il contenuto crittografato, gli esempi restituiti dall'estrattore rimangono crittografati, vengono decrittografati solo quando gli esempi vengono recapitati al decodificatore.

I metodi MediaDrm generano un'eccezione android.media.MediaDrm.MediaDrmStateException quando viene chiamato un metodo su un oggetto MediaDrm che ha avuto un errore irreversibile nel plug-in DRM o nell'hardware di sicurezza. android.media.MediaDrm.MediaDrmStateException estende java.lang.IllegalStateException con l'aggiunta di una stringa di informazioni di diagnostica leggibile dallo sviluppatore associata all'eccezione.

In caso di arresto anomalo o riavvio di un processo mediaserver mentre un oggetto MediaDrm è attivo, i metodi MediaDrm possono generare android.media.MediaDrmResetException. Per il ripristino, l'app deve rilasciare l'oggetto MediaDrm, quindi crearne e inizializzarne uno nuovo.

Come android.media.MediaDrmResetException e android.media.MediaDrm.MediaDrmStateException entrambi estendono java.lang.IllegalStateException, devono trovarsi in un blocco catch() precedente rispetto a java.lang.IllegalStateException se gestito separatamente.

"Callbacks"><h3>Callbacks</h3>

Le applicazioni devono registrarsi per gli eventi informativi per essere informati degli aggiornamenti dello stato chiave durante la riproduzione o lo streaming. La registrazione per questi eventi viene eseguita tramite una chiamata a #setOnEventListener. Per ricevere il rispettivo callback associato a questo listener, le applicazioni devono creare oggetti MediaDrm in un thread con il proprio Looper in esecuzione (per impostazione predefinita il thread principale dell'interfaccia utente ha un Looper in esecuzione).

per android.media.MediaDrm.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Costruttori

Nome Descrizione
MediaDrm(UUID)

Creare un'istanza di un oggetto MediaDrm

Campi

Nome Descrizione
EventKeyExpired

Questo tipo di evento indica che la durata dell'utilizzo concesso in licenza per le chiavi in una sessione è scaduta.

EventKeyRequired
Obsoleti.

Questo tipo di evento indica che l'app deve richiedere le chiavi da un server licenze.

EventProvisionRequired
Obsoleti.

Questo tipo di evento indica che l'app deve richiedere un certificato dal server di provisioning.

EventSessionReclaimed
Obsoleti.

Questo evento indica che una sessione aperta dall'app è stata recuperata da Resource Manager.

EventVendorDefined
Obsoleti.

Questo evento può indicare una condizione specifica definita dal fornitore. Per informazioni dettagliate, vedere la documentazione del provider DRM

HdcpLevelUnknown
Obsoleti.

Il plug-in DRM non segnala un livello HDCP o si è verificato un errore durante l'accesso

HdcpNoDigitalOutput
Obsoleti.

Nessun output digitale, sicuro in modo implicito

HdcpNone
Obsoleti.

HDCP non è supportato in questo dispositivo, il contenuto non è protetto

HdcpV1
Obsoleti.

HDCP versione 1.

HdcpV2
Obsoleti.

HDCP versione 2.

HdcpV21
Obsoleti.

HDCP versione 2.

HdcpV22
Obsoleti.

HDCP versione 2.

HdcpV23
Obsoleti.

HDCP versione 2.

KeyTypeOffline
Obsoleti.

Questo tipo di richiesta di chiave specifica che le chiavi saranno per l'uso offline, verranno salvate nel dispositivo per l'uso quando il dispositivo non è connesso a una rete.

KeyTypeRelease
Obsoleti.

Questo tipo di richiesta di chiave specifica che le chiavi offline salvate in precedenza devono essere rilasciate.

KeyTypeStreaming
Obsoleti.

Questa specie di tipo di richiesta chiave che le chiavi saranno per l'uso online, non verranno salvate nel dispositivo per usarle successivamente quando il dispositivo non è connesso a una rete.

OfflineLicenseStateReleased
Obsoleti.

La licenza offline viene rilasciata, le chiavi sono state contrassegnate per il rilascio con #getKeyRequest KEY_TYPE_RELEASE, ma la risposta della chiave non è stata ricevuta.

OfflineLicenseStateUnknown
Obsoleti.

Lo stato della licenza offline è sconosciuto, si è verificato un errore durante il tentativo di accedervi.

OfflineLicenseStateUsable
Obsoleti.

La licenza offline è utilizzabile, le chiavi possono essere usate per la decrittografia.

PropertyAlgorithms

Nome proprietà stringa: elenco delimitato da virgole di algoritmi di crittografia e mac supportati da CryptoSession.

PropertyDescription

Nome proprietà stringa: descrive il plug-in DRM

PropertyDeviceUniqueId

Nome della proprietà matrice di byte: l'identificatore univoco del dispositivo viene stabilito durante il provisioning del dispositivo e fornisce un mezzo per identificare in modo univoco ogni dispositivo.

PropertyVendor

Nome proprietà stringa: identifica il creatore del plug-in DRM

PropertyVersion

Nome proprietà stringa: identifica la versione del plug-in DRM

SecurityLevelHwSecureAll
Obsoleti.

La gestione delle chiavi DRM, le operazioni di crittografia, la decodifica del contenuto e tutta la gestione dei supporti (compressi e non compressi) viene gestita all'interno di un ambiente di esecuzione attendibile supportato dall'hardware.

SecurityLevelHwSecureCrypto
Obsoleti.

La gestione delle chiavi DRM e le operazioni di crittografia vengono eseguite all'interno di un ambiente di esecuzione attendibile supportato dall'hardware.

SecurityLevelHwSecureDecode
Obsoleti.

La gestione delle chiavi DRM, le operazioni di crittografia e la decodifica del contenuto vengono eseguite all'interno di un ambiente di esecuzione attendibile supportato dall'hardware.

SecurityLevelSwSecureCrypto
Obsoleti.

La gestione delle chiavi DRM usa la crittografia whitebox basata su software.

SecurityLevelSwSecureDecode
Obsoleti.

La gestione e la decodifica delle chiavi DRM usano la crittografia whitebox basata su software.

SecurityLevelUnknown
Obsoleti.

Il plug-in DRM non segnala un livello di sicurezza o si è verificato un errore durante l'accesso

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
ConnectedHdcpLevel

Restituisce il livello HDCP negoziato con i ricevitori downstream a cui il dispositivo è connesso.

Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniManagedPeerState

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
JniPeerMembers

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

LogMessages

Restituisce un valore recente LogMessage LogMessages associato a questa MediaDrm istanza.

MaxHdcpLevel

Restituisce il livello HDCP massimo supportato.

MaxSecurityLevel

Restituisce un valore che può essere passato come parametro per #openSession(int) richiedere che la sessione venga aperta al livello di sicurezza massimo del dispositivo.

MaxSessionCount

Restituisce il numero massimo di sessioni MediaDrm che possono essere aperte simultaneosmente tra tutte le istanze mediaDrm per lo schema DRM attivo.

Metrics

Restituisce i dati delle metriche sull'istanza mediaDrm corrente.

OfflineLicenseKeySetIds

Le chiavi in una licenza offline consentono di riprodurre contenuto protetto anche se il dispositivo non è connesso a una rete.

OpenSessionCount

Restituisce il numero di sessioni MediaDrm attualmente aperte contemporaneamente tra tutte le istanze mediaDrm per lo schema DRM attivo.

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
SecureStopIds

Restituisce un elenco di tutti gli ID di arresto sicuro attualmente in memoria persistente.

SecureStops

Le interruzioni sicure sono un modo per applicare limiti al numero di flussi simultanei per sottoscrittore tra i dispositivi.

SupportedCryptoSchemes

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)

Metodi

Nome Descrizione
ClearOnEventListener()

Cancellare l'oggetto OnEventListener.

ClearOnExpirationUpdateListener()

Cancellare l'oggetto OnExpirationUpdateListener.

ClearOnKeyStatusChangeListener()

Cancellare l'oggetto OnKeyStatusChangeListener.

ClearOnSessionLostStateListener()

Cancellare l'oggetto OnSessionLostStateListener.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Close()

Rilascia le risorse associate alla sessione corrente di MediaDrm.

CloseSession(Byte[])

Chiudere una sessione sull'oggetto MediaDrm aperto in precedenza con #openSession.

Construct(JniObjectReference, JniObjectReferenceOptions)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
DisposeUnlessReferenced()

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
Equals(Object)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetCryptoSession(Byte[], String, String)

Ottenere un oggetto CryptoSession che può essere usato per crittografare, decrittografare, firmare e verificare messaggi o dati usando le chiavi di sessione stabilite per la sessione utilizzando metodi #getKeyRequest e #provideKeyResponse utilizzando un server chiavi di sessione.

GetHashCode()

Restituisce un valore di codice hash per l'oggetto .

(Ereditato da Object)
GetKeyRequest(Byte[], Byte[], String, Int32, IDictionary<String,String>)

Uno scambio di richieste/risposte chiave si verifica tra l'app e un server licenze per ottenere o rilasciare chiavi usate per decrittografare il contenuto crittografato.

GetOfflineLicenseState(Byte[])

Richiedere lo stato di una licenza offline.

GetPlaybackComponent(Byte[])

Ottenere un PlaybackComponent oggetto associato a una sessione DRM.

GetPropertyByteArray(String)

Leggere un valore della proprietà della matrice di byte MediaDrm, in base alla stringa del nome della proprietà.

GetPropertyString(String)

Leggere un valore della proprietà MediaDrm String, in base alla stringa del nome della proprietà.

GetProvisionRequest()

Uno scambio di richieste/risposte di provisioning si verifica tra l'app e un server di provisioning per recuperare un certificato del dispositivo.

GetSecureStop(Byte[])

Accedere a un arresto sicuro specifico in base all'ID di arresto sicuro.

GetSecurityLevel(Byte[])

Restituisce il livello di sicurezza corrente di una sessione.

IsCryptoSchemeSupported(UUID, String, SecurityLevel)

Eseguire una query se lo schema specificato identificato dal relativo UUID è supportato in questo dispositivo e se il plug-in DRM è in grado di gestire il formato del contenitore multimediale specificato da mimeType a livello di sicurezza richiesto.

IsCryptoSchemeSupported(UUID, String)

Eseguire una query se lo schema specificato identificato dal relativo UUID è supportato in questo dispositivo e se il plug-in DRM è in grado di gestire il formato del contenitore multimediale specificato da mimeType.

IsCryptoSchemeSupported(UUID)

Eseguire una query se lo schema specificato identificato dal relativo UUID è supportato nel dispositivo.

JavaFinalize()
Obsoleti.

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
OpenSession()

Aprire una nuova sessione con l'oggetto MediaDrm.

OpenSession(Int32)

Aprire una nuova sessione a livello di sicurezza richiesto.

ProvideKeyResponse(Byte[], Byte[])

Una risposta di chiave viene ricevuta dal server licenze dall'app, quindi viene fornita all'istanza mediaDrm usando provideKeyResponse.

ProvideProvisionResponse(Byte[])

Dopo aver ricevuto una risposta di provisioning dall'app, viene fornita all'istanza mediaDrm usando questo metodo.

QueryKeyStatus(Byte[])

Richiedere una descrizione informativa dello stato della chiave per la sessione.

Release()

Questo membro è deprecato.

ReleaseAllSecureStops()

Rimuovere tutti gli arresti sicuri senza richiedere un messaggio di rilascio di arresto sicuro dal server licenze.

ReleaseSecureStops(Byte[])

Elaborare il messaggio di risposta del server di arresto sicuro ssRelease.

RemoveAllSecureStops()

Rimuovere tutti gli arresti sicuri senza richiedere un messaggio di rilascio di arresto sicuro dal server licenze.

RemoveKeys(Byte[])

Rimuovere le chiavi correnti da una sessione.

RemoveOfflineLicense(Byte[])

In genere le licenze offline vengono rilasciate usando uno scambio di richieste/risposte chiave usando #getKeyRequest dove il tipo di chiave è KEY_TYPE_RELEASE, seguito da #provideKeyResponse.

RemoveSecureStop(Byte[])

Rimuovere un arresto sicuro specifico senza richiedere un messaggio di rilascio di arresto sicuro dal server licenze.

RequiresSecureDecoder(String, Int32)

Eseguire una query se lo schema di crittografia richiede l'uso di un decodificatore sicuro per decodificare i dati del tipo MIME specificato a livello di sicurezza specificato.

RequiresSecureDecoder(String)

Eseguire una query se lo schema di crittografia richiede l'uso di un decodificatore sicuro per decodificare i dati del tipo MIME specificato a livello di sicurezza predefinito.

RestoreKeys(Byte[], Byte[])

Ripristinare le chiavi offline persistenti in una nuova sessione.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetOnEventListener(IExecutor, MediaDrm+IOnEventListener)

Registrare un callback da richiamare quando si verifica un evento

SetOnEventListener(MediaDrm+IOnEventListener, Handler)

Registrare un callback da richiamare quando si verifica un evento

SetOnEventListener(MediaDrm+IOnEventListener)

Registrare un callback da richiamare quando si verifica un evento

SetOnExpirationUpdateListener(IExecutor, MediaDrm+IOnExpirationUpdateListener)

Registrare un callback da richiamare quando si verifica un aggiornamento di scadenza della sessione.

SetOnExpirationUpdateListener(MediaDrm+IOnExpirationUpdateListener, Handler)

Registrare un callback da richiamare quando si verifica un aggiornamento di scadenza della sessione.

SetOnKeyStatusChangeListener(IExecutor, MediaDrm+IOnKeyStatusChangeListener)

Registrare un callback da richiamare quando lo stato delle chiavi in una sessione cambia, e.

SetOnKeyStatusChangeListener(MediaDrm+IOnKeyStatusChangeListener, Handler)

Registrare un callback da richiamare quando lo stato delle chiavi in una sessione cambia, e.

SetOnSessionLostStateListener(IExecutor, MediaDrm+IOnSessionLostStateListener)

Registrare un callback da richiamare quando lo stato della sessione è andato perso.

SetOnSessionLostStateListener(MediaDrm+IOnSessionLostStateListener, Handler)

Registrare un callback da richiamare quando lo stato della sessione è andato perso.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
SetPropertyByteArray(String, Byte[])

Impostare un valore della proprietà della matrice di byte MediaDrm, in base alla stringa del nome della proprietà e al nuovo valore per la proprietà.

SetPropertyString(String, String)

Impostare un valore della proprietà MediaDrm String, in base alla stringa del nome della proprietà e al nuovo valore per la proprietà.

ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto .

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Eventi

Nome Descrizione
MediaDrmEvent

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
IJavaPeerable.Finalized()

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

(Ereditato da JavaObject)
IJavaPeerable.UnregisterFromRuntime()

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a android.media.MediaCrypto.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a