MediaDrm Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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).
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 |
| 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 |
| 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 |
| JniPeerMembers |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| LogMessages |
Restituisce un valore recente |
| MaxHdcpLevel |
Restituisce il livello HDCP massimo supportato. |
| MaxSecurityLevel |
Restituisce un valore che può essere passato come parametro per |
| 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 |
| 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 |
| ClearOnExpirationUpdateListener() |
Cancellare l'oggetto |
| ClearOnKeyStatusChangeListener() |
Cancellare l'oggetto |
| ClearOnSessionLostStateListener() |
Cancellare l'oggetto |
| 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 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| 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 |
| Equals(Object) |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IJavaPeerable.Disposed() |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| IJavaPeerable.Finalized() |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| IJavaPeerable.JniObjectReferenceControlBlock |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
| IJavaPeerable.UnregisterFromRuntime() |
MediaDrm può essere usato per ottenere le chiavi per decrittografare i flussi multimediali protetti, insieme a |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| 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 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |