1e41f4b71Sopenharmony_ci# @ohos.multimedia.drm (数字版权保护)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciDRM(Digital Rights Management)框架组件支持音视频媒体业务数字版权管理功能的开发。开发者可以调用系统提供的DRM插件,完成以下功能:
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci* DRM证书管理:生成证书请求、设置证书响应,实现对证书Provision(下载)功能。
6e41f4b71Sopenharmony_ci* DRM媒体密钥管理:生成媒体密钥请求、设置媒体密钥响应、管理离线媒体密钥功能。
7e41f4b71Sopenharmony_ci* DRM节目授权:支持DRM插件根据媒体密钥权限对DRM节目授权。
8e41f4b71Sopenharmony_ci* DRM节目解密:支持媒体播放功能的解密调用,实现对DRM节目的解密。
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci> **说明:**
11e41f4b71Sopenharmony_ci> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## 导入模块
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci```ts
16e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
17e41f4b71Sopenharmony_ci```
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci## DrmErrorCode
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci枚举,错误码。
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
26e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
27e41f4b71Sopenharmony_ci| ERROR_UNKNOWN       | 24700101    | 未知错误   |
28e41f4b71Sopenharmony_ci| MAX_SYSTEM_NUM_REACHED   | 24700103    | MediaKeySystem实例数量超过上限(64个)    |
29e41f4b71Sopenharmony_ci| MAX_SESSION_NUM_REACHED    | 24700104    | MediaKeySession实例数量超过上限(64个)     |
30e41f4b71Sopenharmony_ci| SERVICE_FATAL_ERROR  | 24700201    | DRM服务异常     |
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci## PreDefinedConfigName
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci枚举,预定义的配置属性。
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
39e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
40e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VENDOR        | 'vendor'    | 插件厂商名,通过[getConfigurationString](#getconfigurationstring)接口获取vendor对应配置值。   |
41e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VERSION    | 'version'    | 插件版本号,通过[getConfigurationString](#getconfigurationstring)接口获取version对应配置值。     |
42e41f4b71Sopenharmony_ci| CONFIG_DEVICE_DESCRIPTION     | 'description'    | 设备描述符,通过[getConfigurationString](#getconfigurationstring)接口获取description对应配置值。      |
43e41f4b71Sopenharmony_ci| CONFIG_DEVICE_ALGORITHMS   | 'algorithms'    | 支持的算法,通过[getConfigurationString](#getconfigurationstring)接口获取algorithms对应配置值。     |
44e41f4b71Sopenharmony_ci| CONFIG_DEVICE_UNIQUE_ID    | 'deviceUniqueId'    | 设备唯一标识,通过[getConfigurationByteArray](#getconfigurationbytearray)接口获取deviceUniqueId对应配置值。     |
45e41f4b71Sopenharmony_ci| CONFIG_SESSION_MAX         | 'maxSessionNum'    | 设备支持的最大会话数,通过[getConfigurationString](#getconfigurationstring)接口获取maxSessionNum对应配置值。     |
46e41f4b71Sopenharmony_ci| CONFIG_SESSION_CURRENT   | 'currentSessionNum'    | 当前会话数量,通过[getConfigurationString](#getconfigurationstring)接口获取currentSessionNum对应配置值。     |
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci## MediaKeyType
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci枚举,媒体密钥类型。
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
55e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
56e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_OFFLINE        | 0    | 离线   |
57e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_ONLINE   | 1    | 在线     |
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci## OfflineMediaKeyStatus
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci枚举,离线媒体密钥状态。
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
66e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
67e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_UNKNOWN        | 0    | 未知状态   |
68e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_USABLE   | 1    | 可用状态     |
69e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_INACTIVE     | 2    | 失活状态       |
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci## CertificateStatus
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci枚举,设备证书状态。
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
78e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
79e41f4b71Sopenharmony_ci| CERT_STATUS_PROVISIONED        | 0    | 设备已安装设备证书   |
80e41f4b71Sopenharmony_ci| CERT_STATUS_NOT_PROVISIONED   | 1    | 设备未安装设备证书     |
81e41f4b71Sopenharmony_ci| CERT_STATUS_EXPIRED    | 2    | 设备证书过期       |
82e41f4b71Sopenharmony_ci| CERT_STATUS_INVALID  | 3    | 设备证书无效     |
83e41f4b71Sopenharmony_ci| CERT_STATUS_UNAVAILABLE  | 4    | 设备证书不可用     |
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci## MediaKeyRequestType
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci枚举,媒体密钥请求类型。
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
94e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
95e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UNKNOWN        | 0    | 未知请求类型   |
96e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_INITIAL    | 1    | 初始化请求     |
97e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RENEWAL     | 2    | 续订请求       |
98e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RELEASE   | 3    | 释放请求     |
99e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_NONE    | 4    | 无请求     |
100e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UPDATE    | 5    | 更新请求     |
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci## ContentProtectionLevel
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ci枚举,内容保护级别。
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明            |
111e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------    |
112e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_UNKNOWN        | 0    | 未知内容保护级别   |
113e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_SW_CRYPTO   | 1    | 软件内容保护级别     |
114e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_HW_CRYPTO    | 2    | 硬件内容保护级别       |
115e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_ENHANCED_HW  | 3    | 硬件增强内容保护级别     |
116e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_MAX  | 4    | 最高内容保护级别     |
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci## ProvisionRequest
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci设备证书请求。
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
125e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
126e41f4b71Sopenharmony_ci| data   | Uint8Array | 是  | 设备证书请求数据      |
127e41f4b71Sopenharmony_ci| defaultURL     | string                 | 是  | Provision服务(设备证书请求服务)URL       |
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci## OptionsData
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci设备证书请求的可选数据。
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
138e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
139e41f4b71Sopenharmony_ci| name   | string | 是  | 可选数据名      |
140e41f4b71Sopenharmony_ci| value     | string                 | 是  | 可选数据值       |
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci## MediaKeyRequest
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci媒体密钥请求参数。
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
151e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
152e41f4b71Sopenharmony_ci| mediaKeyRequestType   | [MediaKeyRequestType](#mediakeyrequesttype) | 是  | 媒体密钥请求类型      |
153e41f4b71Sopenharmony_ci| data     | Uint8Array                 | 是  | 媒体密钥请求数据       |
154e41f4b71Sopenharmony_ci| defaultURL     | string                 | 是  | 媒体密钥服务URL       |
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci## EventInfo
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci事件信息。
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
165e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
166e41f4b71Sopenharmony_ci| info   | Uint8Array | 是  | 事件信息数据      |
167e41f4b71Sopenharmony_ci| extraInfo     | string                 | 是  | 事件扩展信息       |
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci## StatisticKeyValue
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci度量记录。
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
174e41f4b71Sopenharmony_ci
175e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
176e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
177e41f4b71Sopenharmony_ci| name   | string | 是  | 度量记录名      |
178e41f4b71Sopenharmony_ci| value     | string                 | 是  | 度量记录值       |
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci## MediaKeyStatus
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci媒体密钥状态
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
189e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
190e41f4b71Sopenharmony_ci| name   | string | 是  | 媒体密钥状态名称(如媒体密钥过期时间、内容保护安全级别等)      |
191e41f4b71Sopenharmony_ci| value     | string                 | 是  | 媒体密钥状态值       |
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci## KeysInfo
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci媒体密钥中密钥信息。
196e41f4b71Sopenharmony_ci
197e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
198e41f4b71Sopenharmony_ci
199e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
200e41f4b71Sopenharmony_ci
201e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
202e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
203e41f4b71Sopenharmony_ci| keyId   | Uint8Array | 是  | 媒体密钥标识      |
204e41f4b71Sopenharmony_ci| value     | string                 | 是  | 媒体密钥状态值       |
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci## MediaKeySystemInfo
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci加密媒体内容的DRM信息。
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
215e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
216e41f4b71Sopenharmony_ci| uuid   | string | 是  | DRM内容保护系统的唯一标识      |
217e41f4b71Sopenharmony_ci| pssh     | Uint8Array                 | 是  | DRM内容保护系统专用头(Protection System Specific Header)       |
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci## MediaKeySystemDescription<sup>12+</sup>
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci插件信息。
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci| 名称      | 类型                           | 必填 | 说明         |
226e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- |
227e41f4b71Sopenharmony_ci| name   | string | 是  | 插件名称      |
228e41f4b71Sopenharmony_ci| uuid   | string | 是  | 插件唯一标识码      |
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci## drm.createMediaKeySystem
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_cicreateMediaKeySystem(name: string): MediaKeySystem
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_ci创建MediaKeySystem实例。
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ci**参数:**
239e41f4b71Sopenharmony_ci
240e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
241e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
242e41f4b71Sopenharmony_ci| name  | string     | 是   | DRM解决方案名称。                   |
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci**返回值:**
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
247e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
248e41f4b71Sopenharmony_ci| [MediaKeySystem](#mediakeysystem)           | MediaKeySystem实例。                   |
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci**错误码:**
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
255e41f4b71Sopenharmony_ci| --------------- | --------------- |
256e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.               |
257e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
258e41f4b71Sopenharmony_ci| 24700103                |  Meet max MediaKeySystem num limit                  |
259e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ci**示例:**
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci```ts
264e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
265e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
266e41f4b71Sopenharmony_citry {
267e41f4b71Sopenharmony_ci  let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
268e41f4b71Sopenharmony_ci} catch (err) {
269e41f4b71Sopenharmony_ci  let error = err as BusinessError;
270e41f4b71Sopenharmony_ci  console.error(`createMediaKeySystem ERROR: ${error}`);  
271e41f4b71Sopenharmony_ci}
272e41f4b71Sopenharmony_ci```
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string): boolean
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci判断设备是否支持指定的DRM解决方案。
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci**参数:**
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
285e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
286e41f4b71Sopenharmony_ci| name  | string     | 是   | DRM解决方案名称。                   |
287e41f4b71Sopenharmony_ci
288e41f4b71Sopenharmony_ci**返回值:**
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
291e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
292e41f4b71Sopenharmony_ci| boolean          | 返回是否支持。                   |
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci**错误码:**
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
299e41f4b71Sopenharmony_ci| --------------- | --------------- |
300e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed, the param name's length is zero or too big(exceeds 4096 Bytes).               |
301e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
302e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci**示例:**
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci```ts
307e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
308e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_citry {
311e41f4b71Sopenharmony_ci  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm");
312e41f4b71Sopenharmony_ci  console.log("isMediaKeySystemSupported: ", supported);
313e41f4b71Sopenharmony_ci} catch (err) {
314e41f4b71Sopenharmony_ci  let error = err as BusinessError;
315e41f4b71Sopenharmony_ci  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
316e41f4b71Sopenharmony_ci}
317e41f4b71Sopenharmony_ci```
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string, mimeType: string): boolean
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci判断设备是否支持指定DRM解决方案及媒体类型。
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
326e41f4b71Sopenharmony_ci
327e41f4b71Sopenharmony_ci**参数:**
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
330e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
331e41f4b71Sopenharmony_ci| name  | string     | 是   | DRM解决方案名称。                   |
332e41f4b71Sopenharmony_ci| mimeType  | string     | 是   | 媒体类型,由DRM解决方案决定具体的支持类型。                   |
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci**返回值:**
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
337e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
338e41f4b71Sopenharmony_ci| boolean          | 返回是否支持。                   |
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci**错误码:**
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
345e41f4b71Sopenharmony_ci| --------------- | --------------- |
346e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.                |
347e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
348e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci**示例:**
351e41f4b71Sopenharmony_ci
352e41f4b71Sopenharmony_ci```ts
353e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
354e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
355e41f4b71Sopenharmony_ci
356e41f4b71Sopenharmony_citry {
357e41f4b71Sopenharmony_ci  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc");
358e41f4b71Sopenharmony_ci  console.log("isMediaKeySystemSupported: ", supported);
359e41f4b71Sopenharmony_ci} catch (err) {
360e41f4b71Sopenharmony_ci  let error = err as BusinessError;
361e41f4b71Sopenharmony_ci  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
362e41f4b71Sopenharmony_ci}
363e41f4b71Sopenharmony_ci```
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string, mimeType: string, level: ContentProtectionLevel): boolean
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ci判断设备是否支持指定DRM解决方案、媒体类型以及内容保护级别。
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci**参数:**
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
377e41f4b71Sopenharmony_ci| name  | string     | 是   | DRM解决方案名称。                   |
378e41f4b71Sopenharmony_ci| mimeType  | string     | 是   | 媒体类型,由DRM解决方案决定具体的支持类型。                   |
379e41f4b71Sopenharmony_ci| level  | [ContentProtectionLevel](#contentprotectionlevel)     | 是   | 内容保护级别。                   |
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci**返回值:**
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
384e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
385e41f4b71Sopenharmony_ci| boolean          | 返回是否支持。                   |
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci**错误码:**
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
392e41f4b71Sopenharmony_ci| --------------- | --------------- |
393e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.               |
394e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
395e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci**示例:**
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ci```ts
400e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
401e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_citry {
404e41f4b71Sopenharmony_ci  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc", drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
405e41f4b71Sopenharmony_ci  console.log("isMediaKeySystemSupported: ", supported);
406e41f4b71Sopenharmony_ci} catch (err) {
407e41f4b71Sopenharmony_ci  let error = err as BusinessError;
408e41f4b71Sopenharmony_ci  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
409e41f4b71Sopenharmony_ci}
410e41f4b71Sopenharmony_ci```
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_ci## drm.getMediaKeySystemUuid<sup>12+</sup>
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_cigetMediaKeySystemUuid(name: string): string;
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci获取DRM解决方案支持的DRM内容保护系统唯一标识。
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci**参数:**
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
423e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
424e41f4b71Sopenharmony_ci| name  | string     | 是   | DRM解决方案名称。                   |
425e41f4b71Sopenharmony_ci
426e41f4b71Sopenharmony_ci**返回值:**
427e41f4b71Sopenharmony_ci
428e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
429e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
430e41f4b71Sopenharmony_ci| uuid  | string     | 是   | DRM内容保护系统的唯一标识。                   |
431e41f4b71Sopenharmony_ci
432e41f4b71Sopenharmony_ci**错误码:**
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
435e41f4b71Sopenharmony_ci
436e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
437e41f4b71Sopenharmony_ci| --------------- | --------------- |
438e41f4b71Sopenharmony_ci| 401                |  The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.                |
439e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
440e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
441e41f4b71Sopenharmony_ci
442e41f4b71Sopenharmony_ci**示例:**
443e41f4b71Sopenharmony_ci
444e41f4b71Sopenharmony_ci```ts
445e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
446e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
447e41f4b71Sopenharmony_citry {
448e41f4b71Sopenharmony_ci  let uuid: String = drm.getMediaKeySystemUuid("com.clearplay.drm");
449e41f4b71Sopenharmony_ci  console.log("getMediaKeySystemUuid: ", uuid);
450e41f4b71Sopenharmony_ci} catch (err) {
451e41f4b71Sopenharmony_ci  let error = err as BusinessError;
452e41f4b71Sopenharmony_ci  console.error(`getMediaKeySystemUuid ERROR: ${error}`);  
453e41f4b71Sopenharmony_ci}
454e41f4b71Sopenharmony_ci```
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ci## drm.getMediaKeySystems<sup>12+</sup>
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_cigetMediaKeySystems(): MediaKeySystemDescription[]
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci获取设备支持的插件信息列表。
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
463e41f4b71Sopenharmony_ci
464e41f4b71Sopenharmony_ci**返回值:**
465e41f4b71Sopenharmony_ci
466e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
467e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
468e41f4b71Sopenharmony_ci| [MediaKeySystemDescription[]](#mediakeysystemdescription12)           | 设备支持的插件信息列表。                   |
469e41f4b71Sopenharmony_ci
470e41f4b71Sopenharmony_ci**错误码:**
471e41f4b71Sopenharmony_ci
472e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
473e41f4b71Sopenharmony_ci
474e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
475e41f4b71Sopenharmony_ci| --------------- | --------------- |
476e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
477e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci**示例:**
480e41f4b71Sopenharmony_ci
481e41f4b71Sopenharmony_ci```ts
482e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
483e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
484e41f4b71Sopenharmony_citry {
485e41f4b71Sopenharmony_ci  let description: drm.MediaKeySystemDescription[] = drm.getMediaKeySystems();
486e41f4b71Sopenharmony_ci} catch (err) {
487e41f4b71Sopenharmony_ci  let error = err as BusinessError;
488e41f4b71Sopenharmony_ci  console.error(`getMediaKeySystems ERROR: ${error}`);  
489e41f4b71Sopenharmony_ci}
490e41f4b71Sopenharmony_ci```
491e41f4b71Sopenharmony_ci
492e41f4b71Sopenharmony_ci## MediaKeySystem
493e41f4b71Sopenharmony_ci支持MediaKeySystem实例管理、设备证书申请与处理、会话创建、离线媒体密钥管理、获取DRM度量记录、设备属性等。在调用MediaKeySystem方法之前,必须使用[createMediaKeySystem](#drmcreatemediakeysystem)创建一个MediaKeySystem实例。
494e41f4b71Sopenharmony_ci
495e41f4b71Sopenharmony_ci### setConfigurationString
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_cisetConfigurationString(configName: string, value: string): void
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ci设置字符串类型的配置信息。
500e41f4b71Sopenharmony_ci
501e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
502e41f4b71Sopenharmony_ci
503e41f4b71Sopenharmony_ci**参数:**
504e41f4b71Sopenharmony_ci
505e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
506e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
507e41f4b71Sopenharmony_ci| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
508e41f4b71Sopenharmony_ci| value  | string     | 是   | 配置属性值。                   |
509e41f4b71Sopenharmony_ci
510e41f4b71Sopenharmony_ci**错误码:**
511e41f4b71Sopenharmony_ci
512e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
513e41f4b71Sopenharmony_ci
514e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
515e41f4b71Sopenharmony_ci| --------------- | --------------- |
516e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.|
517e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
518e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
519e41f4b71Sopenharmony_ci
520e41f4b71Sopenharmony_ci**示例:**
521e41f4b71Sopenharmony_ci
522e41f4b71Sopenharmony_ci```ts
523e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
524e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
525e41f4b71Sopenharmony_ci
526e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
527e41f4b71Sopenharmony_citry {
528e41f4b71Sopenharmony_ci  mediaKeySystem.setConfigurationString("stringConfigName", "stringConfigValue"); // 确保stringConfigName是可配置的
529e41f4b71Sopenharmony_ci} catch (err) {
530e41f4b71Sopenharmony_ci  let error = err as BusinessError;
531e41f4b71Sopenharmony_ci  console.error(`setConfigurationString ERROR: ${error}`);
532e41f4b71Sopenharmony_ci}
533e41f4b71Sopenharmony_ci```
534e41f4b71Sopenharmony_ci
535e41f4b71Sopenharmony_ci### getConfigurationString
536e41f4b71Sopenharmony_ci
537e41f4b71Sopenharmony_cigetConfigurationString(configName: string): string
538e41f4b71Sopenharmony_ci
539e41f4b71Sopenharmony_ci获取字符串类型的配置属性值。
540e41f4b71Sopenharmony_ci
541e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
542e41f4b71Sopenharmony_ci
543e41f4b71Sopenharmony_ci**参数:**
544e41f4b71Sopenharmony_ci
545e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
546e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
547e41f4b71Sopenharmony_ci| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
548e41f4b71Sopenharmony_ci
549e41f4b71Sopenharmony_ci**返回值:**
550e41f4b71Sopenharmony_ci
551e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
552e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
553e41f4b71Sopenharmony_ci| string          | 返回字符串类型的配置属性值。                   |
554e41f4b71Sopenharmony_ci
555e41f4b71Sopenharmony_ci**错误码:**
556e41f4b71Sopenharmony_ci
557e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
560e41f4b71Sopenharmony_ci| --------------- | --------------- |
561e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed, the param's length is zero or too big(exceeds 4096 Bytes).                              |
562e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
563e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
564e41f4b71Sopenharmony_ci
565e41f4b71Sopenharmony_ci**示例:**
566e41f4b71Sopenharmony_ci
567e41f4b71Sopenharmony_ci```ts
568e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
569e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
570e41f4b71Sopenharmony_ci
571e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
572e41f4b71Sopenharmony_citry {
573e41f4b71Sopenharmony_ci  let configValue: string = mediaKeySystem.getConfigurationString("vendor");
574e41f4b71Sopenharmony_ci} catch (err) {
575e41f4b71Sopenharmony_ci  let error = err as BusinessError;
576e41f4b71Sopenharmony_ci  console.error(`getConfigurationString ERROR: ${error}`);  
577e41f4b71Sopenharmony_ci}
578e41f4b71Sopenharmony_ci```
579e41f4b71Sopenharmony_ci
580e41f4b71Sopenharmony_ci### setConfigurationByteArray
581e41f4b71Sopenharmony_ci
582e41f4b71Sopenharmony_cisetConfigurationByteArray(configName: string, value: Uint8Array): void
583e41f4b71Sopenharmony_ci
584e41f4b71Sopenharmony_ci设置数组类型的配置信息。
585e41f4b71Sopenharmony_ci
586e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
587e41f4b71Sopenharmony_ci
588e41f4b71Sopenharmony_ci**参数:**
589e41f4b71Sopenharmony_ci
590e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
591e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
592e41f4b71Sopenharmony_ci| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
593e41f4b71Sopenharmony_ci| value  | Uint8Array     | 是   | 数组类型的配置属性值,具体属性值由设备上DRM解决方案决定。                   |
594e41f4b71Sopenharmony_ci
595e41f4b71Sopenharmony_ci**错误码:**
596e41f4b71Sopenharmony_ci
597e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
598e41f4b71Sopenharmony_ci
599e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
600e41f4b71Sopenharmony_ci| --------------- | --------------- |
601e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.               |
602e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors.                  |
603e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died.                  |
604e41f4b71Sopenharmony_ci
605e41f4b71Sopenharmony_ci**示例:**
606e41f4b71Sopenharmony_ci
607e41f4b71Sopenharmony_ci```ts
608e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
609e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
610e41f4b71Sopenharmony_ci
611e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
612e41f4b71Sopenharmony_ci// 按实际需求填写configValue属性值,请按实际值传入
613e41f4b71Sopenharmony_cilet configValue: Uint8Array = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
614e41f4b71Sopenharmony_citry {
615e41f4b71Sopenharmony_ci  // 需确认当前DRM解决方案的byteArrayConfigName属性是可配置的
616e41f4b71Sopenharmony_ci  mediaKeySystem.setConfigurationByteArray("byteArrayConfigName", configValue);
617e41f4b71Sopenharmony_ci} catch (err) {
618e41f4b71Sopenharmony_ci  let error = err as BusinessError;
619e41f4b71Sopenharmony_ci  console.error(`setConfigurationByteArray ERROR: ${error}`);  
620e41f4b71Sopenharmony_ci}
621e41f4b71Sopenharmony_ci```
622e41f4b71Sopenharmony_ci
623e41f4b71Sopenharmony_ci### getConfigurationByteArray
624e41f4b71Sopenharmony_ci
625e41f4b71Sopenharmony_cigetConfigurationByteArray(configName: string): Uint8Array
626e41f4b71Sopenharmony_ci
627e41f4b71Sopenharmony_ci获取数组类型的配置信息。
628e41f4b71Sopenharmony_ci
629e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
630e41f4b71Sopenharmony_ci
631e41f4b71Sopenharmony_ci**参数:**
632e41f4b71Sopenharmony_ci
633e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
634e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
635e41f4b71Sopenharmony_ci| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
636e41f4b71Sopenharmony_ci
637e41f4b71Sopenharmony_ci**返回值:**
638e41f4b71Sopenharmony_ci
639e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
640e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
641e41f4b71Sopenharmony_ci| Uint8Array          | 数组类型的配置属性值。                   |
642e41f4b71Sopenharmony_ci
643e41f4b71Sopenharmony_ci**错误码:**
644e41f4b71Sopenharmony_ci
645e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
646e41f4b71Sopenharmony_ci
647e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
648e41f4b71Sopenharmony_ci| --------------- | --------------- |
649e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.        |
650e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
651e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
652e41f4b71Sopenharmony_ci
653e41f4b71Sopenharmony_ci**示例:**
654e41f4b71Sopenharmony_ci
655e41f4b71Sopenharmony_ci```ts
656e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
657e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
658e41f4b71Sopenharmony_ci
659e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
660e41f4b71Sopenharmony_citry {
661e41f4b71Sopenharmony_ci  let configValue: Uint8Array = mediaKeySystem.getConfigurationByteArray("deviceUniqueId"); // 确保deviceUniqueId属性是存在的
662e41f4b71Sopenharmony_ci} catch (err) {
663e41f4b71Sopenharmony_ci  let error = err as BusinessError;
664e41f4b71Sopenharmony_ci  console.error(`getConfigurationByteArray ERROR: ${error}`);  
665e41f4b71Sopenharmony_ci}
666e41f4b71Sopenharmony_ci```
667e41f4b71Sopenharmony_ci
668e41f4b71Sopenharmony_ci### getStatistics
669e41f4b71Sopenharmony_ci
670e41f4b71Sopenharmony_cigetStatistics(): StatisticKeyValue[]
671e41f4b71Sopenharmony_ci
672e41f4b71Sopenharmony_ci获取性能度量记录。其中包括当前会话数、插件版本信息、每个会话最大三次解密耗时、解密次数和解密失败次数。
673e41f4b71Sopenharmony_ci
674e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
675e41f4b71Sopenharmony_ci
676e41f4b71Sopenharmony_ci**返回值:**
677e41f4b71Sopenharmony_ci
678e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
679e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
680e41f4b71Sopenharmony_ci| [StatisticKeyValue[]](#statistickeyvalue)          | 度量记录。                   |
681e41f4b71Sopenharmony_ci
682e41f4b71Sopenharmony_ci**错误码:**
683e41f4b71Sopenharmony_ci
684e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
685e41f4b71Sopenharmony_ci
686e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
687e41f4b71Sopenharmony_ci| --------------- | --------------- |
688e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
689e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
690e41f4b71Sopenharmony_ci
691e41f4b71Sopenharmony_ci**示例:**
692e41f4b71Sopenharmony_ci
693e41f4b71Sopenharmony_ci```ts
694e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
695e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
696e41f4b71Sopenharmony_ci
697e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
698e41f4b71Sopenharmony_citry {
699e41f4b71Sopenharmony_ci  let statisticKeyValue: drm.StatisticKeyValue[] = mediaKeySystem.getStatistics();
700e41f4b71Sopenharmony_ci} catch (err) {
701e41f4b71Sopenharmony_ci  let error = err as BusinessError;
702e41f4b71Sopenharmony_ci  console.error(`getConfigurationByteArray ERROR: ${error}`);
703e41f4b71Sopenharmony_ci}
704e41f4b71Sopenharmony_ci```
705e41f4b71Sopenharmony_ci
706e41f4b71Sopenharmony_ci### getMaxContentProtectionLevel
707e41f4b71Sopenharmony_ci
708e41f4b71Sopenharmony_cigetMaxContentProtectionLevel(): ContentProtectionLevel
709e41f4b71Sopenharmony_ci
710e41f4b71Sopenharmony_ci获取当前DRM解决方案支持的最大内容保护级别。
711e41f4b71Sopenharmony_ci
712e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
713e41f4b71Sopenharmony_ci
714e41f4b71Sopenharmony_ci**返回值:**
715e41f4b71Sopenharmony_ci
716e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
717e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
718e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel)          | 返回设备支持的最大内容保护级别。                   |
719e41f4b71Sopenharmony_ci
720e41f4b71Sopenharmony_ci**错误码:**
721e41f4b71Sopenharmony_ci
722e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
723e41f4b71Sopenharmony_ci
724e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
725e41f4b71Sopenharmony_ci| --------------- | --------------- |
726e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
727e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
728e41f4b71Sopenharmony_ci
729e41f4b71Sopenharmony_ci**示例:**
730e41f4b71Sopenharmony_ci
731e41f4b71Sopenharmony_ci```ts
732e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
733e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
734e41f4b71Sopenharmony_ci
735e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
736e41f4b71Sopenharmony_citry {
737e41f4b71Sopenharmony_ci  let maxLevel: drm.ContentProtectionLevel = mediaKeySystem.getMaxContentProtectionLevel();
738e41f4b71Sopenharmony_ci} catch (err) {
739e41f4b71Sopenharmony_ci  let error = err as BusinessError;
740e41f4b71Sopenharmony_ci  console.error(`getConfigurationByteArray ERROR: ${error}`);
741e41f4b71Sopenharmony_ci}
742e41f4b71Sopenharmony_ci```
743e41f4b71Sopenharmony_ci
744e41f4b71Sopenharmony_ci### generateKeySystemRequest
745e41f4b71Sopenharmony_ci
746e41f4b71Sopenharmony_cigenerateKeySystemRequest(): Promise<ProvisionRequest\>
747e41f4b71Sopenharmony_ci
748e41f4b71Sopenharmony_ci生成获取mediaKeySystem设备证书的请求。
749e41f4b71Sopenharmony_ci
750e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
751e41f4b71Sopenharmony_ci
752e41f4b71Sopenharmony_ci**返回值:**
753e41f4b71Sopenharmony_ci
754e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
755e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
756e41f4b71Sopenharmony_ci| Promise<[ProvisionRequest](#provisionrequest)\>          | Promise对象,mediaKeySystem设备证书的请求。设备上如果已存在设备证书,会返回失败。   |
757e41f4b71Sopenharmony_ci
758e41f4b71Sopenharmony_ci**错误码:**
759e41f4b71Sopenharmony_ci
760e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
761e41f4b71Sopenharmony_ci
762e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
763e41f4b71Sopenharmony_ci| --------------- | --------------- |
764e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
765e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
766e41f4b71Sopenharmony_ci
767e41f4b71Sopenharmony_ci**示例:**
768e41f4b71Sopenharmony_ci
769e41f4b71Sopenharmony_ci```ts
770e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
771e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
772e41f4b71Sopenharmony_ci
773e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
774e41f4b71Sopenharmony_ci// 设备上已有设备证书的情况下不需要调用
775e41f4b71Sopenharmony_cimediaKeySystem.generateKeySystemRequest().then((ProvisionRequest: drm.ProvisionRequest) => {
776e41f4b71Sopenharmony_ci  console.log("generateKeySystemRequest");
777e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
778e41f4b71Sopenharmony_ci  console.error(`generateKeySystemRequest: ERROR: ${err}`);
779e41f4b71Sopenharmony_ci});
780e41f4b71Sopenharmony_ci```
781e41f4b71Sopenharmony_ci
782e41f4b71Sopenharmony_ci### processKeySystemResponse
783e41f4b71Sopenharmony_ci
784e41f4b71Sopenharmony_ciprocessKeySystemResponse(response: Uint8Array): Promise<void\>
785e41f4b71Sopenharmony_ci
786e41f4b71Sopenharmony_ci处理获得的设备证书请求的响应。
787e41f4b71Sopenharmony_ci
788e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
789e41f4b71Sopenharmony_ci
790e41f4b71Sopenharmony_ci**参数:**
791e41f4b71Sopenharmony_ci
792e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
793e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
794e41f4b71Sopenharmony_ci| response  | Uint8Array     | 是   | 设备证书响应。                   |
795e41f4b71Sopenharmony_ci
796e41f4b71Sopenharmony_ci**返回值:**
797e41f4b71Sopenharmony_ci
798e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
799e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
800e41f4b71Sopenharmony_ci| Promise<void\>          | Promise对象。                   |
801e41f4b71Sopenharmony_ci
802e41f4b71Sopenharmony_ci**错误码:**
803e41f4b71Sopenharmony_ci
804e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
805e41f4b71Sopenharmony_ci
806e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
807e41f4b71Sopenharmony_ci| --------------- | --------------- |
808e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.         |
809e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
810e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
811e41f4b71Sopenharmony_ci
812e41f4b71Sopenharmony_ci**示例:**
813e41f4b71Sopenharmony_ci
814e41f4b71Sopenharmony_ci```ts
815e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
816e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
817e41f4b71Sopenharmony_ci
818e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
819e41f4b71Sopenharmony_ci// keySystemResponse是从DRM服务获取的设备证书响应,请按实际值传入;
820e41f4b71Sopenharmony_cilet keySystemResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
821e41f4b71Sopenharmony_cimediaKeySystem.processKeySystemResponse(keySystemResponse).then(() => {
822e41f4b71Sopenharmony_ci  console.log("processKeySystemResponse");
823e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
824e41f4b71Sopenharmony_ci  console.error(`processKeySystemResponse: ERROR: ${err}`);
825e41f4b71Sopenharmony_ci});
826e41f4b71Sopenharmony_ci```
827e41f4b71Sopenharmony_ci
828e41f4b71Sopenharmony_ci### getCertificateStatus
829e41f4b71Sopenharmony_ci
830e41f4b71Sopenharmony_cigetCertificateStatus():CertificateStatus
831e41f4b71Sopenharmony_ci
832e41f4b71Sopenharmony_ci获取设备证书状态值。
833e41f4b71Sopenharmony_ci
834e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
835e41f4b71Sopenharmony_ci
836e41f4b71Sopenharmony_ci**返回值:**
837e41f4b71Sopenharmony_ci
838e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
839e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
840e41f4b71Sopenharmony_ci| [CertificateStatus](#certificatestatus)          | 设备证书状态值。                   |
841e41f4b71Sopenharmony_ci
842e41f4b71Sopenharmony_ci**错误码:**
843e41f4b71Sopenharmony_ci
844e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
845e41f4b71Sopenharmony_ci
846e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
847e41f4b71Sopenharmony_ci| --------------- | --------------- |
848e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
849e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
850e41f4b71Sopenharmony_ci
851e41f4b71Sopenharmony_ci**示例:**
852e41f4b71Sopenharmony_ci
853e41f4b71Sopenharmony_ci```ts
854e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
855e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
856e41f4b71Sopenharmony_ci
857e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
858e41f4b71Sopenharmony_citry {
859e41f4b71Sopenharmony_ci  let certificateStatus: drm.CertificateStatus = mediaKeySystem.getCertificateStatus();
860e41f4b71Sopenharmony_ci} catch (err) {
861e41f4b71Sopenharmony_ci  let error = err as BusinessError;
862e41f4b71Sopenharmony_ci  console.error(`getCertificateStatus ERROR: ${error}`);
863e41f4b71Sopenharmony_ci}
864e41f4b71Sopenharmony_ci```
865e41f4b71Sopenharmony_ci
866e41f4b71Sopenharmony_ci### on('keySystemRequired')
867e41f4b71Sopenharmony_ci
868e41f4b71Sopenharmony_cion(type: 'keySystemRequired', callback: (eventInfo: EventInfo) => void): void
869e41f4b71Sopenharmony_ci
870e41f4b71Sopenharmony_ci监听设备证书请求事件,获取事件信息。
871e41f4b71Sopenharmony_ci
872e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
873e41f4b71Sopenharmony_ci
874e41f4b71Sopenharmony_ci**参数:**
875e41f4b71Sopenharmony_ci
876e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
877e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
878e41f4b71Sopenharmony_ci| type     | string               | 是   | 事件类型,MediaKeySystem实例创建成功后可监听,需要设备证书时触发该事件。 |
879e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是   | 回调函数,返回事件信息。只要有该事件返回就证明需请求设备证书。                 |
880e41f4b71Sopenharmony_ci
881e41f4b71Sopenharmony_ci**错误码:**
882e41f4b71Sopenharmony_ci
883e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
884e41f4b71Sopenharmony_ci
885e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
886e41f4b71Sopenharmony_ci| --------------- | --------------- |
887e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.               |
888e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
889e41f4b71Sopenharmony_ci
890e41f4b71Sopenharmony_ci**示例:**
891e41f4b71Sopenharmony_ci
892e41f4b71Sopenharmony_ci```ts
893e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
894e41f4b71Sopenharmony_ci
895e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
896e41f4b71Sopenharmony_cimediaKeySystem.on('keySystemRequired', (eventInfo: drm.EventInfo) => {
897e41f4b71Sopenharmony_ci  console.log('keySystemRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
898e41f4b71Sopenharmony_ci});
899e41f4b71Sopenharmony_ci```
900e41f4b71Sopenharmony_ci
901e41f4b71Sopenharmony_ci### off('keySystemRequired')
902e41f4b71Sopenharmony_ci
903e41f4b71Sopenharmony_cioff(type: 'keySystemRequired', callback?: (eventInfo: EventInfo) => void): void
904e41f4b71Sopenharmony_ci
905e41f4b71Sopenharmony_ci注销设备证书请求事件的监听。
906e41f4b71Sopenharmony_ci
907e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
908e41f4b71Sopenharmony_ci
909e41f4b71Sopenharmony_ci**参数:**
910e41f4b71Sopenharmony_ci
911e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
912e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
913e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,MediaKeySystem实例创建成功后可监听。 |
914e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否   | 回调函数,返回事件信息。可选。                |
915e41f4b71Sopenharmony_ci
916e41f4b71Sopenharmony_ci**错误码:**
917e41f4b71Sopenharmony_ci
918e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
919e41f4b71Sopenharmony_ci
920e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
921e41f4b71Sopenharmony_ci| --------------- | --------------- |
922e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.               |
923e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
924e41f4b71Sopenharmony_ci
925e41f4b71Sopenharmony_ci**示例:**
926e41f4b71Sopenharmony_ci
927e41f4b71Sopenharmony_ci```ts
928e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
929e41f4b71Sopenharmony_cimediaKeySystem.off('keySystemRequired');
930e41f4b71Sopenharmony_ci```
931e41f4b71Sopenharmony_ci
932e41f4b71Sopenharmony_ci### createMediaKeySession
933e41f4b71Sopenharmony_ci
934e41f4b71Sopenharmony_cicreateMediaKeySession(level: ContentProtectionLevel): MediaKeySession
935e41f4b71Sopenharmony_ci
936e41f4b71Sopenharmony_ci创建指定内容保护级别的MediaKeySession实例。
937e41f4b71Sopenharmony_ci
938e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
939e41f4b71Sopenharmony_ci
940e41f4b71Sopenharmony_ci**参数:**
941e41f4b71Sopenharmony_ci
942e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
943e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
944e41f4b71Sopenharmony_ci| level  | [ContentProtectionLevel](#contentprotectionlevel)     | 是   | 内容保护级别。                   |
945e41f4b71Sopenharmony_ci
946e41f4b71Sopenharmony_ci**返回值:**
947e41f4b71Sopenharmony_ci
948e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
949e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
950e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession)          | MediaKeySession实例。                   |
951e41f4b71Sopenharmony_ci
952e41f4b71Sopenharmony_ci**错误码:**
953e41f4b71Sopenharmony_ci
954e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
955e41f4b71Sopenharmony_ci
956e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
957e41f4b71Sopenharmony_ci| --------------- | --------------- |
958e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.The param level exceeds reasonable range, please use value in ContentProtectionLevel.          |
959e41f4b71Sopenharmony_ci| 24700101                 |  All unknown errors                  |
960e41f4b71Sopenharmony_ci| 24700104                 |  Meet max MediaKeySession num limit                  |
961e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
962e41f4b71Sopenharmony_ci
963e41f4b71Sopenharmony_ci**示例:**
964e41f4b71Sopenharmony_ci
965e41f4b71Sopenharmony_ci```ts
966e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
967e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
968e41f4b71Sopenharmony_ci
969e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
970e41f4b71Sopenharmony_citry {
971e41f4b71Sopenharmony_ci  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
972e41f4b71Sopenharmony_ci} catch (err) {
973e41f4b71Sopenharmony_ci  let error = err as BusinessError;
974e41f4b71Sopenharmony_ci  console.error(`createMediaKeySession ERROR: ${error}`);
975e41f4b71Sopenharmony_ci}
976e41f4b71Sopenharmony_ci```
977e41f4b71Sopenharmony_ci
978e41f4b71Sopenharmony_ci### createMediaKeySession
979e41f4b71Sopenharmony_ci
980e41f4b71Sopenharmony_cicreateMediaKeySession(): MediaKeySession
981e41f4b71Sopenharmony_ci
982e41f4b71Sopenharmony_ci创建DRM解决方案默认内容保护级别的MediaKeySession实例。
983e41f4b71Sopenharmony_ci
984e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
985e41f4b71Sopenharmony_ci
986e41f4b71Sopenharmony_ci**返回值:**
987e41f4b71Sopenharmony_ci
988e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
989e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
990e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession)          | MediaKeySession实例。                   |
991e41f4b71Sopenharmony_ci
992e41f4b71Sopenharmony_ci**错误码:**
993e41f4b71Sopenharmony_ci
994e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
995e41f4b71Sopenharmony_ci
996e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
997e41f4b71Sopenharmony_ci| --------------- | --------------- |
998e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
999e41f4b71Sopenharmony_ci| 24700104                 |  Meet max MediaKeySession num limit                  |
1000e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1001e41f4b71Sopenharmony_ci
1002e41f4b71Sopenharmony_ci**示例:**
1003e41f4b71Sopenharmony_ci
1004e41f4b71Sopenharmony_ci```ts
1005e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1006e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1007e41f4b71Sopenharmony_ci
1008e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1009e41f4b71Sopenharmony_citry {
1010e41f4b71Sopenharmony_ci  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1011e41f4b71Sopenharmony_ci} catch (err) {
1012e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1013e41f4b71Sopenharmony_ci  console.error(`createMediaKeySession ERROR: ${error}`);
1014e41f4b71Sopenharmony_ci}
1015e41f4b71Sopenharmony_ci```
1016e41f4b71Sopenharmony_ci
1017e41f4b71Sopenharmony_ci### getOfflineMediaKeyIds
1018e41f4b71Sopenharmony_ci
1019e41f4b71Sopenharmony_cigetOfflineMediaKeyIds(): Uint8Array[]
1020e41f4b71Sopenharmony_ci
1021e41f4b71Sopenharmony_ci获取离线媒体密钥标识列表。
1022e41f4b71Sopenharmony_ci
1023e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1024e41f4b71Sopenharmony_ci
1025e41f4b71Sopenharmony_ci
1026e41f4b71Sopenharmony_ci**返回值:**
1027e41f4b71Sopenharmony_ci
1028e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1029e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1030e41f4b71Sopenharmony_ci| Uint8Array[]          | 离线媒体密钥标识列表。                   |
1031e41f4b71Sopenharmony_ci
1032e41f4b71Sopenharmony_ci**错误码:**
1033e41f4b71Sopenharmony_ci
1034e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1035e41f4b71Sopenharmony_ci
1036e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1037e41f4b71Sopenharmony_ci| --------------- | --------------- |
1038e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1039e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1040e41f4b71Sopenharmony_ci
1041e41f4b71Sopenharmony_ci**示例:**
1042e41f4b71Sopenharmony_ci
1043e41f4b71Sopenharmony_ci```ts
1044e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1045e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1046e41f4b71Sopenharmony_ci
1047e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1048e41f4b71Sopenharmony_citry {
1049e41f4b71Sopenharmony_ci  let offlineMediaKeyIds: Uint8Array[] = mediaKeySystem.getOfflineMediaKeyIds();
1050e41f4b71Sopenharmony_ci} catch (err) {
1051e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1052e41f4b71Sopenharmony_ci  console.error(`getOfflineMediaKeyIds ERROR: ${error}`);
1053e41f4b71Sopenharmony_ci}
1054e41f4b71Sopenharmony_ci```
1055e41f4b71Sopenharmony_ci
1056e41f4b71Sopenharmony_ci### getOfflineMediaKeyStatus
1057e41f4b71Sopenharmony_ci
1058e41f4b71Sopenharmony_cigetOfflineMediaKeyStatus(mediaKeyId: Uint8Array): OfflineMediaKeyStatus
1059e41f4b71Sopenharmony_ci
1060e41f4b71Sopenharmony_ci获取指定离线媒体密钥标识的媒体密钥的状态值。
1061e41f4b71Sopenharmony_ci
1062e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1063e41f4b71Sopenharmony_ci
1064e41f4b71Sopenharmony_ci**参数:**
1065e41f4b71Sopenharmony_ci
1066e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1067e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1068e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array     | 是   | 离线媒体密钥标识。                   |
1069e41f4b71Sopenharmony_ci
1070e41f4b71Sopenharmony_ci**返回值:**
1071e41f4b71Sopenharmony_ci
1072e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1073e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1074e41f4b71Sopenharmony_ci| [OfflineMediaKeyStatus](#offlinemediakeystatus)          | 离线媒体密钥状态值。                   |
1075e41f4b71Sopenharmony_ci
1076e41f4b71Sopenharmony_ci**错误码:**
1077e41f4b71Sopenharmony_ci
1078e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1079e41f4b71Sopenharmony_ci
1080e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1081e41f4b71Sopenharmony_ci| --------------- | --------------- |
1082e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1083e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1084e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1085e41f4b71Sopenharmony_ci
1086e41f4b71Sopenharmony_ci**示例:**
1087e41f4b71Sopenharmony_ci
1088e41f4b71Sopenharmony_ci```ts
1089e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1090e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1091e41f4b71Sopenharmony_ci
1092e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1093e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入
1094e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1095e41f4b71Sopenharmony_citry {
1096e41f4b71Sopenharmony_ci  let configValue: drm.OfflineMediaKeyStatus = mediaKeySystem.getOfflineMediaKeyStatus(mediaKeyId);
1097e41f4b71Sopenharmony_ci} catch (err) {
1098e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1099e41f4b71Sopenharmony_ci  console.error(`getOfflineMediaKeyStatus ERROR: ${error}`);
1100e41f4b71Sopenharmony_ci}
1101e41f4b71Sopenharmony_ci```
1102e41f4b71Sopenharmony_ci
1103e41f4b71Sopenharmony_ci### clearOfflineMediaKeys
1104e41f4b71Sopenharmony_ci
1105e41f4b71Sopenharmony_ciclearOfflineMediaKeys(mediaKeyId: Uint8Array): void
1106e41f4b71Sopenharmony_ci
1107e41f4b71Sopenharmony_ci删除指定媒体密钥标识的离线媒体密钥。
1108e41f4b71Sopenharmony_ci
1109e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1110e41f4b71Sopenharmony_ci
1111e41f4b71Sopenharmony_ci**参数:**
1112e41f4b71Sopenharmony_ci
1113e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1114e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1115e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array     | 是   | 离线媒体密钥标识。            |
1116e41f4b71Sopenharmony_ci
1117e41f4b71Sopenharmony_ci**错误码:**
1118e41f4b71Sopenharmony_ci
1119e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1120e41f4b71Sopenharmony_ci
1121e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1122e41f4b71Sopenharmony_ci| --------------- | --------------- |
1123e41f4b71Sopenharmony_ci| 401                |  The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.           |
1124e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1125e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1126e41f4b71Sopenharmony_ci
1127e41f4b71Sopenharmony_ci**示例:**
1128e41f4b71Sopenharmony_ci
1129e41f4b71Sopenharmony_ci```ts
1130e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1131e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1132e41f4b71Sopenharmony_ci
1133e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1134e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入
1135e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1136e41f4b71Sopenharmony_citry {
1137e41f4b71Sopenharmony_ci  mediaKeySystem.clearOfflineMediaKeys(mediaKeyId);
1138e41f4b71Sopenharmony_ci} catch (err) {
1139e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1140e41f4b71Sopenharmony_ci  console.error(`clearOfflineMediaKeys ERROR: ${error}`);
1141e41f4b71Sopenharmony_ci}
1142e41f4b71Sopenharmony_ci```
1143e41f4b71Sopenharmony_ci
1144e41f4b71Sopenharmony_ci### destroy
1145e41f4b71Sopenharmony_ci
1146e41f4b71Sopenharmony_cidestroy(): void
1147e41f4b71Sopenharmony_ci
1148e41f4b71Sopenharmony_ci销毁MediaKeySystem实例。
1149e41f4b71Sopenharmony_ci
1150e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1151e41f4b71Sopenharmony_ci
1152e41f4b71Sopenharmony_ci**错误码:**
1153e41f4b71Sopenharmony_ci
1154e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1155e41f4b71Sopenharmony_ci
1156e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1157e41f4b71Sopenharmony_ci| --------------- | --------------- |
1158e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1159e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1160e41f4b71Sopenharmony_ci
1161e41f4b71Sopenharmony_ci**示例:**
1162e41f4b71Sopenharmony_ci
1163e41f4b71Sopenharmony_ci```ts
1164e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1165e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1166e41f4b71Sopenharmony_ci
1167e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1168e41f4b71Sopenharmony_citry {
1169e41f4b71Sopenharmony_ci  mediaKeySystem.destroy();
1170e41f4b71Sopenharmony_ci} catch (err) {
1171e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1172e41f4b71Sopenharmony_ci  console.error(`mediaKeySystem destroy ERROR: ${error}`);
1173e41f4b71Sopenharmony_ci}
1174e41f4b71Sopenharmony_ci```
1175e41f4b71Sopenharmony_ci
1176e41f4b71Sopenharmony_ci## MediaKeySession
1177e41f4b71Sopenharmony_ci支持媒体密钥管理。在调用MediaKeySession方法之前,必须使用[createMediaKeySession](#createmediakeysession)获取一个MediaKeySession实例。
1178e41f4b71Sopenharmony_ci
1179e41f4b71Sopenharmony_ci### generateMediaKeyRequest
1180e41f4b71Sopenharmony_ci
1181e41f4b71Sopenharmony_cigenerateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediaKeyType: number, options?: OptionsData[]): Promise<MediaKeyRequest\>
1182e41f4b71Sopenharmony_ci
1183e41f4b71Sopenharmony_ci生成媒体密钥请求。
1184e41f4b71Sopenharmony_ci
1185e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1186e41f4b71Sopenharmony_ci
1187e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1188e41f4b71Sopenharmony_ci
1189e41f4b71Sopenharmony_ci**参数:**
1190e41f4b71Sopenharmony_ci
1191e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1192e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1193e41f4b71Sopenharmony_ci| mimeType  | string     | 是   | 媒体类型,由DRM解决方案决定具体的支持类型。                   |
1194e41f4b71Sopenharmony_ci| initData  | Uint8Array     | 是   | 初始数据。                   |
1195e41f4b71Sopenharmony_ci| mediaKeyType| number     | 是   | 媒体密钥类型。                   | 0表示在线,1表示离线 |
1196e41f4b71Sopenharmony_ci| options  | [OptionsData[]](#optionsdata)     | 否   | 可选数据。                   |
1197e41f4b71Sopenharmony_ci
1198e41f4b71Sopenharmony_ci**返回值:**
1199e41f4b71Sopenharmony_ci
1200e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1201e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1202e41f4b71Sopenharmony_ci| Promise<[MediaKeyRequest](#mediakeyrequest)\>          | Promise对象,媒体密钥请求。                   |
1203e41f4b71Sopenharmony_ci
1204e41f4b71Sopenharmony_ci**错误码:**
1205e41f4b71Sopenharmony_ci
1206e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1207e41f4b71Sopenharmony_ci
1208e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1209e41f4b71Sopenharmony_ci| --------------- | --------------- |
1210e41f4b71Sopenharmony_ci| 401                | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.              |
1211e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1212e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1213e41f4b71Sopenharmony_ci
1214e41f4b71Sopenharmony_ci**示例:**
1215e41f4b71Sopenharmony_ci
1216e41f4b71Sopenharmony_ci```ts
1217e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1218e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1219e41f4b71Sopenharmony_ci
1220e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1221e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1222e41f4b71Sopenharmony_ci// pssh数据为版权保护系统描述头,封装在加密码流中,mp4文件中位于pssh box、dash码流中位于mpd及mp4的pssh box、hls+ts的码流位于m3u8及每个ts片段中,请按实际值传入
1223e41f4b71Sopenharmony_cilet uint8pssh = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1224e41f4b71Sopenharmony_cimediaKeySession.generateMediaKeyRequest("video/avc", uint8pssh, drm.MediaKeyType.MEDIA_KEY_TYPE_ONLINE).then((mediaKeyRequest: drm.MediaKeyRequest) =>{
1225e41f4b71Sopenharmony_ci  console.log('generateMediaKeyRequest' + mediaKeyRequest);
1226e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1227e41f4b71Sopenharmony_ci  console.error(`generateMediaKeyRequest: ERROR: ${err}`);
1228e41f4b71Sopenharmony_ci});
1229e41f4b71Sopenharmony_ci```
1230e41f4b71Sopenharmony_ci
1231e41f4b71Sopenharmony_ci### processMediaKeyResponse
1232e41f4b71Sopenharmony_ci
1233e41f4b71Sopenharmony_ciprocessMediaKeyResponse(response: Uint8Array): Promise<Uint8Array\>
1234e41f4b71Sopenharmony_ci
1235e41f4b71Sopenharmony_ci处理媒体密钥响应。
1236e41f4b71Sopenharmony_ci
1237e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1238e41f4b71Sopenharmony_ci
1239e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1240e41f4b71Sopenharmony_ci
1241e41f4b71Sopenharmony_ci**参数:**
1242e41f4b71Sopenharmony_ci
1243e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1244e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1245e41f4b71Sopenharmony_ci| response  | Uint8Array     | 是   | 媒体密钥响应。                   |
1246e41f4b71Sopenharmony_ci
1247e41f4b71Sopenharmony_ci**返回值:**
1248e41f4b71Sopenharmony_ci
1249e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1250e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1251e41f4b71Sopenharmony_ci| Promise<Uint8Array\>          | Promise对象,媒体密钥标识。                   |
1252e41f4b71Sopenharmony_ci
1253e41f4b71Sopenharmony_ci**错误码:**
1254e41f4b71Sopenharmony_ci
1255e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1256e41f4b71Sopenharmony_ci
1257e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1258e41f4b71Sopenharmony_ci| --------------- | --------------- |
1259e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1260e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1261e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1262e41f4b71Sopenharmony_ci
1263e41f4b71Sopenharmony_ci**示例:**
1264e41f4b71Sopenharmony_ci
1265e41f4b71Sopenharmony_ci```ts
1266e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1267e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1268e41f4b71Sopenharmony_ci
1269e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1270e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1271e41f4b71Sopenharmony_ci// mediaKeyResponse是从DRM服务获取的媒体密钥响应,按实际值填入
1272e41f4b71Sopenharmony_cilet mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1273e41f4b71Sopenharmony_cimediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => {
1274e41f4b71Sopenharmony_ci  console.log('processMediaKeyResponse:' + mediaKeyId);
1275e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1276e41f4b71Sopenharmony_ci  console.error(`processMediaKeyResponse: ERROR: ${err}`);
1277e41f4b71Sopenharmony_ci});
1278e41f4b71Sopenharmony_ci```
1279e41f4b71Sopenharmony_ci
1280e41f4b71Sopenharmony_ci### checkMediaKeyStatus
1281e41f4b71Sopenharmony_ci
1282e41f4b71Sopenharmony_ci checkMediaKeyStatus(): MediaKeyStatus[]
1283e41f4b71Sopenharmony_ci
1284e41f4b71Sopenharmony_ci检查当前媒体密钥状态。
1285e41f4b71Sopenharmony_ci
1286e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1287e41f4b71Sopenharmony_ci
1288e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1289e41f4b71Sopenharmony_ci
1290e41f4b71Sopenharmony_ci**返回值:**
1291e41f4b71Sopenharmony_ci
1292e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1293e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1294e41f4b71Sopenharmony_ci| [MediaKeyStatus[]](#mediakeystatus)          | 当前媒体密钥状态值。                   |
1295e41f4b71Sopenharmony_ci
1296e41f4b71Sopenharmony_ci**错误码:**
1297e41f4b71Sopenharmony_ci
1298e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1299e41f4b71Sopenharmony_ci
1300e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1301e41f4b71Sopenharmony_ci| --------------- | --------------- |
1302e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1303e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1304e41f4b71Sopenharmony_ci
1305e41f4b71Sopenharmony_ci**示例:**
1306e41f4b71Sopenharmony_ci
1307e41f4b71Sopenharmony_ci```ts
1308e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1309e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1310e41f4b71Sopenharmony_ci
1311e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1312e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1313e41f4b71Sopenharmony_citry {
1314e41f4b71Sopenharmony_ci  let keyStatus: drm.MediaKeyStatus[] =  mediaKeySession.checkMediaKeyStatus();
1315e41f4b71Sopenharmony_ci} catch (err) {
1316e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1317e41f4b71Sopenharmony_ci  console.error(`checkMediaKeyStatus ERROR: ${error}`);
1318e41f4b71Sopenharmony_ci}
1319e41f4b71Sopenharmony_ci```
1320e41f4b71Sopenharmony_ci
1321e41f4b71Sopenharmony_ci### clearMediaKeys
1322e41f4b71Sopenharmony_ci
1323e41f4b71Sopenharmony_ciclearMediaKeys(): void
1324e41f4b71Sopenharmony_ci
1325e41f4b71Sopenharmony_ci清除当前媒体密钥。
1326e41f4b71Sopenharmony_ci
1327e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1328e41f4b71Sopenharmony_ci
1329e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1330e41f4b71Sopenharmony_ci
1331e41f4b71Sopenharmony_ci**错误码:**
1332e41f4b71Sopenharmony_ci
1333e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1334e41f4b71Sopenharmony_ci
1335e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1336e41f4b71Sopenharmony_ci| --------------- | --------------- |
1337e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1338e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1339e41f4b71Sopenharmony_ci
1340e41f4b71Sopenharmony_ci**示例:**
1341e41f4b71Sopenharmony_ci
1342e41f4b71Sopenharmony_ci```ts
1343e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1344e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1345e41f4b71Sopenharmony_ci
1346e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1347e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1348e41f4b71Sopenharmony_ci// mediaKeyResponse是从DRM服务获取的媒体密钥响应,按实际值填入
1349e41f4b71Sopenharmony_cilet mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1350e41f4b71Sopenharmony_cimediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => {
1351e41f4b71Sopenharmony_ci  console.log('processMediaKeyResponse:' + mediaKeyId);
1352e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1353e41f4b71Sopenharmony_ci  console.error(`processMediaKeyResponse: ERROR: ${err}`);
1354e41f4b71Sopenharmony_ci});
1355e41f4b71Sopenharmony_citry {
1356e41f4b71Sopenharmony_ci  mediaKeySession.clearMediaKeys();
1357e41f4b71Sopenharmony_ci} catch (err) {
1358e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1359e41f4b71Sopenharmony_ci  console.error(`clearMediaKeys ERROR: ${error}`);
1360e41f4b71Sopenharmony_ci}
1361e41f4b71Sopenharmony_ci```
1362e41f4b71Sopenharmony_ci
1363e41f4b71Sopenharmony_ci### generateOfflineReleaseRequest
1364e41f4b71Sopenharmony_ci
1365e41f4b71Sopenharmony_cigenerateOfflineReleaseRequest(mediaKeyId: Uint8Array): Promise<Uint8Array\>
1366e41f4b71Sopenharmony_ci
1367e41f4b71Sopenharmony_ci生成离线媒体密钥释放请求。
1368e41f4b71Sopenharmony_ci
1369e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1370e41f4b71Sopenharmony_ci
1371e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1372e41f4b71Sopenharmony_ci
1373e41f4b71Sopenharmony_ci**参数:**
1374e41f4b71Sopenharmony_ci
1375e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1377e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array    | 是   | 离线媒体密钥标识                   |
1378e41f4b71Sopenharmony_ci
1379e41f4b71Sopenharmony_ci**返回值:**
1380e41f4b71Sopenharmony_ci
1381e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1382e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1383e41f4b71Sopenharmony_ci| Promise<Uint8Array\>          | Promise对象,设备上的DRM解决方案支持离线媒体密钥释放处理,则返回离线媒体密钥释放请求。                   |
1384e41f4b71Sopenharmony_ci
1385e41f4b71Sopenharmony_ci**错误码:**
1386e41f4b71Sopenharmony_ci
1387e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1388e41f4b71Sopenharmony_ci
1389e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1390e41f4b71Sopenharmony_ci| --------------- | --------------- |
1391e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.         |
1392e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1393e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1394e41f4b71Sopenharmony_ci
1395e41f4b71Sopenharmony_ci**示例:**
1396e41f4b71Sopenharmony_ci
1397e41f4b71Sopenharmony_ci```ts
1398e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1399e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1400e41f4b71Sopenharmony_ci
1401e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1402e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1403e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入
1404e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1405e41f4b71Sopenharmony_cimediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => {
1406e41f4b71Sopenharmony_ci  console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest);
1407e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1408e41f4b71Sopenharmony_ci  console.error(`generateOfflineReleaseRequest: ERROR: ${err}`);
1409e41f4b71Sopenharmony_ci});
1410e41f4b71Sopenharmony_ci```
1411e41f4b71Sopenharmony_ci
1412e41f4b71Sopenharmony_ci### processOfflineReleaseResponse
1413e41f4b71Sopenharmony_ci
1414e41f4b71Sopenharmony_ciprocessOfflineReleaseResponse(mediaKeyId: Uint8Array, response: Uint8Array): Promise<void\>
1415e41f4b71Sopenharmony_ci
1416e41f4b71Sopenharmony_ci处理离线媒体密钥释放响应。
1417e41f4b71Sopenharmony_ci
1418e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1419e41f4b71Sopenharmony_ci
1420e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1421e41f4b71Sopenharmony_ci
1422e41f4b71Sopenharmony_ci**参数:**
1423e41f4b71Sopenharmony_ci
1424e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1425e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1426e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array     | 是   | 离线媒体密钥标识。                   |
1427e41f4b71Sopenharmony_ci| response  | Uint8Array     | 是   | 离线媒体密钥释放响应。                   |
1428e41f4b71Sopenharmony_ci
1429e41f4b71Sopenharmony_ci**返回值:**
1430e41f4b71Sopenharmony_ci
1431e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1432e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1433e41f4b71Sopenharmony_ci| Promise<void\>          | Promise对象,设备上的DRM解决方案支持离线媒体密钥释放处理,则返回。                   |
1434e41f4b71Sopenharmony_ci
1435e41f4b71Sopenharmony_ci**错误码:**
1436e41f4b71Sopenharmony_ci
1437e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1438e41f4b71Sopenharmony_ci
1439e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1440e41f4b71Sopenharmony_ci| --------------- | --------------- |
1441e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1442e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1443e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1444e41f4b71Sopenharmony_ci
1445e41f4b71Sopenharmony_ci**示例:**
1446e41f4b71Sopenharmony_ci
1447e41f4b71Sopenharmony_ci```ts
1448e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1449e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1450e41f4b71Sopenharmony_ci
1451e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1452e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1453e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际长度申请内存
1454e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1455e41f4b71Sopenharmony_cimediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => {
1456e41f4b71Sopenharmony_ci  console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest);
1457e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1458e41f4b71Sopenharmony_ci  console.error(`generateOfflineReleaseRequest: ERROR: ${err}`);
1459e41f4b71Sopenharmony_ci});
1460e41f4b71Sopenharmony_ci// offlineReleaseResponse是从DRM服务获取的离线媒体密钥释放响应,请按实际长度申请内存
1461e41f4b71Sopenharmony_cilet offlineReleaseResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1462e41f4b71Sopenharmony_cimediaKeySession.processOfflineReleaseResponse(mediaKeyId, offlineReleaseResponse).then(() => {
1463e41f4b71Sopenharmony_ci  console.log('processOfflineReleaseResponse');
1464e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1465e41f4b71Sopenharmony_ci  console.error(`processOfflineReleaseResponse: ERROR: ${err}`);
1466e41f4b71Sopenharmony_ci});
1467e41f4b71Sopenharmony_ci```
1468e41f4b71Sopenharmony_ci
1469e41f4b71Sopenharmony_ci### restoreOfflineMediaKeys
1470e41f4b71Sopenharmony_ci
1471e41f4b71Sopenharmony_cirestoreOfflineMediaKeys(mediaKeyId: Uint8Array): Promise<void\>
1472e41f4b71Sopenharmony_ci
1473e41f4b71Sopenharmony_ci恢复离线媒体密钥。
1474e41f4b71Sopenharmony_ci
1475e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1476e41f4b71Sopenharmony_ci
1477e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1478e41f4b71Sopenharmony_ci
1479e41f4b71Sopenharmony_ci**参数:**
1480e41f4b71Sopenharmony_ci
1481e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1482e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1483e41f4b71Sopenharmony_ci| mediaKeyId  | Uint8Array     | 是   | 离线媒体密钥标识。                   |
1484e41f4b71Sopenharmony_ci
1485e41f4b71Sopenharmony_ci**返回值:**
1486e41f4b71Sopenharmony_ci
1487e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1488e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1489e41f4b71Sopenharmony_ci| Promise<void\>          | Promise对象。                   |
1490e41f4b71Sopenharmony_ci
1491e41f4b71Sopenharmony_ci**错误码:**
1492e41f4b71Sopenharmony_ci
1493e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1494e41f4b71Sopenharmony_ci
1495e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1496e41f4b71Sopenharmony_ci| --------------- | --------------- |
1497e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.              |
1498e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1499e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1500e41f4b71Sopenharmony_ci
1501e41f4b71Sopenharmony_ci**示例:**
1502e41f4b71Sopenharmony_ci
1503e41f4b71Sopenharmony_ci```ts
1504e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1505e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1506e41f4b71Sopenharmony_ci
1507e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1508e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1509e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际数据传入
1510e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
1511e41f4b71Sopenharmony_cimediaKeySession.restoreOfflineMediaKeys(mediaKeyId).then(() => {
1512e41f4b71Sopenharmony_ci  console.log("restoreOfflineMediaKeys");
1513e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1514e41f4b71Sopenharmony_ci  console.error(`restoreOfflineMediaKeys: ERROR: ${err}`);
1515e41f4b71Sopenharmony_ci});
1516e41f4b71Sopenharmony_ci```
1517e41f4b71Sopenharmony_ci
1518e41f4b71Sopenharmony_ci### getContentProtectionLevel
1519e41f4b71Sopenharmony_ci
1520e41f4b71Sopenharmony_cigetContentProtectionLevel(): ContentProtectionLevel
1521e41f4b71Sopenharmony_ci
1522e41f4b71Sopenharmony_ci获取当前会话的内容保护级别。
1523e41f4b71Sopenharmony_ci
1524e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1525e41f4b71Sopenharmony_ci
1526e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1527e41f4b71Sopenharmony_ci
1528e41f4b71Sopenharmony_ci**返回值:**
1529e41f4b71Sopenharmony_ci
1530e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1531e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1532e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel)          | 返回当前会话内容保护级别。                   |
1533e41f4b71Sopenharmony_ci
1534e41f4b71Sopenharmony_ci**错误码:**
1535e41f4b71Sopenharmony_ci
1536e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1537e41f4b71Sopenharmony_ci
1538e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1539e41f4b71Sopenharmony_ci| --------------- | --------------- |
1540e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1541e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1542e41f4b71Sopenharmony_ci
1543e41f4b71Sopenharmony_ci**示例:**
1544e41f4b71Sopenharmony_ci
1545e41f4b71Sopenharmony_ci```ts
1546e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1547e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1548e41f4b71Sopenharmony_ci
1549e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1550e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1551e41f4b71Sopenharmony_citry {
1552e41f4b71Sopenharmony_ci  let contentProtectionLevel: drm.ContentProtectionLevel = mediaKeySession.getContentProtectionLevel();
1553e41f4b71Sopenharmony_ci} catch (err) {
1554e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1555e41f4b71Sopenharmony_ci  console.error(`getContentProtectionLevel ERROR: ${error}`);
1556e41f4b71Sopenharmony_ci}
1557e41f4b71Sopenharmony_ci```
1558e41f4b71Sopenharmony_ci
1559e41f4b71Sopenharmony_ci### requireSecureDecoderModule
1560e41f4b71Sopenharmony_ci
1561e41f4b71Sopenharmony_cirequireSecureDecoderModule(mimeType: string): boolean
1562e41f4b71Sopenharmony_ci
1563e41f4b71Sopenharmony_ci是否需要安全解码。
1564e41f4b71Sopenharmony_ci
1565e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1566e41f4b71Sopenharmony_ci
1567e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1568e41f4b71Sopenharmony_ci
1569e41f4b71Sopenharmony_ci**参数:**
1570e41f4b71Sopenharmony_ci
1571e41f4b71Sopenharmony_ci| 参数名     | 类型                                             | 必填 | 说明                           |
1572e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- |
1573e41f4b71Sopenharmony_ci| mimeType  | string     | 是   | 媒体类型,由DRM解决方案决定具体的支持类型。                   |
1574e41f4b71Sopenharmony_ci
1575e41f4b71Sopenharmony_ci**返回值:**
1576e41f4b71Sopenharmony_ci
1577e41f4b71Sopenharmony_ci| 类型                                             | 说明                           |
1578e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- |
1579e41f4b71Sopenharmony_ci| boolean          | 是否需要安全解码,true表示需要安全解码,false表示不需要安全解码。                   |
1580e41f4b71Sopenharmony_ci
1581e41f4b71Sopenharmony_ci**错误码:**
1582e41f4b71Sopenharmony_ci
1583e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1584e41f4b71Sopenharmony_ci
1585e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1586e41f4b71Sopenharmony_ci| --------------- | --------------- |
1587e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.      |
1588e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1589e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1590e41f4b71Sopenharmony_ci
1591e41f4b71Sopenharmony_ci**示例:**
1592e41f4b71Sopenharmony_ci
1593e41f4b71Sopenharmony_ci```ts
1594e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1595e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1596e41f4b71Sopenharmony_ci
1597e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1598e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1599e41f4b71Sopenharmony_citry {
1600e41f4b71Sopenharmony_ci  let status: boolean = mediaKeySession.requireSecureDecoderModule("video/avc");
1601e41f4b71Sopenharmony_ci} catch (err) {
1602e41f4b71Sopenharmony_ci  let error = err as BusinessError;
1603e41f4b71Sopenharmony_ci  console.error(`requireSecureDecoderModule ERROR: ${error}`);
1604e41f4b71Sopenharmony_ci} 
1605e41f4b71Sopenharmony_ci```
1606e41f4b71Sopenharmony_ci
1607e41f4b71Sopenharmony_ci### on('keyRequired')
1608e41f4b71Sopenharmony_ci
1609e41f4b71Sopenharmony_cion(type: 'keyRequired', callback: (eventInfo: EventInfo) => void): void
1610e41f4b71Sopenharmony_ci
1611e41f4b71Sopenharmony_ci监听密钥请求事件。
1612e41f4b71Sopenharmony_ci
1613e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1614e41f4b71Sopenharmony_ci
1615e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1616e41f4b71Sopenharmony_ci
1617e41f4b71Sopenharmony_ci**参数:**
1618e41f4b71Sopenharmony_ci
1619e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1620e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1621e41f4b71Sopenharmony_ci| type     | string               | 是   | 事件类型,固定为'keyRequired',当播放DRM节目需要获取媒体密钥时触发。 |
1622e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是   | 回调函数,返回事件信息。                 |
1623e41f4b71Sopenharmony_ci
1624e41f4b71Sopenharmony_ci**错误码:**
1625e41f4b71Sopenharmony_ci
1626e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1627e41f4b71Sopenharmony_ci
1628e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1629e41f4b71Sopenharmony_ci| --------------- | --------------- |
1630e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.         |
1631e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1632e41f4b71Sopenharmony_ci
1633e41f4b71Sopenharmony_ci**示例:**
1634e41f4b71Sopenharmony_ci
1635e41f4b71Sopenharmony_ci```ts
1636e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1637e41f4b71Sopenharmony_ci
1638e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1639e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1640e41f4b71Sopenharmony_cimediaKeySession.on('keyRequired', (eventInfo: drm.EventInfo) => {
1641e41f4b71Sopenharmony_ci  console.log('keyRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1642e41f4b71Sopenharmony_ci});
1643e41f4b71Sopenharmony_ci```
1644e41f4b71Sopenharmony_ci
1645e41f4b71Sopenharmony_ci### off('keyRequired')
1646e41f4b71Sopenharmony_ci
1647e41f4b71Sopenharmony_cioff(type: 'keyRequired', callback?: (eventInfo: EventInfo) => void): void
1648e41f4b71Sopenharmony_ci
1649e41f4b71Sopenharmony_ci注销密钥请求事件监听。
1650e41f4b71Sopenharmony_ci
1651e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1652e41f4b71Sopenharmony_ci
1653e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1654e41f4b71Sopenharmony_ci
1655e41f4b71Sopenharmony_ci**参数:**
1656e41f4b71Sopenharmony_ci
1657e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1658e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1659e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'keyRequired'。 |
1660e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否   | 回调函数,返回事件信息。可选。                |
1661e41f4b71Sopenharmony_ci
1662e41f4b71Sopenharmony_ci**错误码:**
1663e41f4b71Sopenharmony_ci
1664e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1665e41f4b71Sopenharmony_ci
1666e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1667e41f4b71Sopenharmony_ci| --------------- | --------------- |
1668e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.             |
1669e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1670e41f4b71Sopenharmony_ci
1671e41f4b71Sopenharmony_ci**示例:**
1672e41f4b71Sopenharmony_ci
1673e41f4b71Sopenharmony_ci```ts
1674e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1675e41f4b71Sopenharmony_ci
1676e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1677e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1678e41f4b71Sopenharmony_cimediaKeySession.off('keyRequired');
1679e41f4b71Sopenharmony_ci```
1680e41f4b71Sopenharmony_ci
1681e41f4b71Sopenharmony_ci### on('keyExpired')
1682e41f4b71Sopenharmony_ci
1683e41f4b71Sopenharmony_cion(type: 'keyExpired', callback: (eventInfo: EventInfo) => void): void
1684e41f4b71Sopenharmony_ci
1685e41f4b71Sopenharmony_ci监听密钥过期事件。
1686e41f4b71Sopenharmony_ci
1687e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1688e41f4b71Sopenharmony_ci
1689e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1690e41f4b71Sopenharmony_ci
1691e41f4b71Sopenharmony_ci**参数:**
1692e41f4b71Sopenharmony_ci
1693e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1694e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1695e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'keyExpired'。密钥过期时触发。 |
1696e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是   | 回调函数,返回事件信息。                 |
1697e41f4b71Sopenharmony_ci
1698e41f4b71Sopenharmony_ci**错误码:**
1699e41f4b71Sopenharmony_ci
1700e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1701e41f4b71Sopenharmony_ci
1702e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1703e41f4b71Sopenharmony_ci| --------------- | --------------- |
1704e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.          |
1705e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1706e41f4b71Sopenharmony_ci
1707e41f4b71Sopenharmony_ci**示例:**
1708e41f4b71Sopenharmony_ci
1709e41f4b71Sopenharmony_ci```ts
1710e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1711e41f4b71Sopenharmony_ci
1712e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1713e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1714e41f4b71Sopenharmony_cimediaKeySession.on('keyExpired', (eventInfo: drm.EventInfo) => {
1715e41f4b71Sopenharmony_ci  console.log('keyExpired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1716e41f4b71Sopenharmony_ci});
1717e41f4b71Sopenharmony_ci```
1718e41f4b71Sopenharmony_ci
1719e41f4b71Sopenharmony_ci### off('keyExpired')
1720e41f4b71Sopenharmony_ci
1721e41f4b71Sopenharmony_cioff(type: 'keyExpired', callback?: (eventInfo: EventInfo) => void): void
1722e41f4b71Sopenharmony_ci
1723e41f4b71Sopenharmony_ci注销密钥过期事件监听。
1724e41f4b71Sopenharmony_ci
1725e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1726e41f4b71Sopenharmony_ci
1727e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1728e41f4b71Sopenharmony_ci
1729e41f4b71Sopenharmony_ci**参数:**
1730e41f4b71Sopenharmony_ci
1731e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1732e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1733e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'keyExpired'。 |
1734e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否   | 回调函数,返回事件信息。可选。                |
1735e41f4b71Sopenharmony_ci
1736e41f4b71Sopenharmony_ci**错误码:**
1737e41f4b71Sopenharmony_ci
1738e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1739e41f4b71Sopenharmony_ci
1740e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1741e41f4b71Sopenharmony_ci| --------------- | --------------- |
1742e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1743e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1744e41f4b71Sopenharmony_ci
1745e41f4b71Sopenharmony_ci**示例:**
1746e41f4b71Sopenharmony_ci
1747e41f4b71Sopenharmony_ci```ts
1748e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1749e41f4b71Sopenharmony_ci
1750e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1751e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1752e41f4b71Sopenharmony_cimediaKeySession.off('keyExpired');
1753e41f4b71Sopenharmony_ci```
1754e41f4b71Sopenharmony_ci
1755e41f4b71Sopenharmony_ci### on('vendorDefined')
1756e41f4b71Sopenharmony_ci
1757e41f4b71Sopenharmony_cion(type: 'vendorDefined', callback: (eventInfo: EventInfo) => void): void
1758e41f4b71Sopenharmony_ci
1759e41f4b71Sopenharmony_ci监听DRM解决方案自定义事件。
1760e41f4b71Sopenharmony_ci
1761e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1762e41f4b71Sopenharmony_ci
1763e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1764e41f4b71Sopenharmony_ci
1765e41f4b71Sopenharmony_ci**参数:**
1766e41f4b71Sopenharmony_ci
1767e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1768e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1769e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件,固定为'vendorDefined'。自定义事件发生时触发。 |
1770e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是   | 回调函数,返回事件信息。                 |
1771e41f4b71Sopenharmony_ci
1772e41f4b71Sopenharmony_ci**错误码:**
1773e41f4b71Sopenharmony_ci
1774e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1775e41f4b71Sopenharmony_ci
1776e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1777e41f4b71Sopenharmony_ci| --------------- | --------------- |
1778e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.              |
1779e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1780e41f4b71Sopenharmony_ci
1781e41f4b71Sopenharmony_ci**示例:**
1782e41f4b71Sopenharmony_ci
1783e41f4b71Sopenharmony_ci```ts
1784e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1785e41f4b71Sopenharmony_ci
1786e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1787e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1788e41f4b71Sopenharmony_cimediaKeySession.on('vendorDefined', (eventInfo: drm.EventInfo) => {
1789e41f4b71Sopenharmony_ci  console.log('vendorDefined ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1790e41f4b71Sopenharmony_ci});
1791e41f4b71Sopenharmony_ci```
1792e41f4b71Sopenharmony_ci
1793e41f4b71Sopenharmony_ci### off('vendorDefined')
1794e41f4b71Sopenharmony_ci
1795e41f4b71Sopenharmony_cioff(type: 'vendorDefined', callback?: (eventInfo: EventInfo) => void): void
1796e41f4b71Sopenharmony_ci
1797e41f4b71Sopenharmony_ci注销DRM解决方案自定义事件监听。
1798e41f4b71Sopenharmony_ci
1799e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1800e41f4b71Sopenharmony_ci
1801e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1802e41f4b71Sopenharmony_ci
1803e41f4b71Sopenharmony_ci**参数:**
1804e41f4b71Sopenharmony_ci
1805e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1806e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1807e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件,固定为'vendorDefined'。 |
1808e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否   | 回调函数,返回事件信息。可选。                |
1809e41f4b71Sopenharmony_ci
1810e41f4b71Sopenharmony_ci**错误码:**
1811e41f4b71Sopenharmony_ci
1812e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1813e41f4b71Sopenharmony_ci
1814e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1815e41f4b71Sopenharmony_ci| --------------- | --------------- |
1816e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.      |
1817e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1818e41f4b71Sopenharmony_ci
1819e41f4b71Sopenharmony_ci**示例:**
1820e41f4b71Sopenharmony_ci
1821e41f4b71Sopenharmony_ci```ts
1822e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1823e41f4b71Sopenharmony_ci
1824e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1825e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1826e41f4b71Sopenharmony_cimediaKeySession.off('vendorDefined');
1827e41f4b71Sopenharmony_ci```
1828e41f4b71Sopenharmony_ci
1829e41f4b71Sopenharmony_ci### on('expirationUpdate')
1830e41f4b71Sopenharmony_ci
1831e41f4b71Sopenharmony_cion(type: 'expirationUpdate', callback: (eventInfo: EventInfo) => void): void
1832e41f4b71Sopenharmony_ci
1833e41f4b71Sopenharmony_ci监听密钥过期更新事件。
1834e41f4b71Sopenharmony_ci
1835e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1836e41f4b71Sopenharmony_ci
1837e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1838e41f4b71Sopenharmony_ci
1839e41f4b71Sopenharmony_ci**参数:**
1840e41f4b71Sopenharmony_ci
1841e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1842e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1843e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'expirationUpdate'。密钥过期更新时触发。 |
1844e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是   | 回调函数,返回事件信息。                 |
1845e41f4b71Sopenharmony_ci
1846e41f4b71Sopenharmony_ci**错误码:**
1847e41f4b71Sopenharmony_ci
1848e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1849e41f4b71Sopenharmony_ci
1850e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1851e41f4b71Sopenharmony_ci| --------------- | --------------- |
1852e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.        |
1853e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1854e41f4b71Sopenharmony_ci
1855e41f4b71Sopenharmony_ci**示例:**
1856e41f4b71Sopenharmony_ci
1857e41f4b71Sopenharmony_ci```ts
1858e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1859e41f4b71Sopenharmony_ci
1860e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1861e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1862e41f4b71Sopenharmony_cimediaKeySession.on('expirationUpdate', (eventInfo: drm.EventInfo) => {
1863e41f4b71Sopenharmony_ci  console.log('expirationUpdate ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
1864e41f4b71Sopenharmony_ci});
1865e41f4b71Sopenharmony_ci```
1866e41f4b71Sopenharmony_ci
1867e41f4b71Sopenharmony_ci### off('expirationUpdate')
1868e41f4b71Sopenharmony_ci
1869e41f4b71Sopenharmony_cioff(type: 'expirationUpdate', callback?: (eventInfo: EventInfo) => void): void
1870e41f4b71Sopenharmony_ci
1871e41f4b71Sopenharmony_ci注销过期更新事件监听。
1872e41f4b71Sopenharmony_ci
1873e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1874e41f4b71Sopenharmony_ci
1875e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1876e41f4b71Sopenharmony_ci
1877e41f4b71Sopenharmony_ci**参数:**
1878e41f4b71Sopenharmony_ci
1879e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1880e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1881e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'expirationUpdate'。 |
1882e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否   | 回调函数,返回事件信息。可选。                |
1883e41f4b71Sopenharmony_ci
1884e41f4b71Sopenharmony_ci**错误码:**
1885e41f4b71Sopenharmony_ci
1886e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1887e41f4b71Sopenharmony_ci
1888e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1889e41f4b71Sopenharmony_ci| --------------- | --------------- |
1890e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.       |
1891e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1892e41f4b71Sopenharmony_ci
1893e41f4b71Sopenharmony_ci**示例:**
1894e41f4b71Sopenharmony_ci
1895e41f4b71Sopenharmony_ci```ts
1896e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1897e41f4b71Sopenharmony_ci
1898e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1899e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1900e41f4b71Sopenharmony_cimediaKeySession.off('expirationUpdate');
1901e41f4b71Sopenharmony_ci```
1902e41f4b71Sopenharmony_ci
1903e41f4b71Sopenharmony_ci### on('keysChange')
1904e41f4b71Sopenharmony_ci
1905e41f4b71Sopenharmony_cion(type: 'keysChange', callback: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void
1906e41f4b71Sopenharmony_ci
1907e41f4b71Sopenharmony_ci监听密钥变化事件。
1908e41f4b71Sopenharmony_ci
1909e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1910e41f4b71Sopenharmony_ci
1911e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1912e41f4b71Sopenharmony_ci
1913e41f4b71Sopenharmony_ci**参数:**
1914e41f4b71Sopenharmony_ci
1915e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1916e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1917e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'keysChange'。密钥变化时触发。 |
1918e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | 是   | 回调函数,返回事件信息,包含密钥标识和密钥状态描述的列表及密钥是否可用。                 |
1919e41f4b71Sopenharmony_ci
1920e41f4b71Sopenharmony_ci**错误码:**
1921e41f4b71Sopenharmony_ci
1922e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1923e41f4b71Sopenharmony_ci
1924e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1925e41f4b71Sopenharmony_ci| --------------- | --------------- |
1926e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.             |
1927e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1928e41f4b71Sopenharmony_ci
1929e41f4b71Sopenharmony_ci**示例:**
1930e41f4b71Sopenharmony_ci
1931e41f4b71Sopenharmony_ci```ts
1932e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1933e41f4b71Sopenharmony_ci
1934e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1935e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1936e41f4b71Sopenharmony_cimediaKeySession.on('keysChange', (keyInfo: drm.KeysInfo[], newKeyAvailable: boolean) => {
1937e41f4b71Sopenharmony_ci  for (let i = 0; i < keyInfo.length; i++) {
1938e41f4b71Sopenharmony_ci    console.log('keysChange' + 'keyId:' + keyInfo[i].keyId + ' data:' + keyInfo[i].value);
1939e41f4b71Sopenharmony_ci  }
1940e41f4b71Sopenharmony_ci});
1941e41f4b71Sopenharmony_ci```
1942e41f4b71Sopenharmony_ci
1943e41f4b71Sopenharmony_ci### off('keysChange')
1944e41f4b71Sopenharmony_ci
1945e41f4b71Sopenharmony_cioff(type: 'keysChange', callback?: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void
1946e41f4b71Sopenharmony_ci
1947e41f4b71Sopenharmony_ci注销密钥变化事件监听。
1948e41f4b71Sopenharmony_ci
1949e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1950e41f4b71Sopenharmony_ci
1951e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1952e41f4b71Sopenharmony_ci
1953e41f4b71Sopenharmony_ci**参数:**
1954e41f4b71Sopenharmony_ci
1955e41f4b71Sopenharmony_ci| 参数名      | 类型                  | 必填 | 说明                                  |
1956e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- |
1957e41f4b71Sopenharmony_ci| type     | string               | 是   | 监听事件类型,固定为'keysChange'。 |
1958e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | 否   | 回调函数,返回事件信息,包含密钥标识和密钥状态描述的列表及密钥是否可用。                |
1959e41f4b71Sopenharmony_ci
1960e41f4b71Sopenharmony_ci**错误码:**
1961e41f4b71Sopenharmony_ci
1962e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1963e41f4b71Sopenharmony_ci
1964e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1965e41f4b71Sopenharmony_ci| --------------- | --------------- |
1966e41f4b71Sopenharmony_ci| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed.            |
1967e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1968e41f4b71Sopenharmony_ci
1969e41f4b71Sopenharmony_ci**示例:**
1970e41f4b71Sopenharmony_ci
1971e41f4b71Sopenharmony_ci```ts
1972e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1973e41f4b71Sopenharmony_ci
1974e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
1975e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
1976e41f4b71Sopenharmony_cimediaKeySession.off('keysChange');
1977e41f4b71Sopenharmony_ci```
1978e41f4b71Sopenharmony_ci
1979e41f4b71Sopenharmony_ci### destroy
1980e41f4b71Sopenharmony_ci
1981e41f4b71Sopenharmony_cidestroy(): void
1982e41f4b71Sopenharmony_ci
1983e41f4b71Sopenharmony_ci销毁MediaKeySession实例。
1984e41f4b71Sopenharmony_ci
1985e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1986e41f4b71Sopenharmony_ci
1987e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core
1988e41f4b71Sopenharmony_ci
1989e41f4b71Sopenharmony_ci**错误码:**
1990e41f4b71Sopenharmony_ci
1991e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
1992e41f4b71Sopenharmony_ci
1993e41f4b71Sopenharmony_ci| 错误码ID         | 错误信息        |
1994e41f4b71Sopenharmony_ci| --------------- | --------------- |
1995e41f4b71Sopenharmony_ci| 24700101                |  All unknown errors                  |
1996e41f4b71Sopenharmony_ci| 24700201                |  Fatal service error, for example, service died                  |
1997e41f4b71Sopenharmony_ci
1998e41f4b71Sopenharmony_ci**示例:**
1999e41f4b71Sopenharmony_ci
2000e41f4b71Sopenharmony_ci```ts
2001e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
2002e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
2003e41f4b71Sopenharmony_ci
2004e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
2005e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
2006e41f4b71Sopenharmony_citry {
2007e41f4b71Sopenharmony_ci  mediaKeySession.destroy();
2008e41f4b71Sopenharmony_ci} catch (err) {
2009e41f4b71Sopenharmony_ci  let error = err as BusinessError;
2010e41f4b71Sopenharmony_ci  console.error(`mediaKeySession destroy ERROR: ${error}`);
2011e41f4b71Sopenharmony_ci}
2012e41f4b71Sopenharmony_ci
2013e41f4b71Sopenharmony_ci```