MediaDrm クラス

定義

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 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
継承
属性
実装

注釈

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。 MediaDrm API は、ISO/IEC 23001-7: Common Encryption 標準をサポートするように設計されていますが、他の暗号化スキームの実装にも使用できます。

暗号化されたコンテンツは、暗号化サーバーを使用して準備され、コンテンツ ライブラリに格納されます。 暗号化されたコンテンツは、コンテンツ ライブラリからコンテンツ サーバー経由でクライアント デバイスにストリーミングまたはダウンロードされます。 コンテンツを表示するライセンスは、ライセンス サーバーから取得されます。

<img src="../../../images/mediadrm_overview.png" alt="MediaDrm Overview diagram" border="0" />

キーは、キー要求を使用してライセンス サーバーから要求されます。 キーの応答は、MediaDrm API への応答を提供するクライアント アプリに配信されます。

デバイス固有の資格情報をデバイスに配布するには、プロビジョニング サーバーが必要な場合があります。

コンテンツを同時に再生できるデバイスの数に関連する要件の適用は、キーの更新またはセキュリティで保護された停止方法を使用して実行できます。

次のシーケンス図は、暗号化されたコンテンツの再生中に関係するオブジェクト間の相互作用を示しています。

<img src="../../../images/mediadrm_decryption_sequence.png" alt="MediaDrm Overview diagram" border="0" />

アプリは、最初に android.media.MediaExtractor オブジェクトと android.media.MediaCodec オブジェクトを構築します。 通常はコンテンツ内のメタデータから DRM スキーム識別 UUID にアクセスし、この UUID を使用して、コンテンツに必要な DRM スキームをサポートできる MediaDrm オブジェクトのインスタンスを構築します。 暗号化スキームには、16 バイトの UUID が割り当てられます。 メソッド #isCryptoSchemeSupported を使用して、特定のスキームがデバイスでサポートされている場合にクエリを実行できます。

アプリは #openSession を呼び出して sessionId を生成し、後続の対話でセッションを一意に識別します。 次に、アプリは MediaDrm オブジェクトを使用してキー要求メッセージを取得し、ライセンス サーバーに送信し、MediaDrm オブジェクトに対するサーバーの応答を提供します。

アプリが sessionId を取得すると、UUID と sessionId から MediaCrypto オブジェクトを構築できます。 MediaCrypto オブジェクトは、 MediaCodec#configure メソッドの MediaCodec に登録され、コーデックがコンテンツを復号化できるようにします。

アプリが android.media.MediaExtractorandroid.media.MediaCodec 、および android.media.MediaCrypto オブジェクトを構築すると、エクストラクターからサンプルをプルし、デコーダーにキューに入れます。 暗号化されたコンテンツの場合、エクストラクターから返されたサンプルは暗号化されたままであり、サンプルがデコーダーに配信されたときにのみ暗号化解除されます。

MediaDrm メソッドは、DRM プラグインまたはセキュリティ ハードウェアで回復不能なエラーが発生した MediaDrm オブジェクトでメソッドが呼び出されたときに、 android.media.MediaDrm.MediaDrmStateException をスローします。 android.media.MediaDrm.MediaDrmStateException は、例外に関連付けられた開発者が読み取り可能な診断情報文字列を追加して java.lang.IllegalStateException を拡張します。

MediaDrm オブジェクトがアクティブな間にメディア サーバー プロセスがクラッシュまたは再起動した場合、MediaDrm メソッドは android.media.MediaDrmResetExceptionをスローする可能性があります。 回復するには、アプリで MediaDrm オブジェクトを解放してから、新しいオブジェクトを作成して初期化する必要があります。

android.media.MediaDrmResetExceptionandroid.media.MediaDrm.MediaDrmStateExceptionの両方がjava.lang.IllegalStateException拡張されるため、個別に処理する場合は、java.lang.IllegalStateExceptionよりも前の catch() ブロックに配置する必要があります。

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

アプリケーションは、再生またはストリーミング中に主要な状態の更新を通知するために、情報イベントに登録する必要があります。 これらのイベントの登録は、 #setOnEventListenerの呼び出しによって行われます。 このリスナーに関連付けられているそれぞれのコールバックを受け取るには、アプリケーションが独自の Looper を実行しているスレッド上に MediaDrm オブジェクトを作成する必要があります (既定では、メイン UI スレッドには Looper が実行されています)。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
MediaDrm(UUID)

MediaDrm オブジェクトをインスタンス化する

フィールド

名前 説明
EventKeyExpired

このイベントの種類は、セッション内のキーのライセンス使用期間が期限切れであることを示します。

EventKeyRequired
古い.

このイベントの種類は、アプリがライセンス サーバーからキーを要求する必要があることを示します。

EventProvisionRequired

このイベントの種類は、アプリがプロビジョニング サーバーから証明書を要求する必要があることを示します。

EventSessionReclaimed
古い.

このイベントは、アプリによって開かれたセッションがリソース マネージャーによって再利用されたことを示します。

EventVendorDefined
古い.

このイベントは、ベンダーが定義した特定の条件を示している可能性があります。詳細については、DRM プロバイダーのドキュメントを参照してください

HdcpLevelUnknown
古い.

DRM プラグインが HDCP レベルを報告しなかったか、アクセス中にエラーが発生しました

HdcpNoDigitalOutput
古い.

デジタル出力なし、暗黙的にセキュリティ保護

HdcpNone
古い.

このデバイスでは HDCP はサポートされていません。コンテンツは保護されていません

HdcpV1
古い.

HDCP バージョン 1。

HdcpV2
古い.

HDCP バージョン 2。

HdcpV21
古い.

HDCP バージョン 2。

HdcpV22
古い.

HDCP バージョン 2。

HdcpV23
古い.

HDCP バージョン 2。

KeyTypeOffline
古い.

このキー要求の種類は、キーがオフラインで使用されることを指定し、デバイスがネットワークに接続されていないときに使用するためにデバイスに保存されます。

KeyTypeRelease
古い.

このキー要求の種類では、以前に保存したオフライン キーを解放する必要があることを指定します。

KeyTypeStreaming
古い.

このキー要求の種類は、キーがオンラインで使用するために使用されます。デバイスがネットワークに接続されていない場合は、後で使用するためにデバイスに保存されません。

OfflineLicenseStateReleased
古い.

オフライン ライセンスがリリースされました。キーは、KEY_TYPE_RELEASEで #getKeyRequest を使用してリリース対象としてマークされていますが、キーの応答は受信されていません。

OfflineLicenseStateUnknown
古い.

オフライン ライセンスの状態が不明です。アクセス中にエラーが発生しました。

OfflineLicenseStateUsable
古い.

オフライン ライセンスは使用できます。キーは暗号化解除に使用できます。

PropertyAlgorithms

文字列プロパティ名: CryptoSession でサポートされる暗号アルゴリズムと mac アルゴリズムのコンマ区切りのリスト。

PropertyDescription

文字列プロパティ名: DRM プラグインについて説明します

PropertyDeviceUniqueId

バイト配列プロパティ名: デバイスの一意識別子は、デバイスのプロビジョニング中に確立され、各デバイスを一意に識別する手段を提供します。

PropertyVendor

文字列プロパティ名: DRM プラグインの作成者を識別します

PropertyVersion

文字列プロパティ名: DRM プラグインのバージョンを識別します

SecurityLevelHwSecureAll
古い.

DRM キーの管理、暗号化操作、コンテンツのデコード、メディアのすべての処理 (圧縮および非圧縮) は、ハードウェアによってサポートされる信頼された実行環境内で処理されます。

SecurityLevelHwSecureCrypto
古い.

DRM キー管理と暗号化操作は、ハードウェアによってサポートされる信頼された実行環境内で実行されます。

SecurityLevelHwSecureDecode
古い.

DRM キーの管理、暗号化操作、およびコンテンツのデコードは、ハードウェアによってサポートされる信頼された実行環境内で実行されます。

SecurityLevelSwSecureCrypto
古い.

DRM キー管理では、ソフトウェアベースのホワイトボックス暗号化が使用されます。

SecurityLevelSwSecureDecode
古い.

DRM キーの管理とデコードには、ソフトウェアベースのホワイトボックス暗号化が使用されます。

SecurityLevelUnknown
古い.

DRM プラグインがセキュリティ レベルを報告しなかったか、アクセス中にエラーが発生しました

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
ConnectedHdcpLevel

デバイスが接続されているダウンストリーム レシーバーとネゴシエートされた HDCP レベルを返します。

Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
JniPeerMembers

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

LogMessages

このLogMessage LogMessages インスタンスに関連付けられている最近使用したMediaDrmを返します。

MaxHdcpLevel

サポートされている最大 HDCP レベルを返します。

MaxSecurityLevel

デバイスの最大セキュリティ レベルでセッションを開く #openSession(int) にパラメーターとして渡される可能性のある値を返します。

MaxSessionCount

アクティブな DRM スキームのすべての MediaDrm インスタンス間で同時に開くことができる MediaDrm セッションの最大数を返します。

Metrics

現在の MediaDrm インスタンスに関するメトリック データを返します。

OfflineLicenseKeySetIds

オフライン ライセンスのキーを使用すると、デバイスがネットワークに接続されていない場合でも、保護されたコンテンツを再生できます。

OpenSessionCount

アクティブな DRM スキームのすべての MediaDrm インスタンス間で現在同時に開かれている MediaDrm セッションの数を返します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
SecureStopIds

現在永続メモリ内にあるすべてのセキュア ストップ ID の一覧を返します。

SecureStops

セキュア ストップは、デバイス間のサブスクライバーあたりの同時ストリーム数に制限を適用する方法です。

SupportedCryptoSchemes

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)

メソッド

名前 説明
ClearOnEventListener()

OnEventListenerをクリアします。

ClearOnExpirationUpdateListener()

OnExpirationUpdateListenerをクリアします。

ClearOnKeyStatusChangeListener()

OnKeyStatusChangeListenerをクリアします。

ClearOnSessionLostStateListener()

OnSessionLostStateListenerをクリアします。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Close()

MediaDrm の現在のセッションに関連付けられているリソースを解放します。

CloseSession(Byte[])

以前に #openSession で開かれた MediaDrm オブジェクトのセッションを閉じます。

Construct(JniObjectReference, JniObjectReferenceOptions)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
Equals(Object)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetCryptoSession(Byte[], String, String)

セッション キー サーバーを使用して #getKeyRequest メソッドと #provideKeyResponse を使用してセッション用に確立されたセッション キーを使用して、メッセージまたはデータの暗号化、暗号化解除、署名、検証に使用できる CryptoSession オブジェクトを取得します。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetKeyRequest(Byte[], Byte[], String, Int32, IDictionary<String,String>)

暗号化されたコンテンツの暗号化解除に使用されるキーを取得または解放するために、アプリとライセンス サーバーの間でキーの要求/応答交換が行われます。

GetOfflineLicenseState(Byte[])

オフライン ライセンスの状態を要求します。

GetPlaybackComponent(Byte[])

DRM セッションに関連付けられている PlaybackComponent を取得します。

GetPropertyByteArray(String)

プロパティ名の文字列を指定して、MediaDrm バイト配列プロパティ値を読み取ります。

GetPropertyString(String)

プロパティ名の文字列を指定して、MediaDrm 文字列プロパティ値を読み取ります。

GetProvisionRequest()

デバイス証明書を取得するために、アプリとプロビジョニング サーバーの間でプロビジョニング要求/応答交換が行われます。

GetSecureStop(Byte[])

セキュリティで保護された停止 ID を指定して、特定のセキュア ストップにアクセスします。

GetSecurityLevel(Byte[])

セッションの現在のセキュリティ レベルを返します。

IsCryptoSchemeSupported(UUID, String, SecurityLevel)

UUID で識別された特定のスキームがこのデバイスでサポートされているかどうか、および DRM プラグインが、要求されたセキュリティ レベルで mimeType で指定されたメディア コンテナー形式を処理できるかどうかをクエリします。

IsCryptoSchemeSupported(UUID, String)

UUID で識別された特定のスキームがこのデバイスでサポートされているかどうか、および DRM プラグインが mimeType で指定されたメディア コンテナー形式を処理できるかどうかをクエリします。

IsCryptoSchemeSupported(UUID)

UUID で識別された特定のスキームがこのデバイスでサポートされているかどうかをクエリします。

JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
OpenSession()

MediaDrm オブジェクトを使用して新しいセッションを開きます。

OpenSession(Int32)

要求されたセキュリティ レベルで新しいセッションを開きます。

ProvideKeyResponse(Byte[], Byte[])

キー応答は、アプリによってライセンス サーバーから受信された後、provideKeyResponse を使用して MediaDrm インスタンスに提供されます。

ProvideProvisionResponse(Byte[])

プロビジョニング応答がアプリによって受信されると、このメソッドを使用して MediaDrm インスタンスに提供されます。

QueryKeyStatus(Byte[])

セッションのキーの状態に関する情報の説明を要求します。

Release()

このメンバーは非推奨です。

ReleaseAllSecureStops()

ライセンス サーバーからセキュア ストップ リリース メッセージを必要とせずに、すべてのセキュア ストップを削除します。

ReleaseSecureStops(Byte[])

セキュリティで保護されたサーバー停止応答メッセージ ssRelease を処理します。

RemoveAllSecureStops()

ライセンス サーバーからセキュア ストップ リリース メッセージを必要とせずに、すべてのセキュア ストップを削除します。

RemoveKeys(Byte[])

セッションから現在のキーを削除します。

RemoveOfflineLicense(Byte[])

通常、オフライン ライセンスは、キーの種類がKEY_TYPE_RELEASE #getKeyRequest 後に #provideKeyResponseを使用して、キー要求/応答交換を使用してリリースされます。

RemoveSecureStop(Byte[])

ライセンス サーバーからセキュリティで保護された停止リリース メッセージを必要とせずに、特定のセキュリティで保護された停止を削除します。

RequiresSecureDecoder(String, Int32)

暗号化スキームで、セキュリティで保護されたデコーダーを使用して、特定のセキュリティ レベルで特定の MIME の種類のデータをデコードする必要がある場合にクエリを実行します。

RequiresSecureDecoder(String)

暗号化スキームで、セキュリティで保護されたデコーダーを使用して、既定のセキュリティ レベルで特定の MIME の種類のデータをデコードする必要がある場合にクエリを実行します。

RestoreKeys(Byte[], Byte[])

永続化されたオフライン キーを新しいセッションに復元します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetOnEventListener(IExecutor, MediaDrm+IOnEventListener)

イベントが発生したときに呼び出されるコールバックを登録する

SetOnEventListener(MediaDrm+IOnEventListener, Handler)

イベントが発生したときに呼び出されるコールバックを登録する

SetOnEventListener(MediaDrm+IOnEventListener)

イベントが発生したときに呼び出されるコールバックを登録する

SetOnExpirationUpdateListener(IExecutor, MediaDrm+IOnExpirationUpdateListener)

セッションの有効期限の更新が発生したときに呼び出されるコールバックを登録します。

SetOnExpirationUpdateListener(MediaDrm+IOnExpirationUpdateListener, Handler)

セッションの有効期限の更新が発生したときに呼び出されるコールバックを登録します。

SetOnKeyStatusChangeListener(IExecutor, MediaDrm+IOnKeyStatusChangeListener)

セッション内のキーの状態が変化したときに呼び出されるコールバックを登録します。例:

SetOnKeyStatusChangeListener(MediaDrm+IOnKeyStatusChangeListener, Handler)

セッション内のキーの状態が変化したときに呼び出されるコールバックを登録します。例:

SetOnSessionLostStateListener(IExecutor, MediaDrm+IOnSessionLostStateListener)

セッション状態が失われたときに呼び出されるコールバックを登録します。

SetOnSessionLostStateListener(MediaDrm+IOnSessionLostStateListener, Handler)

セッション状態が失われたときに呼び出されるコールバックを登録します。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
SetPropertyByteArray(String, Byte[])

プロパティ名の文字列とプロパティの新しい値を指定して、MediaDrm バイト配列プロパティ値を設定します。

SetPropertyString(String, String)

プロパティ名の文字列とプロパティの新しい値を指定して、MediaDrm 文字列プロパティ値を設定します。

ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

イベント

名前 説明
MediaDrmEvent

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
IJavaPeerable.Finalized()

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

(継承元 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 android.media.MediaCryptoと組み合わせて取得できます。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象