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## screen.setMultiScreenMode<sup>13+</sup> 974 975setMultiScreenMode(primaryScreenId: number, secondaryScreenId: number, secondaryScreenMode: MultiScreenMode): Promise<void> 976 977设置扩展屏幕的显示模式(镜像/扩展),使用Promise异步回调。 978 979**系统能力:** SystemCapability.WindowManager.WindowManager.Core 980 981**参数:** 982 983| 参数名 | 类型 | 必填 | 说明 | 984| ------------ | ------------------- | ---- |--------------------| 985| primaryScreenId | number | 是 | 主屏的id,该参数应为正整数。 | 986| secondaryScreenId | number | 是 | 扩展屏幕的id,该参数应为正整数。| 987| secondaryScreenMode | [MultiScreenMode](#multiscreenmode13) | 是 | 扩展屏幕的显示模式。| 988 989**返回值:** 990 991| 类型 | 说明 | 992| ------------------- | ------------------------- | 993| Promise<void> | 无返回结果的Promise对象。 | 994 995**错误码:** 996 997以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 998 999| 错误码ID | 错误信息 | 1000| ------- | -------------------------------------------- | 1001| 202 | Permission verification failed, non-system application uses system API. | 1002| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 1003| 1400003 | This display manager service works abnormally. | 1004 1005**示例:** 1006 1007```ts 1008import { BusinessError } from '@kit.BasicServicesKit'; 1009 1010let primaryScreenId: number = 0; 1011let secondaryScreenId: number = 12; 1012let screenMode: screen.MultiScreenMode = screen.MultiScreenMode.SCREEN_MIRROR; 1013screen.setMultiScreenMode(primaryScreenId, secondaryScreenId, screenMode).then(() => { 1014 console.info('Succeeded in setting multi screen mode. Data: '); 1015}).catch((err: BusinessError) => { 1016 console.error(`Failed to set multi screen mode. Code:${err.code},message is ${err.message}`); 1017}); 1018``` 1019 1020## screen.setMultiScreenRelativePosition<sup>13+</sup> 1021 1022setMultiScreenRelativePosition(mainScreenOptions: MultiScreenPositionOptions, secondaryScreenOptions: MultiScreenPositionOptions): Promise<void> 1023 1024仅在扩展模式下,设置主屏和扩展屏幕的位置信息,使用Promise异步回调。 1025 1026**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1027 1028**参数:** 1029 1030| 参数名 | 类型 | 必填 | 说明 | 1031| ------------ | ------------------- | ---- |--------------------| 1032| mainScreenOptions | [MultiScreenPositionOptions](#multiscreenpositionoptions13) | 是 | 主屏的位置信息。| 1033| secondaryScreenOptions | [MultiScreenPositionOptions](#multiscreenpositionoptions13) | 是 | 扩展屏幕的位置信息。| 1034 1035**返回值:** 1036 1037| 类型 | 说明 | 1038| ------------------- | ------------------------- | 1039| Promise<void> | 无返回结果的Promise对象。 | 1040 1041**错误码:** 1042 1043以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1044 1045| 错误码ID | 错误信息 | 1046| ------- | -------------------------------------------- | 1047| 202 | Permission verification failed, non-system application uses system API. | 1048| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 1049| 1400003 | This display manager service works abnormally. | 1050 1051**示例:** 1052 1053```ts 1054import { BusinessError } from '@kit.BasicServicesKit'; 1055 1056let mainScreenOptions: screen.MultiScreenPositionOptions = { 1057 id : 0, 1058 startX : 0, 1059 startY : 0 1060}; 1061 1062let secondaryScreenOptions: screen.MultiScreenPositionOptions = { 1063 id : 12, 1064 startX : 1000, 1065 startY : 1000 1066}; 1067 1068screen.setMultiScreenRelativePosition(mainScreenOptions, secondaryScreenOptions).then(() => { 1069 console.info('Succeeded in setting multi screen relative position. Data: '); 1070}).catch((err: BusinessError) => { 1071 console.error(`Failed to set multi screen relative position. Code:${err.code},message is ${err.message}`); 1072}); 1073``` 1074 1075## ExpandOption 1076 1077扩展屏幕的参数。 1078 1079**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1080 1081| 名称 | 类型 | 可读 | 可写 | 说明 | 1082| -------- | -------- | ---- | ---- | ------------------- | 1083| screenId | number | 是 | 是 | 屏幕的id,该参数应为整数。 | 1084| startX | number | 是 | 是 | 屏幕的起始X轴坐标,该参数应为整数。 | 1085| startY | number | 是 | 是 | 屏幕的起始Y轴坐标,该参数应为整数。 | 1086 1087## MultiScreenMode<sup>13+</sup> 1088 1089屏幕模式枚举。 1090 1091**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1092 1093| 参数 | 值 | 说明 | 1094| ------------------ | ---- | -------------------------------- | 1095| SCREEN_MIRROR | 0 | 表示屏幕为镜像模式。 | 1096| SCREEN_EXTAND | 1 | 表示屏幕为扩展模式。 | 1097 1098## MultiScreenPositionOptions<sup>13+</sup> 1099 1100屏幕位置信息。 1101 1102**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1103 1104| 参数名 | 类型 | 可读 | 可写 | 说明 | 1105| -------- | -------- | ---- | ---- | ------------------- | 1106| id | number | 是 | 是 | 屏幕的id,该参数应为正整数,非正整数会作为非法参数报错。| 1107| startX | number | 是 | 是 | 屏幕的起始X轴坐标。以两块屏幕外接矩形的左上顶点为原点,向右为正方向。该参数应为正整数,非正整数会作为非法参数报错。 | 1108| startY | number | 是 | 是 | 屏幕的起始Y轴坐标。以两块屏幕外接矩形的左上顶点为原点,向下为正方向。该参数应为正整数,非正整数会作为非法参数报错。 | 1109 1110## VirtualScreenOption 1111 1112创建虚拟屏幕的参数。 1113 1114**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1115 1116| 名称 | 类型 | 可读 | 可写 | 说明 | 1117| --------- | -------- | ---- | ---- |--------------------------| 1118| name | string | 是 | 是 | 指定虚拟屏幕的名称。 | 1119| width | number | 是 | 是 | 指定虚拟屏幕的宽度,单位为px,该参数应为整数。 | 1120| height | number | 是 | 是 | 指定虚拟屏幕的高度,单位为px,该参数应为整数。 | 1121| density | number | 是 | 是 | 指定虚拟屏幕的密度,单位为px,该参数为浮点数。 | 1122| surfaceId | string | 是 | 是 | 指定虚拟屏幕的surfaceId。 | 1123 1124## Screen 1125 1126屏幕实例。 1127 1128下列API示例中都需先使用[getAllScreens()](#screengetallscreens)、[createVirtualScreen()](#screencreatevirtualscreen)中的任一方法获取到Screen实例,再通过此实例调用对应方法。 1129 1130### 属性 1131 1132**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1133 1134| 名称 | 类型 | 可读 | 可写 | 说明 | 1135| ----------------- | ---------------------------------------------- | ---- | ---- |-------------------------------------------------------------| 1136| id | number | 是 | 否 | 屏幕的id,该参数应为整数。 | 1137| parent | number | 是 | 否 | 屏幕所属群组的id,该参数应为整数。 | 1138| supportedModeInfo | Array<[ScreenModeInfo](#screenmodeinfo)> | 是 | 否 | 屏幕支持的模式集合。 | 1139| activeModeIndex | number | 是 | 否 | 当前屏幕所处模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。该参数应为整数。 | 1140| orientation | [Orientation](#orientation) | 是 | 否 | 屏幕方向。 | 1141| sourceMode<sup>10+</sup> | [ScreenSourceMode](#screensourcemode10) | 是 | 否 | 屏幕来源模式。 | 1142 1143### setOrientation 1144 1145setOrientation(orientation: Orientation, callback: AsyncCallback<void>): void 1146 1147设置屏幕方向,使用callback异步回调。 1148 1149**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1150 1151| 参数名 | 类型 | 必填 | 说明 | 1152| ----------- | --------------------------- | ---- | ------------------------------------------------------------ | 1153| orientation | [Orientation](#orientation) | 是 | 屏幕方向。orientation值必须来自Orientation枚举方向。 | 1154| callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。 | 1155 1156**错误码:** 1157 1158以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1159 1160| 错误码ID | 错误信息 | 1161| ------- | -------------------------------------------- | 1162| 202 | Permission verification failed. A non-system application calls a system API.| 1163| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 1164| 1400003 | This display manager service works abnormally. | 1165 1166**示例:** 1167 1168```ts 1169import { BusinessError } from '@kit.BasicServicesKit'; 1170 1171class VirtualScreenOption { 1172 name : string = ''; 1173 width : number = 0; 1174 height : number = 0; 1175 density : number = 0; 1176 surfaceId : string = ''; 1177} 1178 1179let option : VirtualScreenOption = { 1180 name: 'screen01', 1181 width: 1080, 1182 height: 2340, 1183 density: 2, 1184 surfaceId: '' 1185}; 1186 1187screen.createVirtualScreen(option).then((data: screen.Screen) => { 1188 let screenClass: screen.Screen = data; 1189 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1190 screenClass.setOrientation(screen.Orientation.VERTICAL, (err: BusinessError) => { 1191 const errCode: number = err.code; 1192 if (errCode) { 1193 console.error(`Failed to set the vertical orientation. Code:${err.code},message is ${err.message}`); 1194 return; 1195 } 1196 console.info('Succeeded in setting the vertical orientation.'); 1197 }); 1198}).catch((err: BusinessError) => { 1199 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1200}); 1201``` 1202 1203### setOrientation 1204 1205setOrientation(orientation: Orientation): Promise<void> 1206 1207设置屏幕方向,使用Promise异步回调。 1208 1209**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1210 1211| 参数名 | 类型 | 必填 | 说明 | 1212| ----------- | --------------------------- | ---- | ---------- | 1213| orientation | [Orientation](#orientation) | 是 | 屏幕方向。orientation值必须来自Orientation枚举方向。 | 1214 1215**返回值:** 1216 1217| 类型 | 说明 | 1218| ------------------- | ------------------------- | 1219| Promise<void> | 无返回结果的Promise对象。 | 1220 1221**错误码:** 1222 1223以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1224 1225| 错误码ID | 错误信息 | 1226| ------- | -------------------------------------------- | 1227| 202 | Permission verification failed. A non-system application calls a system API.| 1228| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 1229| 1400003 | This display manager service works abnormally. | 1230 1231**示例:** 1232 1233```ts 1234import { BusinessError } from '@kit.BasicServicesKit'; 1235 1236class VirtualScreenOption { 1237 name : string = ''; 1238 width : number = 0; 1239 height : number = 0; 1240 density : number = 0; 1241 surfaceId : string = ''; 1242} 1243 1244let option : VirtualScreenOption = { 1245 name: 'screen01', 1246 width: 1080, 1247 height: 2340, 1248 density: 2, 1249 surfaceId: '' 1250}; 1251 1252screen.createVirtualScreen(option).then((data: screen.Screen) => { 1253 let screenClass: screen.Screen = data; 1254 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1255 let promise: Promise<void> = screenClass.setOrientation(screen.Orientation.VERTICAL); 1256 promise.then(() => { 1257 console.info('Succeeded in setting the vertical orientation.'); 1258 }).catch((err: BusinessError) => { 1259 console.error(`Failed to set the vertical orientation. 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### setScreenActiveMode 1267 1268setScreenActiveMode(modeIndex: number, callback: AsyncCallback<void>): void 1269 1270设置屏幕当前显示模式,使用callback异步回调。 1271 1272**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1273 1274| 参数名 | 类型 | 必填 | 说明 | 1275| --------- | ------------------------- | ---- | ------------------------------------------------------------ | 1276| modeIndex | number | 是 | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 | 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 1294class VirtualScreenOption { 1295 name : string = ''; 1296 width : number = 0; 1297 height : number = 0; 1298 density : number = 0; 1299 surfaceId : string = ''; 1300} 1301 1302let option : VirtualScreenOption = { 1303 name: 'screen01', 1304 width: 1080, 1305 height: 2340, 1306 density: 2, 1307 surfaceId: '' 1308}; 1309 1310screen.createVirtualScreen(option).then((data: screen.Screen) => { 1311 let screenClass: screen.Screen = data; 1312 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1313 let modeIndex: number = 0; 1314 screenClass.setScreenActiveMode(modeIndex, (err: BusinessError) => { 1315 const errCode: number = err.code; 1316 if (errCode) { 1317 console.error(`Failed to set screen active mode 0. 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### setScreenActiveMode 1328 1329setScreenActiveMode(modeIndex: number): Promise<void> 1330 1331设置屏幕当前显示模式,使用Promise异步回调。 1332 1333**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1334 1335| 参数名 | 类型 | 必填 | 说明 | 1336| --------- | ------ | ---- | ---------- | 1337| modeIndex | number | 是 | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 | 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 1360class VirtualScreenOption { 1361 name : string = ''; 1362 width : number = 0; 1363 height : number = 0; 1364 density : number = 0; 1365 surfaceId : string = ''; 1366} 1367 1368let option : VirtualScreenOption = { 1369 name: 'screen01', 1370 width: 1080, 1371 height: 2340, 1372 density: 2, 1373 surfaceId: '' 1374}; 1375 1376screen.createVirtualScreen(option).then((data: screen.Screen) => { 1377 let screenClass: screen.Screen = data; 1378 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1379 let modeIndex: number = 0; 1380 let promise: Promise<void> = screenClass.setScreenActiveMode(modeIndex); 1381 promise.then(() => { 1382 console.info('Succeeded in setting screen active mode 0.'); 1383 }).catch((err: BusinessError) => { 1384 console.error(`Failed to set screen active mode 0.Code:${err.code},message is ${err.message}`); 1385 }); 1386}).catch((err: BusinessError) => { 1387 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1388}); 1389``` 1390 1391### setDensityDpi 1392 1393setDensityDpi(densityDpi: number, callback: AsyncCallback<void>): void; 1394 1395设置屏幕的像素密度,使用callback异步回调。 1396 1397**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1398 1399| 参数名 | 类型 | 必填 | 说明 | 1400| ---------- | ------------------------- | ---- |------------------------------------------| 1401| densityDpi | number | 是 | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 | 1402| callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕的像素密度成功,err为undefined,否则为错误对象。 | 1403 1404**错误码:** 1405 1406以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1407 1408| 错误码ID | 错误信息 | 1409| ------- | -------------------------------------------- | 1410| 202 | Permission verification failed. A non-system application calls a system API.| 1411| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 1412| 1400003 | This display manager service works abnormally. | 1413 1414**示例:** 1415 1416```ts 1417import { BusinessError } from '@kit.BasicServicesKit'; 1418 1419let densityDpi: number = 320; 1420class VirtualScreenOption { 1421 name : string = ''; 1422 width : number = 0; 1423 height : number = 0; 1424 density : number = 0; 1425 surfaceId : string = ''; 1426} 1427 1428let option : VirtualScreenOption = { 1429 name: 'screen01', 1430 width: 1080, 1431 height: 2340, 1432 density: 2, 1433 surfaceId: '' 1434}; 1435 1436screen.createVirtualScreen(option).then((data: screen.Screen) => { 1437 let screenClass: screen.Screen = data; 1438 console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); 1439 screenClass.setDensityDpi(densityDpi, (err: BusinessError) => { 1440 const errCode: number = err.code; 1441 if (errCode) { 1442 console.error(`Failed to set the pixel density of the screen to 320. Code:${err.code},message is ${err.message}`); 1443 return; 1444 } 1445 console.info('Succeeded in setting the vertical orientation.'); 1446 }); 1447}).catch((err: BusinessError) => { 1448 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1449}); 1450``` 1451 1452### setDensityDpi 1453 1454setDensityDpi(densityDpi: number): Promise<void> 1455 1456设置屏幕的像素密度,使用Promise异步回调。 1457 1458**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1459 1460| 参数名 | 类型 | 必填 | 说明 | 1461| ---------- | ------ | ---- |------------------------------------| 1462| densityDpi | number | 是 | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 | 1463 1464**返回值:** 1465 1466| 类型 | 说明 | 1467| ------------------- | ------------------------- | 1468| Promise<void> | 无返回结果的Promise对象。 | 1469 1470**错误码:** 1471 1472以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 1473 1474| 错误码ID | 错误信息 | 1475| ------- | -------------------------------------------- | 1476| 202 | Permission verification failed. A non-system application calls a system API.| 1477| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| 1478| 1400003 | This display manager service works abnormally. | 1479 1480**示例:** 1481 1482```ts 1483import { BusinessError } from '@kit.BasicServicesKit'; 1484 1485let densityDpi: number = 320; 1486class VirtualScreenOption { 1487 name : string = ''; 1488 width : number = 0; 1489 height : number = 0; 1490 density : number = 0; 1491 surfaceId : string = ''; 1492} 1493 1494let option : VirtualScreenOption = { 1495 name: 'screen01', 1496 width: 1080, 1497 height: 2340, 1498 density: 2, 1499 surfaceId: '' 1500}; 1501 1502screen.createVirtualScreen(option).then((data: screen.Screen) => { 1503 let screenClass: screen.Screen = data; 1504 let promise: Promise<void> = screenClass.setDensityDpi(densityDpi); 1505 promise.then(() => { 1506 console.info('Succeeded in setting the pixel density of the screen to 320.'); 1507 }).catch((err: BusinessError) => { 1508 console.error(`Failed to set the pixel density of the screen to 320. Code:${err.code},message is ${err.message}`); 1509 }); 1510}).catch((err: BusinessError) => { 1511 console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); 1512}); 1513``` 1514 1515## Orientation 1516 1517屏幕方向枚举。 1518 1519**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1520 1521| 名称 | 值 | 说明 | 1522| ------------------ | ---- | -------------------------------- | 1523| UNSPECIFIED | 0 | 表示未指定屏幕方向,由系统指定。 | 1524| VERTICAL | 1 | 表示指定屏幕为垂直方向。 | 1525| HORIZONTAL | 2 | 表示指定屏幕为水平方向。 | 1526| REVERSE_VERTICAL | 3 | 表示指定屏幕为反向垂直方向。 | 1527| REVERSE_HORIZONTAL | 4 | 表示指定屏幕为反向水平方向。 | 1528 1529## ScreenSourceMode<sup>10+</sup> 1530 1531屏幕显示内容来源模式枚举。 1532 1533**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1534 1535| 名称 | 值 | 说明 | 1536| ------------------ | ---- | -------------------------------- | 1537| SCREEN_MAIN | 0 | 表示屏幕为默认主屏。 | 1538| SCREEN_MIRROR | 1 | 表示屏幕内容来自镜像。 | 1539| SCREEN_EXTEND | 2 | 表示屏幕内容来自扩展。 | 1540| SCREEN_ALONE | 3 | 表示屏幕为未指定来源。 | 1541 1542## ScreenModeInfo 1543 1544屏幕显示模式信息。 1545 1546**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1547 1548| 名称 | 类型 | 可读 | 可写 | 说明 | 1549| ----------- | -------- | ---- | ---- | -------------------------------------------------- | 1550| id | number | 是 | 是 | 模式id,所支持的模式由具体设备分辨率和刷新率决定,该参数应为整数。 | 1551| width | number | 是 | 是 | 屏幕的宽度,单位为px,该参数应为整数。 | 1552| height | number | 是 | 是 | 屏幕的高度,单位为px,该参数应为整数。 | 1553| refreshRate | number | 是 | 是 | 屏幕的刷新率,单位为hz,该参数应为整数。 |