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