1# @ohos.screen (屏幕)(系统接口) 2 3本模块提供管理屏幕的一些基础能力,包括获取屏幕对象,监听屏幕变化,创建和销毁虚拟屏幕等。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块接口为系统接口。 10 11## 导入模块 12 13```ts 14import { screen } from '@kit.ArkUI'; 15``` 16 17## screen.getAllScreens 18 19getAllScreens(callback: AsyncCallback<Array<Screen>>): void 20 21获取所有的屏幕,使用callback异步回调。 22 23**系统能力:** SystemCapability.WindowManager.WindowManager.Core 24 25**参数:** 26 27| 参数名 | 类型 | 必填 | 说明 | 28| -------- | --------------------------------------------------- | ---- | -------------------------------------- | 29| callback | AsyncCallback<Array<[Screen](#screen)>> | 是 | 回调函数。返回当前获取的屏幕对象集合。 | 30 31**错误码:** 32 33以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 34 35| 错误码ID | 错误信息 | 36| ------- | ----------------------- | 37| 202 | Permission verification failed. A non-system application calls a system API.| 38| 1400001 | Invalid display or screen. | 39 40**示例:** 41 42```ts 43import { BusinessError } from '@kit.BasicServicesKit'; 44 45let screenClass: screen.Screen | null = null; 46screen.getAllScreens((err: BusinessError, data: Array<screen.Screen>) => { 47 const errCode: number = err.code; 48 if (errCode) { 49 console.error(`Failed to get all screens. Code:${err.code},message is ${err.message}`); 50 return; 51 } 52 console.info('Succeeded in getting all screens. Data:' + JSON.stringify(data)); 53 screenClass = data[0]; 54}); 55``` 56 57## screen.getAllScreens 58 59getAllScreens(): Promise<Array<Screen>> 60 61获取所有的屏幕,使用Promise异步回调。 62 63**系统能力:** SystemCapability.WindowManager.WindowManager.Core 64 65**返回值:** 66 67| 类型 | 说明 | 68| --------------------------------------------- | ----------------------------------------- | 69| Promise<Array<[Screen](#screen)>> | Promise对象。返回当前获取的屏幕对象集合。 | 70 71**错误码:** 72 73以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 74 75| 错误码ID | 错误信息 | 76| ------- | ----------------------- | 77| 202 | Permission verification failed. A non-system application calls a system API.| 78| 1400001 | Invalid display or screen. | 79 80**示例:** 81 82```ts 83import { BusinessError } from '@kit.BasicServicesKit'; 84 85let screenClass: screen.Screen | null = null; 86let promise: Promise<Array<screen.Screen>> = screen.getAllScreens(); 87promise.then((data: Array<screen.Screen>) => { 88 screenClass = data[0]; 89 console.log('Succeeded in getting all screens. Data:' + JSON.stringify(data)); 90}).catch((err: BusinessError) => { 91 console.log('Failed to get all screens. Cause: ' + JSON.stringify(err)); 92}); 93``` 94 95## screen.on('connect' | 'disconnect' | 'change') 96 97on(eventType: 'connect' | 'disconnect' | 'change', callback: Callback<number>): void 98 99开启屏幕状态变化的监听。 100 101**系统能力:** SystemCapability.WindowManager.WindowManager.Core 102 103**参数:** 104 105| 参数名 | 类型 | 必填 | 说明 | 106| --------- | ---------------------- | ---- | ----------------------------------------------------------- | 107| eventType | string | 是 | 监听事件。<br/>-eventType为"connect"表示屏幕连接事件。<br/>-eventType为"disconnect"表示断开屏幕连接事件。<br/>-eventType为"change"表示屏幕状态改变事件。 | 108| callback | Callback<number> | 是 | 回调函数。返回屏幕的id,该参数应为整数。 | 109 110**错误码:** 111 112以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 113 114| 错误码ID | 错误信息 | 115| ------- | ----------------------- | 116| 202 | Permission verification failed. A non-system application calls a system API.| 117| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 118 119**示例:** 120 121```ts 122let callback: Callback<number> = (data: number) => { 123 console.info('Succeeded in registering the callback for screen changes. Data: ' + JSON.stringify(data)) 124}; 125screen.on('connect', callback); 126``` 127 128## screen.off('connect' | 'disconnect' | 'change') 129 130off(eventType: 'connect' | 'disconnect' | 'change', callback?: Callback<number>): void 131 132关闭屏幕状态变化的监听。 133 134**系统能力:** SystemCapability.WindowManager.WindowManager.Core 135 136**参数:** 137 138| 参数名 | 类型 | 必填 | 说明 | 139| --------- | ---------------------- | ---- | ------------------------------------------------------------ | 140| eventType | string | 是 | 监听事件。<br/>-eventType为"connect"表示屏幕连接事件。<br/>-eventType为"disconnect"表示断开屏幕连接事件。<br/>-eventType为"change"表示屏幕状态改变事件。 | 141| callback | Callback<number> | 否 | 回调函数。返回屏幕的id,该参数应为整数。 | 142 143**错误码:** 144 145以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 146 147| 错误码ID | 错误信息 | 148| ------- | ----------------------- | 149| 202 | Permission verification failed. A non-system application calls a system API.| 150| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 151 152**示例:** 153 154```ts 155let callback: Callback<number> = (data: number) => { 156 console.info('Succeeded in unregistering the callback for screen changes. Data: ' + JSON.stringify(data)) 157}; 158screen.off('connect', callback); 159screen.off('connect'); 160``` 161 162## screen.makeExpand 163 164makeExpand(options:Array<ExpandOption>, callback: AsyncCallback<number>): void 165 166将屏幕设置为扩展模式,使用callback异步回调。 167 168**系统能力:** SystemCapability.WindowManager.WindowManager.Core 169 170**参数:** 171 172| 参数名 | 类型 | 必填 | 说明 | 173| -------- | ------------------------------------------ | ---- |----------------------------| 174| options | Array<[ExpandOption](#expandoption)> | 是 | 设置扩展屏幕的参数集合。 | 175| callback | AsyncCallback<number> | 是 | 回调函数。返回扩展屏幕的群组id,其中id应为整数。 | 176 177**错误码:** 178 179以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 180 181| 错误码ID | 错误信息 | 182| ------- | ----------------------- | 183| 202 | Permission verification failed. A non-system application calls a system API.| 184| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 185| 1400001 | Invalid display or screen. | 186 187**示例:** 188 189```ts 190import { BusinessError } from '@kit.BasicServicesKit'; 191 192let groupId: number | null = null; 193class ExpandOption { 194 screenId: number = 0; 195 startX: number = 0; 196 startY: number = 0; 197} 198let mainScreenOption: ExpandOption = { screenId: 0, startX: 0, startY: 0 }; 199let otherScreenOption: ExpandOption = { screenId: 1, startX: 1080, startY: 0 }; 200let expandOptionArray : ExpandOption[] = [ mainScreenOption, otherScreenOption ]; 201screen.makeExpand(expandOptionArray, (err: BusinessError, data: number) => { 202 const errCode: number = err.code; 203 if (errCode) { 204 console.error(`Failed to expand the screen. Code:${err.code},message is ${err.message}`); 205 return; 206 } 207 groupId = data; 208 console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data)); 209}); 210``` 211 212## screen.makeExpand 213 214makeExpand(options:Array<ExpandOption>): Promise<number> 215 216将屏幕设置为扩展模式,使用Promise异步回调。 217 218**系统能力:** SystemCapability.WindowManager.WindowManager.Core 219 220**参数:** 221 222| 参数名 | 类型 | 必填 | 说明 | 223| ------- | ------------------------------------------ | ---- | ------------------------ | 224| options | Array<[ExpandOption](#expandoption)> | 是 | 设置扩展屏幕的参数集合。 | 225 226**返回值:** 227 228| 类型 | 说明 | 229| --------------------- |---------------------------------| 230| Promise<number> | Promise对象。返回扩展屏幕的群组id,其中id应为整数。 | 231 232**错误码:** 233 234以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 235 236| 错误码ID | 错误信息 | 237| ------- | ----------------------- | 238| 202 | Permission verification failed. A non-system application calls a system API.| 239| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 240| 1400001 | Invalid display or screen. | 241 242**示例:** 243 244```ts 245import { BusinessError } from '@kit.BasicServicesKit'; 246 247class ExpandOption { 248 screenId: number = 0; 249 startX: number = 0; 250 startY: number = 0; 251} 252let mainScreenOption: ExpandOption = { screenId: 0, startX: 0, startY: 0 }; 253let otherScreenOption: ExpandOption = { screenId: 1, startX: 1080, startY: 0 }; 254let expandOptionArray : ExpandOption[] = [ mainScreenOption, otherScreenOption ]; 255screen.makeExpand(expandOptionArray).then(( 256 data: number) => { 257 console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data)); 258}).catch((err: BusinessError) => { 259 console.error(`Failed to expand the screen. Code:${err.code},message is ${err.message}`); 260}); 261``` 262 263## screen.stopExpand<sup>10+</sup> 264 265stopExpand(expandScreen:Array<number>, callback: AsyncCallback<void>): void 266 267停止屏幕的扩展模式,使用callback异步回调。 268 269**系统能力:** SystemCapability.WindowManager.WindowManager.Core 270 271**参数:** 272 273| 参数名 | 类型 | 必填 | 说明 | 274| ------------ | --------------------------- | --- |-----------------------------------------| 275| expandScreen | Array<number> | 是 | 扩展屏幕id集合,其中id应为整数。 expandScreen数组大小不应超过1000。 | 276| callback | AsyncCallback<void> | 是 | 回调函数。当停止屏幕扩展模式成功,err为undefined,否则为错误对象。 | 277 278**错误码:** 279 280以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 281 282| 错误码ID | 错误信息 | 283| ------- | ----------------------- | 284| 202 | Permission verification failed. A non-system application calls a system API.| 285| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 286| 1400001 | Invalid display or screen. | 287 288**示例:** 289 290```ts 291import { BusinessError } from '@kit.BasicServicesKit'; 292 293let expandScreenIds: Array<number> = [1, 2, 3]; 294screen.stopExpand(expandScreenIds, (err: BusinessError) => { 295 const errCode: number = err.code; 296 if (errCode) { 297 console.error(`Failed to stop expand screens. Code:${err.code},message is ${err.message}`); 298 return; 299 } 300 console.info('Succeeded in stopping expand screens.'); 301}); 302``` 303 304## screen.stopExpand<sup>10+</sup> 305 306stopExpand(expandScreen:Array<number>): Promise<void> 307 308停止屏幕的扩展模式,使用Promise异步回调。 309 310**系统能力:** SystemCapability.WindowManager.WindowManager.Core 311 312**参数:** 313 314| 参数名 | 类型 | 必填 | 说明 | 315| ------------ | ------------------- | --- |--------------------| 316| expandScreen | Array<number> | 是 | 扩展屏幕id集合,其中id应为整数。expandScreen数组大小不应超过1000。 | 317 318**返回值:** 319 320| 类型 | 说明 | 321| --------------------- | ----------------------- | 322| Promise<void> | 无返回结果的Promise对象。 | 323 324**错误码:** 325 326以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 327 328| 错误码ID | 错误信息 | 329| ------- | ----------------------- | 330| 202 | Permission verification failed. A non-system application calls a system API.| 331| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 332| 1400001 | Invalid display or screen. | 333 334**示例:** 335 336```ts 337import { BusinessError } from '@kit.BasicServicesKit'; 338 339let expandScreenIds: Array<number> = [1, 2, 3]; 340screen.stopExpand(expandScreenIds).then(() => { 341 console.info('Succeeded in stopping expand screens.'); 342}).catch((err: BusinessError) => { 343 console.error(`Failed to stop expand screens. Code:${err.code},message is ${err.message}`); 344}); 345``` 346 347## screen.makeMirror 348 349makeMirror(mainScreen:number, mirrorScreen:Array<number>, callback: AsyncCallback<number>): void 350 351将屏幕设置为镜像模式,使用callback异步回调。 352 353**系统能力:** SystemCapability.WindowManager.WindowManager.Core 354 355**参数:** 356 357| 参数名 | 类型 | 必填 | 说明 | 358| ------------ | --------------------------- | ---- |--------------------| 359| mainScreen | number | 是 | 主屏幕id,该参数仅支持整数输入。 | 360| mirrorScreen | Array<number> | 是 | 镜像屏幕id集合,其中id应为整数。 | 361| callback | AsyncCallback<number> | 是 | 回调函数。返回镜像屏幕的群组id,其中id应为整数。 | 362 363**错误码:** 364 365以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 366 367| 错误码ID | 错误信息 | 368| ------- | ----------------------- | 369| 202 | Permission verification failed. A non-system application calls a system API.| 370| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 371| 1400001 | Invalid display or screen. | 372 373**示例:** 374 375```ts 376import { BusinessError } from '@kit.BasicServicesKit'; 377 378let mainScreenId: number = 0; 379let mirrorScreenIds: Array<number> = [1, 2, 3]; 380screen.makeMirror(mainScreenId, mirrorScreenIds, (err: BusinessError, data: number) => { 381 const errCode: number = err.code; 382 if (errCode) { 383 console.error(`Failed to set screen mirroring. Code:${err.code},message is ${err.message}`); 384 return; 385 } 386 console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data)); 387}); 388``` 389 390## screen.makeMirror 391 392makeMirror(mainScreen:number, mirrorScreen:Array<number>): Promise<number> 393 394将屏幕设置为镜像模式,使用Promise异步回调。 395 396**系统能力:** SystemCapability.WindowManager.WindowManager.Core 397 398**参数:** 399 400| 参数名 | 类型 | 必填 | 说明 | 401| ------------ | ------------------- | ---- |--------------------| 402| mainScreen | number | 是 | 主屏幕id,该参数仅支持整数输入。 | 403| mirrorScreen | Array<number> | 是 | 镜像屏幕id集合。其中id应为整数。 | 404 405**返回值:** 406 407| 类型 | 说明 | 408| --------------------- |---------------------------------| 409| Promise<number> | Promise对象。返回镜像屏幕的群组id,其中id应为整数。 | 410 411**错误码:** 412 413以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 414 415| 错误码ID | 错误信息 | 416| ------- | ----------------------- | 417| 202 | Permission verification failed. A non-system application calls a system API.| 418| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 419| 1400001 | Invalid display or screen. | 420 421**示例:** 422 423```ts 424import { BusinessError } from '@kit.BasicServicesKit'; 425 426let mainScreenId: number = 0; 427let mirrorScreenIds: Array<number> = [1, 2, 3]; 428screen.makeMirror(mainScreenId, mirrorScreenIds).then((data: number) => { 429 console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data)); 430}).catch((err: BusinessError) => { 431 console.error(`Failed to set screen mirroring. Code:${err.code},message is ${err.message}`); 432}); 433``` 434 435## screen.stopMirror<sup>10+</sup> 436 437stopMirror(mirrorScreen:Array<number>, callback: AsyncCallback<void>): void 438 439停止屏幕的镜像模式,使用callback异步回调。 440 441**系统能力:** SystemCapability.WindowManager.WindowManager.Core 442 443**参数:** 444 445| 参数名 | 类型 | 必填 | 说明 | 446| ------------ | --------------------------- | --- |-----------------------------------------| 447| mirrorScreen | Array<number> | 是 | 镜像屏幕id集合,其中id应为整数。 mirrorScreen数组大小不应超过1000。 | 448| callback | AsyncCallback<void> | 是 | 回调函数。当停止屏幕镜像模式成功,err为undefined,否则为错误对象。 | 449 450**错误码:** 451 452以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 453 454| 错误码ID | 错误信息 | 455| ------- | ----------------------- | 456| 202 | Permission verification failed. A non-system application calls a system API.| 457| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 458| 1400001 | Invalid display or screen. | 459 460**示例:** 461 462```ts 463import { BusinessError } from '@kit.BasicServicesKit'; 464 465let mirrorScreenIds: Array<number> = [1, 2, 3]; 466screen.stopMirror(mirrorScreenIds, (err: BusinessError) => { 467 const errCode: number = err.code; 468 if (errCode) { 469 console.error(`Failed to stop mirror screens. Code:${err.code},message is ${err.message}`); 470 return; 471 } 472 console.info('Succeeded in stopping mirror screens.'); 473}); 474``` 475 476## screen.stopMirror<sup>10+</sup> 477 478stopMirror(mirrorScreen:Array<number>): Promise<void> 479 480停止屏幕的镜像模式,使用Promise异步回调。 481 482**系统能力:** SystemCapability.WindowManager.WindowManager.Core 483 484**参数:** 485 486| 参数名 | 类型 | 必填 | 说明 | 487| ------------ | ------------------- | --- |--------------------| 488| mirrorScreen | Array<number> | 是 | 镜像屏幕id集合,其中id应为整数。mirrorScreen数组大小不应超过1000。 | 489 490**返回值:** 491 492| 类型 | 说明 | 493| --------------------- | ----------------------- | 494| Promise<void> | 无返回结果的Promise对象。 | 495 496**错误码:** 497 498以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 499 500| 错误码ID | 错误信息 | 501| ------- | ----------------------- | 502| 202 | Permission verification failed. A non-system application calls a system API.| 503| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 504| 1400001 | Invalid display or screen. | 505 506**示例:** 507 508```ts 509import { BusinessError } from '@kit.BasicServicesKit'; 510 511let mirrorScreenIds: Array<number> = [1, 2, 3]; 512screen.stopMirror(mirrorScreenIds).then(() => { 513 console.info('Succeeded in stopping mirror screens.'); 514}).catch((err: BusinessError) => { 515 console.error(`Failed to stop mirror screens.Code:${err.code},message is ${err.message}`); 516}); 517``` 518 519## screen.createVirtualScreen 520 521createVirtualScreen(options:VirtualScreenOption, callback: AsyncCallback<Screen>): void 522 523创建虚拟屏幕,使用callback异步回调。 524 525**系统能力:** SystemCapability.WindowManager.WindowManager.Core 526 527**需要权限**:ohos.permission.CAPTURE_SCREEN 528 529**参数:** 530 531| 参数名 | 类型 | 必填 | 说明 | 532| -------- | ------------------------------------------- | ---- | ---------------------------------- | 533| options | [VirtualScreenOption](#virtualscreenoption) | 是 | 用于创建虚拟屏幕的参数。 | 534| callback | AsyncCallback<[Screen](#screen)> | 是 | 回调函数,返回创建的虚拟屏幕对象。 | 535 536**错误码:** 537 538以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 539 540| 错误码ID | 错误信息 | 541| ------- | ----------------------- | 542| 201 | Permission verification failed. | 543| 202 | Permission verification failed. A non-system application calls a system API.| 544| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 545| 1400001 | Invalid display or screen. | 546 547**示例:** 548 549```ts 550import { BusinessError } from '@kit.BasicServicesKit'; 551 552let screenClass: screen.Screen | null = null; 553class VirtualScreenOption { 554 name : string = ''; 555 width : number = 0; 556 height : number = 0; 557 density : number = 0; 558 surfaceId : string = ''; 559} 560 561let option : VirtualScreenOption = { 562 name: 'screen01', 563 width: 1080, 564 height: 2340, 565 density: 2, 566 surfaceId: '' 567}; 568screen.createVirtualScreen(option, (err: BusinessError, data: screen.Screen) => { 569 const errCode: number = err.code; 570 if (errCode) { 571 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 572 return; 573 } 574 screenClass = data; 575 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 576}); 577``` 578 579## screen.createVirtualScreen 580 581createVirtualScreen(options:VirtualScreenOption): Promise<Screen> 582 583创建虚拟屏幕,使用Promise异步回调。 584 585**系统能力:** SystemCapability.WindowManager.WindowManager.Core 586 587**需要权限**:ohos.permission.CAPTURE_SCREEN 588 589**参数:** 590 591| 参数名 | 类型 | 必填 | 说明 | 592| ------- | ------------------------------------------- | ---- | ------------------------ | 593| options | [VirtualScreenOption](#virtualscreenoption) | 是 | 用于创建虚拟屏幕的参数。 | 594 595**返回值:** 596 597| 类型 | 说明 | 598| -------------------------------- | ------------------------------------- | 599| Promise<[Screen](#screen)> | Promise对象。返回创建的虚拟屏幕对象。 | 600 601**错误码:** 602 603以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 604 605| 错误码ID | 错误信息 | 606| ------- | ----------------------- | 607| 201 | Permission verification failed. | 608| 202 | Permission verification failed. A non-system application calls a system API.| 609| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 610| 1400001 | Invalid display or screen. | 611 612**示例:** 613 614```ts 615import { BusinessError } from '@kit.BasicServicesKit'; 616 617let screenClass: screen.Screen | null = null; 618class VirtualScreenOption { 619 name : string = ''; 620 width : number = 0; 621 height : number = 0; 622 density : number = 0; 623 surfaceId : string = ''; 624} 625 626let option : VirtualScreenOption = { 627 name: 'screen01', 628 width: 1080, 629 height: 2340, 630 density: 2, 631 surfaceId: '' 632}; 633 634screen.createVirtualScreen(option).then((data: screen.Screen) => { 635 screenClass = data; 636 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 637}).catch((err: BusinessError) => { 638 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 639}); 640``` 641 642## screen.destroyVirtualScreen 643 644destroyVirtualScreen(screenId:number, callback: AsyncCallback<void>): void 645 646销毁虚拟屏幕,使用callback异步回调。 647 648**系统能力:** SystemCapability.WindowManager.WindowManager.Core 649 650**参数:** 651 652| 参数名 | 类型 | 必填 | 说明 | 653| -------- | ------------------------- | ---- | ------------------------------------------------------------ | 654| screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | 655| callback | AsyncCallback<void> | 是 | 回调函数。当销毁虚拟屏幕成功,err为undefined,否则为错误对象。 | 656 657**错误码:** 658 659以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 660 661| 错误码ID | 错误信息 | 662| ------- | ----------------------------- | 663| 202 | Permission verification failed. A non-system application calls a system API.| 664| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 665| 1400002 | Unauthorized operation. | 666 667**示例:** 668 669```ts 670import { BusinessError } from '@kit.BasicServicesKit'; 671 672let screenId: number = 1; 673screen.destroyVirtualScreen(screenId, (err: BusinessError) => { 674 const errCode: number = err.code; 675 if (errCode) { 676 console.error(`Failed to destroy the virtual screen. Code:${err.code},message is ${err.message}`); 677 return; 678 } 679 console.info('Succeeded in destroying the virtual screen.'); 680}); 681``` 682 683## screen.destroyVirtualScreen 684 685destroyVirtualScreen(screenId:number): Promise<void> 686 687销毁虚拟屏幕,使用Promise异步回调。 688 689**系统能力:** SystemCapability.WindowManager.WindowManager.Core 690 691**参数:** 692 693| 参数名 | 类型 | 必填 | 说明 | 694| -------- | ------ | ---- | ---------- | 695| screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | 696 697**返回值:** 698 699| 类型 | 说明 | 700| ------------------- | ------------------------- | 701| Promise<void> | 无返回结果的Promise对象。 | 702 703**错误码:** 704 705以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 706 707| 错误码ID | 错误信息 | 708| ------- | ----------------------------- | 709| 202 | Permission verification failed. A non-system application calls a system API.| 710| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 711| 1400002 | Unauthorized operation. | 712 713**示例:** 714 715```ts 716import { BusinessError } from '@kit.BasicServicesKit'; 717 718let screenId: number = 1; 719screen.destroyVirtualScreen(screenId).then(() => { 720 console.info('Succeeded in destroying the virtual screen.'); 721}).catch((err: BusinessError) => { 722 console.error(`Failed to destroy the virtual screen.Code:${err.code},message is ${err.message}`); 723}); 724``` 725 726## screen.setVirtualScreenSurface 727 728setVirtualScreenSurface(screenId:number, surfaceId: string, callback: AsyncCallback<void>): void 729 730设置虚拟屏幕的surface,使用callback异步回调。 731 732**系统能力:** SystemCapability.WindowManager.WindowManager.Core 733 734**需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。 735 736**参数:** 737 738| 参数名 | 类型 | 必填 | 说明 | 739| --------- | ------------------------- | ---- | ------------------------------------------------------------ | 740| screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | 741| surfaceId | string | 是 | 代表虚拟屏幕的surface标识符,surfaceId值可自行定义。 | 742| callback | AsyncCallback<void> | 是 | 回调函数。当设置虚拟屏幕surface成功,err为undefined,否则为错误对象。 | 743 744**错误码:** 745 746以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 747 748| 错误码ID | 错误信息 | 749| ------- | ----------------------- | 750| 201 | Permission verification failed. | 751| 202 | Permission verification failed. A non-system application calls a system API.| 752| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 753| 1400001 | Invalid display or screen. | 754 755**示例:** 756 757```ts 758import { BusinessError } from '@kit.BasicServicesKit'; 759 760let screenId: number = 1; 761let surfaceId: string = '2048'; 762screen.setVirtualScreenSurface(screenId, surfaceId, (err: BusinessError) => { 763 const errCode: number = err.code; 764 if (errCode) { 765 console.error(`Failed to set the surface for the virtual screen. Code:${err.code},message is ${err.message}`); 766 return; 767 } 768 console.info('Succeeded in setting the surface for the virtual screen.'); 769}); 770``` 771 772## screen.setVirtualScreenSurface 773 774setVirtualScreenSurface(screenId:number, surfaceId: string): Promise<void> 775 776设置虚拟屏幕的surface,使用Promise异步回调。 777 778**系统能力:** SystemCapability.WindowManager.WindowManager.Core 779 780**需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。 781 782**参数:** 783 784| 参数名 | 类型 | 必填 | 说明 | 785| --------- | ------ | ---- | ------------- | 786| screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | 787| surfaceId | string | 是 | 代表虚拟屏幕的surface标识符,surfaceId值可自行定义。 | 788 789**返回值:** 790 791| 类型 | 说明 | 792| ------------------- | ------------------------- | 793| Promise<void> | 无返回结果的Promise对象。 | 794 795**错误码:** 796 797以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 798 799| 错误码ID | 错误信息 | 800| ------- | ----------------------- | 801| 201 | Permission verification failed. | 802| 202 | Permission verification failed. A non-system application calls a system API.| 803| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 804| 1400001 | Invalid display or screen. | 805 806**示例:** 807 808```ts 809import { BusinessError } from '@kit.BasicServicesKit'; 810 811let screenId: number = 1; 812let surfaceId: string = '2048'; 813screen.setVirtualScreenSurface(screenId, surfaceId).then(() => { 814 console.info('Succeeded in setting the surface for the virtual screen.'); 815}).catch((err: BusinessError) => { 816 console.error(`Failed to set the surface for the virtual screen. Code:${err.code},message is ${err.message}`); 817}); 818``` 819 820## screen.isScreenRotationLocked 821 822isScreenRotationLocked(): Promise<boolean> 823 824查询当前自动转屏是否锁定,使用Promise异步回调。 825 826**系统能力:** SystemCapability.WindowManager.WindowManager.Core 827 828**返回值:** 829 830| 类型 | 说明 | 831| ---------------------- | ------------------------------------- | 832| Promise<boolean> | Promise对象。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 | 833 834**错误码:** 835 836以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 837 838| 错误码ID | 错误信息 | 839| ------- | ----------------------- | 840| 202 | Permission verification failed. A non-system application calls a system API.| 841 842**示例:** 843 844```ts 845import { BusinessError } from '@kit.BasicServicesKit'; 846 847screen.isScreenRotationLocked().then((isLocked: boolean) => { 848 console.info('Succeeded in getting the screen rotation lock status. isLocked:' + JSON.stringify(isLocked)); 849}).catch((err: BusinessError) => { 850 console.error(`Failed to get the screen rotation lock status. Code:${err.code},message is ${err.message}`); 851}); 852``` 853 854## screen.isScreenRotationLocked 855 856isScreenRotationLocked(callback: AsyncCallback<boolean>): void 857 858查询当前自动转屏是否锁定,使用callback异步回调。 859 860**系统能力:** SystemCapability.WindowManager.WindowManager.Core 861 862**参数:** 863 864| 参数名 | 类型 | 必填 | 说明 | 865| --------- | ---------------------------- | ---- | ------------------------------------------------------------ | 866| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 | 867 868**错误码:** 869 870以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 871 872| 错误码ID | 错误信息 | 873| ------- | ----------------------- | 874| 202 | Permission verification failed. A non-system application calls a system API.| 875 876**示例:** 877 878```ts 879import { BusinessError } from '@kit.BasicServicesKit'; 880 881screen.isScreenRotationLocked((err: BusinessError, isLocked: boolean) => { 882const errCode: number = err.code; 883if (errCode) { 884 console.error(`Failed to get the screen rotation lock status. Code:${err.code},message is ${err.message}`); 885 return; 886} 887console.info('Succeeded in getting the screen rotation lock status. isLocked:' + JSON.stringify(isLocked)); 888}); 889``` 890 891## screen.setScreenRotationLocked 892 893setScreenRotationLocked(isLocked: boolean): Promise<void> 894 895设置自动转屏开关是否锁定,使用Promise异步回调。 896 897**系统能力:** SystemCapability.WindowManager.WindowManager.Core 898 899**参数:** 900 901| 参数名 | 类型 | 必填 | 说明 | 902| --------- | ------ | ---- | ------------- | 903| isLocked | boolean | 是 | 自动转屏开关是否锁定。true为锁定,false为未锁定. | 904 905**返回值:** 906 907| 类型 | 说明 | 908| ------------------- | ------------------------- | 909| Promise<void> | 无返回结果的Promise对象。 | 910 911**错误码:** 912 913以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 914 915| 错误码ID | 错误信息 | 916| ------- | ----------------------- | 917| 202 | Permission verification failed. A non-system application calls a system API.| 918| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 919 920**示例:** 921 922```ts 923import { BusinessError } from '@kit.BasicServicesKit'; 924 925let isLocked: boolean = false; 926screen.setScreenRotationLocked(isLocked).then(() => { 927 console.info('Succeeded in unlocking auto rotate'); 928}).catch((err: BusinessError) => { 929 console.error(`Failed to unlock auto rotate. Code:${err.code},message is ${err.message}`); 930}); 931``` 932 933## screen.setScreenRotationLocked 934 935setScreenRotationLocked(isLocked: boolean, callback: AsyncCallback<void>): void 936 937设置自动转屏开关是否锁定,使用callback异步回调。 938 939**系统能力:** SystemCapability.WindowManager.WindowManager.Core 940 941**参数:** 942 943| 参数名 | 类型 | 必填 | 说明 | 944| --------- | ------------------------- | ---- | ------------------------------------------------------------ | 945| isLocked | boolean | 是 | 自动转屏开关是否锁定。true为锁定,false为未锁定. | 946| callback | AsyncCallback<void> | 是 | 回调函数。当设置自动转屏是否锁定成功,err为undefined,否则为错误对象。 | 947 948**错误码:** 949 950以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 951 952| 错误码ID | 错误信息 | 953| ------- | ----------------------- | 954| 202 | Permission verification failed. A non-system application calls a system API.| 955| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 956 957**示例:** 958 959```ts 960import { BusinessError } from '@kit.BasicServicesKit'; 961 962let isLocked: boolean = false; 963screen.setScreenRotationLocked(isLocked, (err: BusinessError) => { 964 const errCode: number = err.code; 965 if (errCode) { 966 console.error(`Failed to unlock auto rotate. Code:${err.code},message is ${err.message}`); 967 return; 968 } 969 console.info('Succeeded in unlocking auto rotate.'); 970}); 971``` 972 973## ExpandOption 974 975扩展屏幕的参数。 976 977**系统能力:** SystemCapability.WindowManager.WindowManager.Core 978 979| 名称 | 类型 | 可读 | 可写 | 说明 | 980| -------- | -------- | ---- | ---- | ------------------- | 981| screenId | number | 是 | 是 | 屏幕的id,该参数应为整数。 | 982| startX | number | 是 | 是 | 屏幕的起始X轴坐标,该参数应为整数。 | 983| startY | number | 是 | 是 | 屏幕的起始Y轴坐标,该参数应为整数。 | 984 985## VirtualScreenOption 986 987创建虚拟屏幕的参数。 988 989**系统能力:** SystemCapability.WindowManager.WindowManager.Core 990 991| 名称 | 类型 | 可读 | 可写 | 说明 | 992| --------- | -------- | ---- | ---- |--------------------------| 993| name | string | 是 | 是 | 指定虚拟屏幕的名称。 | 994| width | number | 是 | 是 | 指定虚拟屏幕的宽度,单位为px,该参数应为整数。 | 995| height | number | 是 | 是 | 指定虚拟屏幕的高度,单位为px,该参数应为整数。 | 996| density | number | 是 | 是 | 指定虚拟屏幕的密度,单位为px,该参数为浮点数。 | 997| surfaceId | string | 是 | 是 | 指定虚拟屏幕的surfaceId。 | 998 999## Screen 1000 1001屏幕实例。 1002 1003下列API示例中都需先使用[getAllScreens()](#screengetallscreens)、[createVirtualScreen()](#screencreatevirtualscreen)中的任一方法获取到Screen实例,再通过此实例调用对应方法。 1004 1005### 属性 1006 1007**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1008 1009| 名称 | 类型 | 可读 | 可写 | 说明 | 1010| ----------------- | ---------------------------------------------- | ---- | ---- |-------------------------------------------------------------| 1011| id | number | 是 | 否 | 屏幕的id,该参数应为整数。 | 1012| parent | number | 是 | 否 | 屏幕所属群组的id,该参数应为整数。 | 1013| supportedModeInfo | Array<[ScreenModeInfo](#screenmodeinfo)> | 是 | 否 | 屏幕支持的模式集合。 | 1014| activeModeIndex | number | 是 | 否 | 当前屏幕所处模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。该参数应为整数。 | 1015| orientation | [Orientation](#orientation) | 是 | 否 | 屏幕方向。 | 1016| sourceMode<sup>10+</sup> | [ScreenSourceMode](#screensourcemode10) | 是 | 否 | 屏幕来源模式。 | 1017 1018### setOrientation 1019 1020setOrientation(orientation: Orientation, callback: AsyncCallback<void>): void 1021 1022设置屏幕方向,使用callback异步回调。 1023 1024**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1025 1026| 参数名 | 类型 | 必填 | 说明 | 1027| ----------- | --------------------------- | ---- | ------------------------------------------------------------ | 1028| orientation | [Orientation](#orientation) | 是 | 屏幕方向。orientation值必须来自Orientation枚举方向。 | 1029| callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。 | 1030 1031**错误码:** 1032 1033以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1034 1035| 错误码ID | 错误信息 | 1036| ------- | -------------------------------------------- | 1037| 202 | Permission verification failed. A non-system application calls a system API.| 1038| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 1039| 1400003 | This display manager service works abnormally. | 1040 1041**示例:** 1042 1043```ts 1044import { BusinessError } from '@kit.BasicServicesKit'; 1045 1046class VirtualScreenOption { 1047 name : string = ''; 1048 width : number = 0; 1049 height : number = 0; 1050 density : number = 0; 1051 surfaceId : string = ''; 1052} 1053 1054let option : VirtualScreenOption = { 1055 name: 'screen01', 1056 width: 1080, 1057 height: 2340, 1058 density: 2, 1059 surfaceId: '' 1060}; 1061 1062screen.createVirtualScreen(option).then((data: screen.Screen) => { 1063 let screenClass: screen.Screen = data; 1064 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1065 screenClass.setOrientation(screen.Orientation.VERTICAL, (err: BusinessError) => { 1066 const errCode: number = err.code; 1067 if (errCode) { 1068 console.error(`Failed to set the vertical orientation. Code:${err.code},message is ${err.message}`); 1069 return; 1070 } 1071 console.info('Succeeded in setting the vertical orientation.'); 1072 }); 1073}).catch((err: BusinessError) => { 1074 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1075}); 1076``` 1077 1078### setOrientation 1079 1080setOrientation(orientation: Orientation): Promise<void> 1081 1082设置屏幕方向,使用Promise异步回调。 1083 1084**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1085 1086| 参数名 | 类型 | 必填 | 说明 | 1087| ----------- | --------------------------- | ---- | ---------- | 1088| orientation | [Orientation](#orientation) | 是 | 屏幕方向。orientation值必须来自Orientation枚举方向。 | 1089 1090**返回值:** 1091 1092| 类型 | 说明 | 1093| ------------------- | ------------------------- | 1094| Promise<void> | 无返回结果的Promise对象。 | 1095 1096**错误码:** 1097 1098以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1099 1100| 错误码ID | 错误信息 | 1101| ------- | -------------------------------------------- | 1102| 202 | Permission verification failed. A non-system application calls a system API.| 1103| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 1104| 1400003 | This display manager service works abnormally. | 1105 1106**示例:** 1107 1108```ts 1109import { BusinessError } from '@kit.BasicServicesKit'; 1110 1111class VirtualScreenOption { 1112 name : string = ''; 1113 width : number = 0; 1114 height : number = 0; 1115 density : number = 0; 1116 surfaceId : string = ''; 1117} 1118 1119let option : VirtualScreenOption = { 1120 name: 'screen01', 1121 width: 1080, 1122 height: 2340, 1123 density: 2, 1124 surfaceId: '' 1125}; 1126 1127screen.createVirtualScreen(option).then((data: screen.Screen) => { 1128 let screenClass: screen.Screen = data; 1129 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1130 let promise: Promise<void> = screenClass.setOrientation(screen.Orientation.VERTICAL); 1131 promise.then(() => { 1132 console.info('Succeeded in setting the vertical orientation.'); 1133 }).catch((err: BusinessError) => { 1134 console.error(`Failed to set the vertical orientation. Code:${err.code},message is ${err.message}`); 1135 }); 1136}).catch((err: BusinessError) => { 1137 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1138}); 1139``` 1140 1141### setScreenActiveMode 1142 1143setScreenActiveMode(modeIndex: number, callback: AsyncCallback<void>): void 1144 1145设置屏幕当前显示模式,使用callback异步回调。 1146 1147**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1148 1149| 参数名 | 类型 | 必填 | 说明 | 1150| --------- | ------------------------- | ---- | ------------------------------------------------------------ | 1151| modeIndex | number | 是 | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 | 1152| callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕当前显示模式成功,err为undefined,否则为错误对象。 | 1153 1154**错误码:** 1155 1156以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1157 1158| 错误码ID | 错误信息 | 1159| ------- | -------------------------------------------- | 1160| 202 | Permission verification failed. A non-system application calls a system API.| 1161| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 1162| 1400003 | This display manager service works abnormally. | 1163 1164**示例:** 1165 1166```ts 1167import { BusinessError } from '@kit.BasicServicesKit'; 1168 1169class VirtualScreenOption { 1170 name : string = ''; 1171 width : number = 0; 1172 height : number = 0; 1173 density : number = 0; 1174 surfaceId : string = ''; 1175} 1176 1177let option : VirtualScreenOption = { 1178 name: 'screen01', 1179 width: 1080, 1180 height: 2340, 1181 density: 2, 1182 surfaceId: '' 1183}; 1184 1185screen.createVirtualScreen(option).then((data: screen.Screen) => { 1186 let screenClass: screen.Screen = data; 1187 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1188 let modeIndex: number = 0; 1189 screenClass.setScreenActiveMode(modeIndex, (err: BusinessError) => { 1190 const errCode: number = err.code; 1191 if (errCode) { 1192 console.error(`Failed to set screen active mode 0. Code:${err.code},message is ${err.message}`); 1193 return; 1194 } 1195 console.info('Succeeded in setting the vertical orientation.'); 1196 }); 1197}).catch((err: BusinessError) => { 1198 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1199}); 1200``` 1201 1202### setScreenActiveMode 1203 1204setScreenActiveMode(modeIndex: number): Promise<void> 1205 1206设置屏幕当前显示模式,使用Promise异步回调。 1207 1208**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1209 1210| 参数名 | 类型 | 必填 | 说明 | 1211| --------- | ------ | ---- | ---------- | 1212| modeIndex | number | 是 | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 | 1213 1214**返回值:** 1215 1216| 类型 | 说明 | 1217| ------------------- | ------------------------- | 1218| Promise<void> | 无返回结果的Promise对象。 | 1219 1220**错误码:** 1221 1222以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1223 1224| 错误码ID | 错误信息 | 1225| ------- | -------------------------------------------- | 1226| 202 | Permission verification failed. A non-system application calls a system API.| 1227| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 1228| 1400003 | This display manager service works abnormally. | 1229 1230**示例:** 1231 1232```ts 1233import { BusinessError } from '@kit.BasicServicesKit'; 1234 1235class VirtualScreenOption { 1236 name : string = ''; 1237 width : number = 0; 1238 height : number = 0; 1239 density : number = 0; 1240 surfaceId : string = ''; 1241} 1242 1243let option : VirtualScreenOption = { 1244 name: 'screen01', 1245 width: 1080, 1246 height: 2340, 1247 density: 2, 1248 surfaceId: '' 1249}; 1250 1251screen.createVirtualScreen(option).then((data: screen.Screen) => { 1252 let screenClass: screen.Screen = data; 1253 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1254 let modeIndex: number = 0; 1255 let promise: Promise<void> = screenClass.setScreenActiveMode(modeIndex); 1256 promise.then(() => { 1257 console.info('Succeeded in setting screen active mode 0.'); 1258 }).catch((err: BusinessError) => { 1259 console.error(`Failed to set screen active mode 0.Code:${err.code},message is ${err.message}`); 1260 }); 1261}).catch((err: BusinessError) => { 1262 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1263}); 1264``` 1265 1266### setDensityDpi 1267 1268setDensityDpi(densityDpi: number, callback: AsyncCallback<void>): void; 1269 1270设置屏幕的像素密度,使用callback异步回调。 1271 1272**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1273 1274| 参数名 | 类型 | 必填 | 说明 | 1275| ---------- | ------------------------- | ---- |------------------------------------------| 1276| densityDpi | number | 是 | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 | 1277| callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕的像素密度成功,err为undefined,否则为错误对象。 | 1278 1279**错误码:** 1280 1281以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1282 1283| 错误码ID | 错误信息 | 1284| ------- | -------------------------------------------- | 1285| 202 | Permission verification failed. A non-system application calls a system API.| 1286| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 1287| 1400003 | This display manager service works abnormally. | 1288 1289**示例:** 1290 1291```ts 1292import { BusinessError } from '@kit.BasicServicesKit'; 1293 1294let densityDpi: number = 320; 1295class VirtualScreenOption { 1296 name : string = ''; 1297 width : number = 0; 1298 height : number = 0; 1299 density : number = 0; 1300 surfaceId : string = ''; 1301} 1302 1303let option : VirtualScreenOption = { 1304 name: 'screen01', 1305 width: 1080, 1306 height: 2340, 1307 density: 2, 1308 surfaceId: '' 1309}; 1310 1311screen.createVirtualScreen(option).then((data: screen.Screen) => { 1312 let screenClass: screen.Screen = data; 1313 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1314 screenClass.setDensityDpi(densityDpi, (err: BusinessError) => { 1315 const errCode: number = err.code; 1316 if (errCode) { 1317 console.error(`Failed to set the pixel density of the screen to 320. Code:${err.code},message is ${err.message}`); 1318 return; 1319 } 1320 console.info('Succeeded in setting the vertical orientation.'); 1321 }); 1322}).catch((err: BusinessError) => { 1323 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1324}); 1325``` 1326 1327### setDensityDpi 1328 1329setDensityDpi(densityDpi: number): Promise<void> 1330 1331设置屏幕的像素密度,使用Promise异步回调。 1332 1333**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1334 1335| 参数名 | 类型 | 必填 | 说明 | 1336| ---------- | ------ | ---- |------------------------------------| 1337| densityDpi | number | 是 | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 | 1338 1339**返回值:** 1340 1341| 类型 | 说明 | 1342| ------------------- | ------------------------- | 1343| Promise<void> | 无返回结果的Promise对象。 | 1344 1345**错误码:** 1346 1347以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1348 1349| 错误码ID | 错误信息 | 1350| ------- | -------------------------------------------- | 1351| 202 | Permission verification failed. A non-system application calls a system API.| 1352| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 1353| 1400003 | This display manager service works abnormally. | 1354 1355**示例:** 1356 1357```ts 1358import { BusinessError } from '@kit.BasicServicesKit'; 1359 1360let densityDpi: number = 320; 1361class VirtualScreenOption { 1362 name : string = ''; 1363 width : number = 0; 1364 height : number = 0; 1365 density : number = 0; 1366 surfaceId : string = ''; 1367} 1368 1369let option : VirtualScreenOption = { 1370 name: 'screen01', 1371 width: 1080, 1372 height: 2340, 1373 density: 2, 1374 surfaceId: '' 1375}; 1376 1377screen.createVirtualScreen(option).then((data: screen.Screen) => { 1378 let screenClass: screen.Screen = data; 1379 let promise: Promise<void> = screenClass.setDensityDpi(densityDpi); 1380 promise.then(() => { 1381 console.info('Succeeded in setting the pixel density of the screen to 320.'); 1382 }).catch((err: BusinessError) => { 1383 console.error(`Failed to set the pixel density of the screen to 320. Code:${err.code},message is ${err.message}`); 1384 }); 1385}).catch((err: BusinessError) => { 1386 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1387}); 1388``` 1389 1390## Orientation 1391 1392屏幕方向枚举。 1393 1394**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1395 1396| 名称 | 值 | 说明 | 1397| ------------------ | ---- | -------------------------------- | 1398| UNSPECIFIED | 0 | 表示未指定屏幕方向,由系统指定。 | 1399| VERTICAL | 1 | 表示指定屏幕为垂直方向。 | 1400| HORIZONTAL | 2 | 表示指定屏幕为水平方向。 | 1401| REVERSE_VERTICAL | 3 | 表示指定屏幕为反向垂直方向。 | 1402| REVERSE_HORIZONTAL | 4 | 表示指定屏幕为反向水平方向。 | 1403 1404## ScreenSourceMode<sup>10+</sup> 1405 1406屏幕显示内容来源模式枚举。 1407 1408**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1409 1410| 名称 | 值 | 说明 | 1411| ------------------ | ---- | -------------------------------- | 1412| SCREEN_MAIN | 0 | 表示屏幕为默认主屏。 | 1413| SCREEN_MIRROR | 1 | 表示屏幕内容来自镜像。 | 1414| SCREEN_EXTEND | 2 | 表示屏幕内容来自扩展。 | 1415| SCREEN_ALONE | 3 | 表示屏幕为未指定来源。 | 1416 1417## ScreenModeInfo 1418 1419屏幕显示模式信息。 1420 1421**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1422 1423| 名称 | 类型 | 可读 | 可写 | 说明 | 1424| ----------- | -------- | ---- | ---- | -------------------------------------------------- | 1425| id | number | 是 | 是 | 模式id,所支持的模式由具体设备分辨率和刷新率决定,该参数应为整数。 | 1426| width | number | 是 | 是 | 屏幕的宽度,单位为px,该参数应为整数。 | 1427| height | number | 是 | 是 | 屏幕的高度,单位为px,该参数应为整数。 | 1428| refreshRate | number | 是 | 是 | 屏幕的刷新率,单位为hz,该参数应为整数。 |