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