MediaDrm クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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.MediaExtractor、 android.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.MediaDrmResetExceptionとandroid.media.MediaDrm.MediaDrmStateExceptionの両方がjava.lang.IllegalStateException拡張されるため、個別に処理する場合は、java.lang.IllegalStateExceptionよりも前の catch() ブロックに配置する必要があります。
"Callbacks"><h3>Callbacks</h3>
アプリケーションは、再生またはストリーミング中に主要な状態の更新を通知するために、情報イベントに登録する必要があります。 これらのイベントの登録は、 #setOnEventListenerの呼び出しによって行われます。 このリスナーに関連付けられているそれぞれのコールバックを受け取るには、アプリケーションが独自の Looper を実行しているスレッド上に MediaDrm オブジェクトを作成する必要があります (既定では、メイン UI スレッドには Looper が実行されています)。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| 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で |
| 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 |
この |
| ConnectedHdcpLevel |
デバイスが接続されているダウンストリーム レシーバーとネゴシエートされた HDCP レベルを返します。 |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| JniPeerMembers |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| LogMessages |
この |
| MaxHdcpLevel |
サポートされている最大 HDCP レベルを返します。 |
| MaxSecurityLevel |
デバイスの最大セキュリティ レベルでセッションを開く |
| MaxSessionCount |
アクティブな DRM スキームのすべての MediaDrm インスタンス間で同時に開くことができる MediaDrm セッションの最大数を返します。 |
| Metrics |
現在の MediaDrm インスタンスに関するメトリック データを返します。 |
| OfflineLicenseKeySetIds |
オフライン ライセンスのキーを使用すると、デバイスがネットワークに接続されていない場合でも、保護されたコンテンツを再生できます。 |
| OpenSessionCount |
アクティブな DRM スキームのすべての MediaDrm インスタンス間で現在同時に開かれている MediaDrm セッションの数を返します。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| SecureStopIds |
現在永続メモリ内にあるすべてのセキュア ストップ ID の一覧を返します。 |
| SecureStops |
セキュア ストップは、デバイス間のサブスクライバーあたりの同時ストリーム数に制限を適用する方法です。 |
| SupportedCryptoSchemes |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 (継承元 Object) |
メソッド
| 名前 | 説明 |
|---|---|
| ClearOnEventListener() |
|
| ClearOnExpirationUpdateListener() |
|
| ClearOnKeyStatusChangeListener() |
|
| ClearOnSessionLostStateListener() |
|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Close() |
MediaDrm の現在のセッションに関連付けられているリソースを解放します。 |
| CloseSession(Byte[]) |
以前に |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| Equals(Object) |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetCryptoSession(Byte[], String, String) |
セッション キー サーバーを使用して |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| GetKeyRequest(Byte[], Byte[], String, Int32, IDictionary<String,String>) |
暗号化されたコンテンツの暗号化解除に使用されるキーを取得または解放するために、アプリとライセンス サーバーの間でキーの要求/応答交換が行われます。 |
| GetOfflineLicenseState(Byte[]) |
オフライン ライセンスの状態を要求します。 |
| GetPlaybackComponent(Byte[]) |
DRM セッションに関連付けられている |
| 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 |
| 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 を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| 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 を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| IJavaPeerable.Finalized() |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| IJavaPeerable.JniObjectReferenceControlBlock |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| IJavaPeerable.UnregisterFromRuntime() |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
MediaDrm を使用して、保護されたメディア ストリームの暗号化を解除するためのキーを、 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|