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&lt;Array&lt;Screen&gt;&gt;
60
61获取所有的屏幕,使用Promise异步回调。
62
63**系统能力:** SystemCapability.WindowManager.WindowManager.Core
64
65**返回值:**
66
67| 类型                                          | 说明                                      |
68| --------------------------------------------- | ----------------------------------------- |
69| Promise&lt;Array&lt;[Screen](#screen)&gt;&gt; | 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&lt;number&gt;): 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&lt;number&gt; | 是   | 回调函数。返回屏幕的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&lt;number&gt;): 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&lt;number&gt; | 否   | 回调函数。返回屏幕的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&lt;ExpandOption&gt;, callback: AsyncCallback&lt;number&gt;): void
165
166将屏幕设置为扩展模式,使用callback异步回调。
167
168**系统能力:** SystemCapability.WindowManager.WindowManager.Core
169
170**参数:**
171
172| 参数名   | 类型                                       | 必填 | 说明                         |
173| -------- | ------------------------------------------ | ---- |----------------------------|
174| options  | Array&lt;[ExpandOption](#expandoption)&gt; | 是   | 设置扩展屏幕的参数集合。               |
175| callback | AsyncCallback&lt;number&gt;                     | 是   | 回调函数。返回扩展屏幕的群组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&lt;ExpandOption&gt;): Promise&lt;number&gt;
215
216将屏幕设置为扩展模式,使用Promise异步回调。
217
218**系统能力:** SystemCapability.WindowManager.WindowManager.Core
219
220**参数:**
221
222| 参数名  | 类型                                       | 必填 | 说明                     |
223| ------- | ------------------------------------------ | ---- | ------------------------ |
224| options | Array&lt;[ExpandOption](#expandoption)&gt; | 是   | 设置扩展屏幕的参数集合。 |
225
226**返回值:**
227
228| 类型                  | 说明                              |
229| --------------------- |---------------------------------|
230| Promise&lt;number&gt; | 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&lt;number&gt;, callback: AsyncCallback&lt;void&gt;): void
266
267停止屏幕的扩展模式,使用callback异步回调。
268
269**系统能力:** SystemCapability.WindowManager.WindowManager.Core
270
271**参数:**
272
273| 参数名 | 类型 | 必填 | 说明                                      |
274| ------------ | --------------------------- | --- |-----------------------------------------|
275| expandScreen | Array&lt;number&gt;         | 是   | 扩展屏幕id集合,其中id应为整数。 expandScreen数组大小不应超过1000。  |
276| callback     | AsyncCallback&lt;void&gt; | 是   | 回调函数。当停止屏幕扩展模式成功,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&lt;number&gt;): Promise&lt;void&gt;
307
308停止屏幕的扩展模式,使用Promise异步回调。
309
310**系统能力:** SystemCapability.WindowManager.WindowManager.Core
311
312**参数:**
313
314| 参数名 | 类型 | 必填 | 说明                 |
315| ------------ | ------------------- | --- |--------------------|
316| expandScreen | Array&lt;number&gt; | 是   | 扩展屏幕id集合,其中id应为整数。expandScreen数组大小不应超过1000。 |
317
318**返回值:**
319
320| 类型 | 说明 |
321| --------------------- | ----------------------- |
322| Promise&lt;void&gt; | 无返回结果的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&lt;number&gt;, callback: AsyncCallback&lt;number&gt;): void
350
351将屏幕设置为镜像模式,使用callback异步回调。
352
353**系统能力:** SystemCapability.WindowManager.WindowManager.Core
354
355**参数:**
356
357| 参数名       | 类型                        | 必填 | 说明                 |
358| ------------ | --------------------------- | ---- |--------------------|
359| mainScreen   | number                      | 是   | 主屏幕id,该参数仅支持整数输入。  |
360| mirrorScreen | Array&lt;number&gt;         | 是   | 镜像屏幕id集合,其中id应为整数。 |
361| callback     | AsyncCallback&lt;number&gt; | 是   | 回调函数。返回镜像屏幕的群组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&lt;number&gt;): Promise&lt;number&gt;
393
394将屏幕设置为镜像模式,使用Promise异步回调。
395
396**系统能力:** SystemCapability.WindowManager.WindowManager.Core
397
398**参数:**
399
400| 参数名       | 类型                | 必填 | 说明                 |
401| ------------ | ------------------- | ---- |--------------------|
402| mainScreen   | number              | 是   | 主屏幕id,该参数仅支持整数输入。  |
403| mirrorScreen | Array&lt;number&gt; | 是   | 镜像屏幕id集合。其中id应为整数。 |
404
405**返回值:**
406
407| 类型                  | 说明                              |
408| --------------------- |---------------------------------|
409| Promise&lt;number&gt; | 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&lt;number&gt;, callback: AsyncCallback&lt;void&gt;): void
438
439停止屏幕的镜像模式,使用callback异步回调。
440
441**系统能力:** SystemCapability.WindowManager.WindowManager.Core
442
443**参数:**
444
445| 参数名 | 类型 | 必填 | 说明                                      |
446| ------------ | --------------------------- | --- |-----------------------------------------|
447| mirrorScreen | Array&lt;number&gt;         | 是   | 镜像屏幕id集合,其中id应为整数。 mirrorScreen数组大小不应超过1000。 |
448| callback     | AsyncCallback&lt;void&gt; | 是   | 回调函数。当停止屏幕镜像模式成功,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&lt;number&gt;): Promise&lt;void&gt;
479
480停止屏幕的镜像模式,使用Promise异步回调。
481
482**系统能力:** SystemCapability.WindowManager.WindowManager.Core
483
484**参数:**
485
486| 参数名 | 类型 | 必填 | 说明                 |
487| ------------ | ------------------- | --- |--------------------|
488| mirrorScreen | Array&lt;number&gt; | 是   | 镜像屏幕id集合,其中id应为整数。mirrorScreen数组大小不应超过1000。 |
489
490**返回值:**
491
492| 类型 | 说明 |
493| --------------------- | ----------------------- |
494| Promise&lt;void&gt; | 无返回结果的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&lt;Screen&gt;): 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&lt;[Screen](#screen)&gt;      | 是   | 回调函数,返回创建的虚拟屏幕对象。 |
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&lt;Screen&gt;
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&lt;[Screen](#screen)&gt; | 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&lt;void&gt;): void
645
646销毁虚拟屏幕,使用callback异步回调。
647
648**系统能力:** SystemCapability.WindowManager.WindowManager.Core
649
650**参数:**
651
652| 参数名   | 类型                      | 必填 | 说明                                                         |
653| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
654| screenId | number                    | 是   | 屏幕的id,该参数仅支持整数输入。                                                   |
655| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当销毁虚拟屏幕成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当设置虚拟屏幕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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;boolean&gt;
823
824查询当前自动转屏是否锁定,使用Promise异步回调。
825
826**系统能力:** SystemCapability.WindowManager.WindowManager.Core
827
828**返回值:**
829
830| 类型                   | 说明                                  |
831| ---------------------- | ------------------------------------- |
832| Promise&lt;boolean&gt; | 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&lt;boolean&gt;): void
857
858查询当前自动转屏是否锁定,使用callback异步回调。
859
860**系统能力:** SystemCapability.WindowManager.WindowManager.Core
861
862**参数:**
863
864| 参数名    | 类型                          | 必填 | 说明                                                         |
865| --------- | ---------------------------- | ---- | ------------------------------------------------------------ |
866| callback  | AsyncCallback&lt;boolean&gt; | 是   | 回调函数。返回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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): void
936
937设置自动转屏开关是否锁定,使用callback异步回调。
938
939**系统能力:** SystemCapability.WindowManager.WindowManager.Core
940
941**参数:**
942
943| 参数名    | 类型                      | 必填 | 说明                                                         |
944| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
945| isLocked  | boolean                   | 是   | 自动转屏开关是否锁定。true为锁定,false为未锁定.                 |
946| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置自动转屏是否锁定成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;[ScreenModeInfo](#screenmodeinfo)&gt; | 是   | 否   | 屏幕支持的模式集合。                                                  |
1139| activeModeIndex   | number                                         | 是   | 否   | 当前屏幕所处模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。该参数应为整数。 |
1140| orientation       | [Orientation](#orientation)                     | 是   | 否   | 屏幕方向。                                                       |
1141| sourceMode<sup>10+</sup> | [ScreenSourceMode](#screensourcemode10)            | 是   | 否   | 屏幕来源模式。                                                     |
1142
1143### setOrientation
1144
1145setOrientation(orientation: Orientation, callback: AsyncCallback&lt;void&gt;): void
1146
1147设置屏幕方向,使用callback异步回调。
1148
1149**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1150
1151| 参数名      | 类型                        | 必填 | 说明                                                         |
1152| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
1153| orientation | [Orientation](#orientation) | 是   | 屏幕方向。orientation值必须来自Orientation枚举方向。                |
1154| callback    | AsyncCallback&lt;void&gt;   | 是   | 回调函数。当设置屏幕方向成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): void
1269
1270设置屏幕当前显示模式,使用callback异步回调。
1271
1272**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1273
1274| 参数名    | 类型                      | 必填 | 说明                                                         |
1275| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
1276| modeIndex | number                    | 是   | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 |
1277| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置屏幕当前显示模式成功,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&lt;void&gt;
1330
1331设置屏幕当前显示模式,使用Promise异步回调。
1332
1333**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1334
1335| 参数名    | 类型   | 必填 | 说明       |
1336| --------- | ------ | ---- | ---------- |
1337| modeIndex | number | 是   | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 |
1338
1339**返回值:**
1340
1341| 类型                | 说明                      |
1342| ------------------- | ------------------------- |
1343| Promise&lt;void&gt; | 无返回结果的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&lt;void&gt;): void;
1394
1395设置屏幕的像素密度,使用callback异步回调。
1396
1397**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1398
1399| 参数名     | 类型                      | 必填 | 说明                                       |
1400| ---------- | ------------------------- | ---- |------------------------------------------|
1401| densityDpi | number                    | 是   | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。       |
1402| callback   | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置屏幕的像素密度成功,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&lt;void&gt;
1455
1456设置屏幕的像素密度,使用Promise异步回调。
1457
1458**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1459
1460| 参数名     | 类型   | 必填 | 说明                                 |
1461| ---------- | ------ | ---- |------------------------------------|
1462| densityDpi | number | 是   | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 |
1463
1464**返回值:**
1465
1466| 类型                | 说明                      |
1467| ------------------- | ------------------------- |
1468| Promise&lt;void&gt; | 无返回结果的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,该参数应为整数。                                     |