• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Interface (MediaKeySystem)
2<!--Kit: Drm Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @qin_wei_jie-->
5<!--Designer: @chris2981-->
6<!--Tester: @xdlinc-->
7<!--Adviser: @zengyawen-->
8> **说明:**
9>
10> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
11
12支持MediaKeySystem实例管理、设备证书申请与处理、会话创建、离线媒体密钥管理、获取DRM度量记录、设备属性等。在调用MediaKeySystem方法之前,必须使用[createMediaKeySystem](arkts-apis-drm-f.md#drmcreatemediakeysystem)创建一个MediaKeySystem实例。
13
14## 导入模块
15
16```ts
17import { drm } from '@kit.DrmKit';
18```
19
20## setConfigurationString
21
22setConfigurationString(configName: string, value: string): void
23
24设置字符串类型的配置信息。
25
26**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
27
28**系统能力:** SystemCapability.Multimedia.Drm.Core
29
30**参数:**
31
32| 参数名     | 类型                                             | 必填 | 说明                           |
33| -------- | ----------------------------------------------- | ---- | ---------------------------- |
34| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](arkts-apis-drm-e.md#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
35| value  | string     | 是   | 配置属性值。                   |
36
37**错误码:**
38
39以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
40
41| 错误码ID         | 错误信息        |
42| --------------- | --------------- |
43| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.|
44| 24700101                |  All unknown errors                  |
45| 24700201                |  Fatal service error, for example, service died                  |
46
47**示例:**
48
49```ts
50import { drm } from '@kit.DrmKit';
51import { BusinessError } from '@kit.BasicServicesKit';
52
53let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
54try {
55  mediaKeySystem.setConfigurationString("stringConfigName", "stringConfigValue"); // 确保stringConfigName是可配置的。
56} catch (err) {
57  let error = err as BusinessError;
58  console.error(`setConfigurationString ERROR: ${error}`);
59}
60```
61
62## getConfigurationString
63
64getConfigurationString(configName: string): string
65
66获取字符串类型的配置属性值。
67
68**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
69
70**系统能力:** SystemCapability.Multimedia.Drm.Core
71
72**参数:**
73
74| 参数名     | 类型                                             | 必填 | 说明                           |
75| -------- | ----------------------------------------------- | ---- | ---------------------------- |
76| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](arkts-apis-drm-e.md#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
77
78**返回值:**
79
80| 类型                                             | 说明                           |
81| ----------------------------------------------- | ---------------------------- |
82| string          | 返回字符串类型的配置属性值。                   |
83
84**错误码:**
85
86以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
87
88| 错误码ID         | 错误信息        |
89| --------------- | --------------- |
90| 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).                              |
91| 24700101                |  All unknown errors                  |
92| 24700201                |  Fatal service error, for example, service died                  |
93
94**示例:**
95
96```ts
97import { drm } from '@kit.DrmKit';
98import { BusinessError } from '@kit.BasicServicesKit';
99
100let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
101try {
102  let configValue: string = mediaKeySystem.getConfigurationString("vendor");
103} catch (err) {
104  let error = err as BusinessError;
105  console.error(`getConfigurationString ERROR: ${error}`);
106}
107```
108
109## setConfigurationByteArray
110
111setConfigurationByteArray(configName: string, value: Uint8Array): void
112
113设置数组类型的配置信息。
114
115**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
116
117**系统能力:** SystemCapability.Multimedia.Drm.Core
118
119**参数:**
120
121| 参数名     | 类型                                             | 必填 | 说明                           |
122| -------- | ----------------------------------------------- | ---- | ---------------------------- |
123| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](arkts-apis-drm-e.md#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
124| value  | Uint8Array     | 是   | 数组类型的配置属性值,具体属性值由设备上DRM解决方案决定。                   |
125
126**错误码:**
127
128以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
129
130| 错误码ID         | 错误信息        |
131| --------------- | --------------- |
132| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.               |
133| 24700101                |  All unknown errors.                  |
134| 24700201                |  Fatal service error, for example, service died.                  |
135
136**示例:**
137
138```ts
139import { drm } from '@kit.DrmKit';
140import { BusinessError } from '@kit.BasicServicesKit';
141
142let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
143// 按实际需求填写configValue属性值,请按实际值传入。
144let configValue: Uint8Array = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
145try {
146  // 需确认当前DRM解决方案的byteArrayConfigName属性是可配置的。
147  mediaKeySystem.setConfigurationByteArray("byteArrayConfigName", configValue);
148} catch (err) {
149  let error = err as BusinessError;
150  console.error(`setConfigurationByteArray ERROR: ${error}`);
151}
152```
153
154## getConfigurationByteArray
155
156getConfigurationByteArray(configName: string): Uint8Array
157
158获取数组类型的配置信息。
159
160**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
161
162**系统能力:** SystemCapability.Multimedia.Drm.Core
163
164**参数:**
165
166| 参数名     | 类型                                             | 必填 | 说明                           |
167| -------- | ----------------------------------------------- | ---- | ---------------------------- |
168| configName  | string     | 是   | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](arkts-apis-drm-e.md#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。                   |
169
170**返回值:**
171
172| 类型                                             | 说明                           |
173| ----------------------------------------------- | ---------------------------- |
174| Uint8Array          | 数组类型的配置属性值。                   |
175
176**错误码:**
177
178以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
179
180| 错误码ID         | 错误信息        |
181| --------------- | --------------- |
182| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.        |
183| 24700101                |  All unknown errors                  |
184| 24700201                |  Fatal service error, for example, service died                  |
185
186**示例:**
187
188```ts
189import { drm } from '@kit.DrmKit';
190import { BusinessError } from '@kit.BasicServicesKit';
191
192let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
193try {
194  let configValue: Uint8Array = mediaKeySystem.getConfigurationByteArray("deviceUniqueId"); // 确保deviceUniqueId属性是存在的。
195} catch (err) {
196  let error = err as BusinessError;
197  console.error(`getConfigurationByteArray ERROR: ${error}`);
198}
199```
200
201## getStatistics
202
203getStatistics(): StatisticKeyValue[]
204
205获取性能度量记录。其中包括当前会话数、插件版本信息、每个会话最大三次解密耗时、解密次数和解密失败次数。
206
207**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
208
209**系统能力:** SystemCapability.Multimedia.Drm.Core
210
211**返回值:**
212
213| 类型                                             | 说明                           |
214| ----------------------------------------------- | ---------------------------- |
215| [StatisticKeyValue[]](arkts-apis-drm-i.md#statistickeyvalue)          | 度量记录。                   |
216
217**错误码:**
218
219以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
220
221| 错误码ID         | 错误信息        |
222| --------------- | --------------- |
223| 24700101                |  All unknown errors                  |
224| 24700201                |  Fatal service error, for example, service died                  |
225
226**示例:**
227
228```ts
229import { drm } from '@kit.DrmKit';
230import { BusinessError } from '@kit.BasicServicesKit';
231
232let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
233try {
234  let statisticKeyValue: drm.StatisticKeyValue[] = mediaKeySystem.getStatistics();
235} catch (err) {
236  let error = err as BusinessError;
237  console.error(`getConfigurationByteArray ERROR: ${error}`);
238}
239```
240
241## getMaxContentProtectionLevel
242
243getMaxContentProtectionLevel(): ContentProtectionLevel
244
245获取当前DRM解决方案支持的最大内容保护级别。
246
247**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
248
249**系统能力:** SystemCapability.Multimedia.Drm.Core
250
251**返回值:**
252
253| 类型                                             | 说明                           |
254| ----------------------------------------------- | ---------------------------- |
255| [ContentProtectionLevel](arkts-apis-drm-e.md#contentprotectionlevel)          | 返回设备支持的最大内容保护级别。                   |
256
257**错误码:**
258
259以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
260
261| 错误码ID         | 错误信息        |
262| --------------- | --------------- |
263| 24700101                |  All unknown errors                  |
264| 24700201                |  Fatal service error, for example, service died                  |
265
266**示例:**
267
268```ts
269import { drm } from '@kit.DrmKit';
270import { BusinessError } from '@kit.BasicServicesKit';
271
272let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
273try {
274  let maxLevel: drm.ContentProtectionLevel = mediaKeySystem.getMaxContentProtectionLevel();
275} catch (err) {
276  let error = err as BusinessError;
277  console.error(`getConfigurationByteArray ERROR: ${error}`);
278}
279```
280
281## generateKeySystemRequest
282
283generateKeySystemRequest(): Promise<ProvisionRequest\>
284
285生成获取mediaKeySystem设备证书的请求。
286
287**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
288
289**系统能力:** SystemCapability.Multimedia.Drm.Core
290
291**返回值:**
292
293| 类型                                             | 说明                           |
294| ----------------------------------------------- | ---------------------------- |
295| Promise<[ProvisionRequest](arkts-apis-drm-i.md#provisionrequest)\>          | Promise对象,mediaKeySystem设备证书的请求。设备上如果已存在设备证书,会返回失败。   |
296
297**错误码:**
298
299以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
300
301| 错误码ID         | 错误信息        |
302| --------------- | --------------- |
303| 24700101                |  All unknown errors                  |
304| 24700201                |  Fatal service error, for example, service died                  |
305
306**示例:**
307
308```ts
309import { drm } from '@kit.DrmKit';
310import { BusinessError } from '@kit.BasicServicesKit';
311
312let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
313// 设备上已有设备证书的情况下不需要调用。
314mediaKeySystem.generateKeySystemRequest().then((ProvisionRequest: drm.ProvisionRequest) => {
315  console.log("generateKeySystemRequest");
316}).catch((err: BusinessError) => {
317  console.error(`generateKeySystemRequest: ERROR: ${err}`);
318});
319```
320
321## processKeySystemResponse
322
323processKeySystemResponse(response: Uint8Array): Promise<void\>
324
325处理获得的设备证书请求的响应。
326
327**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
328
329**系统能力:** SystemCapability.Multimedia.Drm.Core
330
331**参数:**
332
333| 参数名     | 类型                                             | 必填 | 说明                           |
334| -------- | ----------------------------------------------- | ---- | ---------------------------- |
335| response  | Uint8Array     | 是   | 设备证书响应。                   |
336
337**返回值:**
338
339| 类型                                             | 说明                           |
340| ----------------------------------------------- | ---------------------------- |
341| Promise<void\>          | Promise对象。                   |
342
343**错误码:**
344
345以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
346
347| 错误码ID         | 错误信息        |
348| --------------- | --------------- |
349| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.         |
350| 24700101                |  All unknown errors                  |
351| 24700201                |  Fatal service error, for example, service died                  |
352
353**示例:**
354
355```ts
356import { drm } from '@kit.DrmKit';
357import { BusinessError } from '@kit.BasicServicesKit';
358
359let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
360// keySystemResponse是从DRM服务获取的设备证书响应,请按实际值传入;
361let keySystemResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
362mediaKeySystem.processKeySystemResponse(keySystemResponse).then(() => {
363  console.log("processKeySystemResponse");
364}).catch((err: BusinessError) => {
365  console.error(`processKeySystemResponse: ERROR: ${err}`);
366});
367```
368
369## getCertificateStatus
370
371getCertificateStatus():CertificateStatus
372
373获取设备证书状态值。
374
375**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
376
377**系统能力:** SystemCapability.Multimedia.Drm.Core
378
379**返回值:**
380
381| 类型                                             | 说明                           |
382| ----------------------------------------------- | ---------------------------- |
383| [CertificateStatus](arkts-apis-drm-e.md#certificatestatus)          | 设备证书状态值。                   |
384
385**错误码:**
386
387以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
388
389| 错误码ID         | 错误信息        |
390| --------------- | --------------- |
391| 24700101                |  All unknown errors                  |
392| 24700201                |  Fatal service error, for example, service died                  |
393
394**示例:**
395
396```ts
397import { drm } from '@kit.DrmKit';
398import { BusinessError } from '@kit.BasicServicesKit';
399
400let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
401try {
402  let certificateStatus: drm.CertificateStatus = mediaKeySystem.getCertificateStatus();
403} catch (err) {
404  let error = err as BusinessError;
405  console.error(`getCertificateStatus ERROR: ${error}`);
406}
407```
408
409## on('keySystemRequired')
410
411on(type: 'keySystemRequired', callback: (eventInfo: EventInfo) => void): void
412
413监听设备证书请求事件,获取事件信息。
414
415**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
416
417**系统能力:** SystemCapability.Multimedia.Drm.Core
418
419**参数:**
420
421| 参数名      | 类型                  | 必填 | 说明                                  |
422| -------- | -------------------- | ---- | ------------------------------------- |
423| type     | string               | 是   | 事件类型,通过[createMediaKeySystem](arkts-apis-drm-f.md#drmcreatemediakeysystem)成功创建MediaKeySystem实例后可监听,需要设备证书时触发该事件。 |
424| callback | (eventInfo: [EventInfo](arkts-apis-drm-i.md#eventinfo)) => void  | 是   | 回调函数,返回事件信息。只要有该事件返回就证明需请求设备证书。                 |
425
426**错误码:**
427
428以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
429
430| 错误码ID         | 错误信息        |
431| --------------- | --------------- |
432| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.               |
433| 24700101                |  All unknown errors                  |
434
435**示例:**
436
437```ts
438import { drm } from '@kit.DrmKit';
439
440let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
441mediaKeySystem.on('keySystemRequired', (eventInfo: drm.EventInfo) => {
442  console.log('keySystemRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
443});
444```
445
446## off('keySystemRequired')
447
448off(type: 'keySystemRequired', callback?: (eventInfo: EventInfo) => void): void
449
450注销设备证书请求事件的监听。
451
452**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
453
454**系统能力:** SystemCapability.Multimedia.Drm.Core
455
456**参数:**
457
458| 参数名      | 类型                  | 必填 | 说明                                  |
459| -------- | -------------------- | ---- | ------------------------------------- |
460| type     | string               | 是   | 监听事件类型,通过[createMediaKeySystem](arkts-apis-drm-f.md#drmcreatemediakeysystem)成功创建MediaKeySystem实例后可监听。 |
461| callback | (eventInfo: [EventInfo](arkts-apis-drm-i.md#eventinfo)) => void  | 否   | 回调函数,返回事件信息。可选。                |
462
463**错误码:**
464
465以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
466
467| 错误码ID         | 错误信息        |
468| --------------- | --------------- |
469| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.               |
470| 24700101                |  All unknown errors                  |
471
472**示例:**
473
474```ts
475import { drm } from '@kit.DrmKit';
476let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
477mediaKeySystem.off('keySystemRequired');
478```
479
480## createMediaKeySession
481
482createMediaKeySession(level: ContentProtectionLevel): MediaKeySession
483
484创建指定内容保护级别的MediaKeySession实例。
485
486**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
487
488**系统能力:** SystemCapability.Multimedia.Drm.Core
489
490**参数:**
491
492| 参数名     | 类型                                             | 必填 | 说明                           |
493| -------- | ----------------------------------------------- | ---- | ---------------------------- |
494| level  | [ContentProtectionLevel](arkts-apis-drm-e.md#contentprotectionlevel)     | 是   | 内容保护级别。                   |
495
496**返回值:**
497
498| 类型                                             | 说明                           |
499| ----------------------------------------------- | ---------------------------- |
500| [MediaKeySession](arkts-apis-drm-MediaKeySession.md)          | MediaKeySession实例。                   |
501
502**错误码:**
503
504以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
505
506| 错误码ID         | 错误信息        |
507| --------------- | --------------- |
508| 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.          |
509| 24700101                 |  All unknown errors                  |
510| 24700104                 |  Meet max MediaKeySession num limit                  |
511| 24700201                |  Fatal service error, for example, service died                  |
512
513**示例:**
514
515```ts
516import { drm } from '@kit.DrmKit';
517import { BusinessError } from '@kit.BasicServicesKit';
518
519let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
520try {
521  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
522} catch (err) {
523  let error = err as BusinessError;
524  console.error(`createMediaKeySession ERROR: ${error}`);
525}
526```
527
528## createMediaKeySession
529
530createMediaKeySession(): MediaKeySession
531
532创建DRM解决方案默认内容保护级别的MediaKeySession实例。
533
534**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
535
536**系统能力:** SystemCapability.Multimedia.Drm.Core
537
538**返回值:**
539
540| 类型                                             | 说明                           |
541| ----------------------------------------------- | ---------------------------- |
542| [MediaKeySession](arkts-apis-drm-MediaKeySession.md)          | MediaKeySession实例。                   |
543
544**错误码:**
545
546以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
547
548| 错误码ID         | 错误信息        |
549| --------------- | --------------- |
550| 24700101                |  All unknown errors                  |
551| 24700104                 |  Meet max MediaKeySession num limit                  |
552| 24700201                |  Fatal service error, for example, service died                  |
553
554**示例:**
555
556```ts
557import { drm } from '@kit.DrmKit';
558import { BusinessError } from '@kit.BasicServicesKit';
559
560let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
561try {
562  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
563} catch (err) {
564  let error = err as BusinessError;
565  console.error(`createMediaKeySession ERROR: ${error}`);
566}
567```
568
569## getOfflineMediaKeyIds
570
571getOfflineMediaKeyIds(): Uint8Array[]
572
573获取离线媒体密钥标识列表。
574
575**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
576
577**系统能力:** SystemCapability.Multimedia.Drm.Core
578
579**返回值:**
580
581| 类型                                             | 说明                           |
582| ----------------------------------------------- | ---------------------------- |
583| Uint8Array[]          | 离线媒体密钥标识列表。                   |
584
585**错误码:**
586
587以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
588
589| 错误码ID         | 错误信息        |
590| --------------- | --------------- |
591| 24700101                |  All unknown errors                  |
592| 24700201                |  Fatal service error, for example, service died                  |
593
594**示例:**
595
596```ts
597import { drm } from '@kit.DrmKit';
598import { BusinessError } from '@kit.BasicServicesKit';
599
600let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
601try {
602  let offlineMediaKeyIds: Uint8Array[] = mediaKeySystem.getOfflineMediaKeyIds();
603} catch (err) {
604  let error = err as BusinessError;
605  console.error(`getOfflineMediaKeyIds ERROR: ${error}`);
606}
607```
608
609## getOfflineMediaKeyStatus
610
611getOfflineMediaKeyStatus(mediaKeyId: Uint8Array): OfflineMediaKeyStatus
612
613获取指定离线媒体密钥标识的媒体密钥的状态值。
614
615**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
616
617**系统能力:** SystemCapability.Multimedia.Drm.Core
618
619**参数:**
620
621| 参数名     | 类型                                             | 必填 | 说明                           |
622| -------- | ----------------------------------------------- | ---- | ---------------------------- |
623| mediaKeyId | Uint8Array     | 是   | 离线媒体密钥标识。                   |
624
625**返回值:**
626
627| 类型                                             | 说明                           |
628| ----------------------------------------------- | ---------------------------- |
629| [OfflineMediaKeyStatus](arkts-apis-drm-e.md#offlinemediakeystatus)          | 离线媒体密钥状态值。                   |
630
631**错误码:**
632
633以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
634
635| 错误码ID         | 错误信息        |
636| --------------- | --------------- |
637| 401                |  The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.            |
638| 24700101                |  All unknown errors                  |
639| 24700201                |  Fatal service error, for example, service died                  |
640
641**示例:**
642
643```ts
644import { drm } from '@kit.DrmKit';
645import { BusinessError } from '@kit.BasicServicesKit';
646
647let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
648// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入。
649let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
650try {
651  let configValue: drm.OfflineMediaKeyStatus = mediaKeySystem.getOfflineMediaKeyStatus(mediaKeyId);
652} catch (err) {
653  let error = err as BusinessError;
654  console.error(`getOfflineMediaKeyStatus ERROR: ${error}`);
655}
656```
657
658## clearOfflineMediaKeys
659
660clearOfflineMediaKeys(mediaKeyId: Uint8Array): void
661
662删除指定媒体密钥标识的离线媒体密钥。
663
664**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
665
666**系统能力:** SystemCapability.Multimedia.Drm.Core
667
668**参数:**
669
670| 参数名     | 类型                                             | 必填 | 说明                           |
671| -------- | ----------------------------------------------- | ---- | ---------------------------- |
672| mediaKeyId  | Uint8Array     | 是   | 离线媒体密钥标识。            |
673
674**错误码:**
675
676以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
677
678| 错误码ID         | 错误信息        |
679| --------------- | --------------- |
680| 401                |  The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.           |
681| 24700101                |  All unknown errors                  |
682| 24700201                |  Fatal service error, for example, service died                  |
683
684**示例:**
685
686```ts
687import { drm } from '@kit.DrmKit';
688import { BusinessError } from '@kit.BasicServicesKit';
689
690let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
691// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入。
692let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
693try {
694  mediaKeySystem.clearOfflineMediaKeys(mediaKeyId);
695} catch (err) {
696  let error = err as BusinessError;
697  console.error(`clearOfflineMediaKeys ERROR: ${error}`);
698}
699```
700
701## destroy
702
703destroy(): void
704
705销毁MediaKeySystem实例。
706
707**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
708
709**系统能力:** SystemCapability.Multimedia.Drm.Core
710
711**错误码:**
712
713以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。
714
715| 错误码ID         | 错误信息        |
716| --------------- | --------------- |
717| 24700101                |  All unknown errors                  |
718| 24700201                |  Fatal service error, for example, service died                  |
719
720**示例:**
721
722```ts
723import { drm } from '@kit.DrmKit';
724import { BusinessError } from '@kit.BasicServicesKit';
725
726let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
727try {
728  mediaKeySystem.destroy();
729} catch (err) {
730  let error = err as BusinessError;
731  console.error(`mediaKeySystem destroy ERROR: ${error}`);
732}
733```
734