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