• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.screen (屏幕)
2
3本模块提供管理屏幕的一些基础能力,包括获取屏幕对象,监听屏幕变化,创建和销毁虚拟屏幕等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块接口为系统接口。
10
11## 导入模块
12
13```js
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```js
42let screenClass = null;
43screen.getAllScreens((err, data) => {
44    if (err.code) {
45        console.error('Failed to get all screens. Cause:  ' + JSON.stringify(err));
46        return;
47    }
48    console.info('Succeeded in getting all screens. Data:' + JSON.stringify(data));
49    screenClass = data[0];
50});
51```
52
53## screen.getAllScreens
54
55getAllScreens(): Promise<Array<Screen>>
56
57获取所有的屏幕,使用Promise异步回调。
58
59**系统能力:** SystemCapability.WindowManager.WindowManager.Core
60
61**返回值:**
62
63| 类型                                          | 说明                                      |
64| --------------------------------------------- | ----------------------------------------- |
65| Promise<Array<[Screen](#screen)>> | Promise对象。返回当前获取的屏幕对象集合。 |
66
67**错误码:**
68
69以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
70
71| 错误码ID | 错误信息 |
72| ------- | ----------------------- |
73| 1400001 | Invalid display or screen. |
74
75**示例:**
76
77```js
78let screenClass = null;
79let promise = screen.getAllScreens();
80promise.then((data) => {
81    screenClass = data[0];
82    console.log('Succeeded in getting all screens. Data:'+ JSON.stringify(data));
83}).catch((err) => {
84    console.log('Failed to get all screens. Cause: ' + JSON.stringify(err));
85});
86```
87
88## screen.on('connect' | 'disconnect' | 'change')
89
90on(eventType: 'connect' | 'disconnect' | 'change', callback: Callback<number>): void
91
92开启屏幕状态变化的监听。
93
94**系统能力:** SystemCapability.WindowManager.WindowManager.Core
95
96**参数:**
97
98| 参数名    | 类型                   | 必填 | 说明                                                         |
99| --------- | ---------------------- | ---- | ------------------------------------------------------------ |
100| eventType | string                 | 是   | 监听事件。<br/>-eventType为"connect"表示屏幕连接事件。<br/>-eventType为"disconnect"表示断开屏幕连接事件。<br/>-eventType为"change"表示屏幕状态改变事件。 |
101| callback  | Callback&lt;number&gt; | 是   | 回调函数。返回屏幕的id。                                     |
102
103**示例:**
104
105```js
106try {
107    let callback = (data) => {
108        console.info('Succeeded in registering the callback for screen changes. Data: ' + JSON.stringify(data))
109    };
110    screen.on('connect', callback);
111} catch (exception) {
112    console.error('Failed to register the callback for screen changes. Code: ' + JSON.stringify(exception));
113};
114```
115
116## screen.off('connect' | 'disconnect' | 'change')
117
118off(eventType: 'connect' | 'disconnect' | 'change', callback?: Callback&lt;number&gt;): void
119
120关闭屏幕状态变化的监听。
121
122**系统能力:** SystemCapability.WindowManager.WindowManager.Core
123
124**参数:**
125
126| 参数名    | 类型                   | 必填 | 说明                                                         |
127| --------- | ---------------------- | ---- | ------------------------------------------------------------ |
128| eventType | string                 | 是   | 监听事件。<br/>-eventType为"connect"表示屏幕连接事件。<br/>-eventType为"disconnect"表示断开屏幕连接事件。<br/>-eventType为"change"表示屏幕状态改变事件。 |
129| callback  | Callback&lt;number&gt; | 否   | 回调函数。返回屏幕的id。                                     |
130
131**示例:**
132
133```js
134try {
135    let callback = (data) => {
136        console.info('Succeeded in unregistering the callback for screen changes. Data: ' + JSON.stringify(data))
137    };
138    screen.off('connect', callback);
139} catch (exception) {
140    console.error('Failed to register the callback for screen changes. Code: ' + JSON.stringify(exception));
141};
142```
143
144## screen.makeExpand
145
146makeExpand(options:Array&lt;ExpandOption&gt;, callback: AsyncCallback&lt;number&gt;): void
147
148将屏幕设置为扩展模式,使用callback异步回调。
149
150**系统能力:** SystemCapability.WindowManager.WindowManager.Core
151
152**参数:**
153
154| 参数名   | 类型                                       | 必填 | 说明                             |
155| -------- | ------------------------------------------ | ---- | -------------------------------- |
156| options  | Array&lt;[ExpandOption](#expandoption)&gt; | 是   | 设置扩展屏幕的参数集合。         |
157| callback | AsyncCallback&lt;number&gt;                     | 是   | 回调函数。返回扩展屏幕的群组id。 |
158
159**错误码:**
160
161以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
162
163| 错误码ID | 错误信息 |
164| ------- | ----------------------- |
165| 1400001 | Invalid display or screen. |
166
167**示例:**
168
169```js
170try {
171    let groupId = null;
172    screen.makeExpand([{screenId: 0, startX: 0, startY: 0}, {screenId: 1, startX: 1080, startY: 0}], (err, data) => {
173      if (err.code) {
174        console.error('Failed to expand the screen. Code:' + JSON.stringify(err));
175        return;
176      }
177      groupId = data;
178      console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data));
179    });
180} catch (exception) {
181    console.error('Failed to expand the screen. Code: ' + JSON.stringify(exception));
182};
183```
184
185## screen.makeExpand
186
187makeExpand(options:Array&lt;ExpandOption&gt;): Promise&lt;number&gt;
188
189将屏幕设置为扩展模式,使用Promise异步回调。
190
191**系统能力:** SystemCapability.WindowManager.WindowManager.Core
192
193**参数:**
194
195| 参数名  | 类型                                       | 必填 | 说明                     |
196| ------- | ------------------------------------------ | ---- | ------------------------ |
197| options | Array&lt;[ExpandOption](#expandoption)&gt; | 是   | 设置扩展屏幕的参数集合。 |
198
199**返回值:**
200
201| 类型                  | 说明                                |
202| --------------------- | ----------------------------------- |
203| Promise&lt;number&gt; | Promise对象。返回扩展屏幕的群组id。 |
204
205**错误码:**
206
207以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
208
209| 错误码ID | 错误信息 |
210| ------- | ----------------------- |
211| 1400001 | Invalid display or screen. |
212
213**示例:**
214
215```js
216try {
217    screen.makeExpand([{screenId: 0, startX: 0, startY: 0}, {screenId: 1, startX: 1080, startY: 0}]).then((data) => {
218      console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data));
219    }).catch((err) => {
220      console.error('Failed to expand the screen. Code:' + JSON.stringify(err));
221    });
222} catch (exception) {
223    console.error('Failed to expand the screen. Code: ' + JSON.stringify(exception));
224};
225```
226
227## screen.makeMirror
228
229makeMirror(mainScreen:number, mirrorScreen:Array&lt;number&gt;, callback: AsyncCallback&lt;number&gt;): void
230
231将屏幕设置为镜像模式,使用callback异步回调。
232
233**系统能力:** SystemCapability.WindowManager.WindowManager.Core
234
235**参数:**
236
237| 参数名       | 类型                        | 必填 | 说明              |
238| ------------ | --------------------------- | ---- |-----------------|
239| mainScreen   | number                      | 是   | 主屏幕id。          |
240| mirrorScreen | Array&lt;number&gt;         | 是   | 镜像屏幕id集合。       |
241| callback     | AsyncCallback&lt;number&gt; | 是   | 回调函数。返回镜像屏幕的群组id。 |
242
243**错误码:**
244
245以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
246
247| 错误码ID | 错误信息 |
248| ------- | ----------------------- |
249| 1400001 | Invalid display or screen. |
250
251**示例:**
252
253```js
254let mainScreenId = 0;
255let mirrorScreenIds = [1, 2, 3];
256try {
257    screen.makeMirror(mainScreenId, mirrorScreenIds, (err, data) => {
258      if (err.code) {
259        console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(err));
260        return;
261      }
262      console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data));
263    });
264} catch (exception) {
265    console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(exception));
266};
267```
268
269## screen.makeMirror
270
271makeMirror(mainScreen:number, mirrorScreen:Array&lt;number&gt;): Promise&lt;number&gt;
272
273将屏幕设置为镜像模式,使用Promise异步回调。
274
275**系统能力:** SystemCapability.WindowManager.WindowManager.Core
276
277**参数:**
278
279| 参数名       | 类型                | 必填 | 说明        |
280| ------------ | ------------------- | ---- |-----------|
281| mainScreen   | number              | 是   | 主屏幕id。    |
282| mirrorScreen | Array&lt;number&gt; | 是   | 镜像屏幕id集合。 |
283
284**返回值:**
285
286| 类型                  | 说明                                |
287| --------------------- | ----------------------------------- |
288| Promise&lt;number&gt; | Promise对象。返回镜像屏幕的群组id。 |
289
290**错误码:**
291
292以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
293
294| 错误码ID | 错误信息 |
295| ------- | ----------------------- |
296| 1400001 | Invalid display or screen. |
297
298**示例:**
299
300```js
301let mainScreenId = 0;
302let mirrorScreenIds = [1, 2, 3];
303try {
304    screen.makeMirror(mainScreenId, mirrorScreenIds).then((data) => {
305      console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data));
306    }).catch((err) => {
307      console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(err));
308    });
309} catch (exception) {
310    console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(exception));
311};
312```
313
314## screen.createVirtualScreen
315
316createVirtualScreen(options:VirtualScreenOption, callback: AsyncCallback&lt;Screen&gt;): void
317
318创建虚拟屏幕,使用callback异步回调。
319
320**系统能力:** SystemCapability.WindowManager.WindowManager.Core
321
322**需要权限**:ohos.permission.CAPTURE_SCREEN,如果VirtualScreenOption.surfaceId有效,此权限是必需的。仅系统应用可用。
323
324**参数:**
325
326| 参数名   | 类型                                        | 必填 | 说明                               |
327| -------- | ------------------------------------------- | ---- | ---------------------------------- |
328| options  | [VirtualScreenOption](#virtualscreenoption) | 是   | 用于创建虚拟屏幕的参数。           |
329| callback | AsyncCallback&lt;[Screen](#screen)&gt;      | 是   | 回调函数,返回创建的虚拟屏幕对象。 |
330
331**错误码:**
332
333以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
334
335| 错误码ID | 错误信息 |
336| ------- | ----------------------- |
337| 1400001 | Invalid display or screen. |
338
339**示例:**
340
341```js
342let screenClass = null;
343try {
344    screen.createVirtualScreen({
345      name: 'screen01',
346      width: 1080,
347      height: 2340,
348      density: 2,
349      surfaceId: ''
350    }, (err, data) => {
351      if (err.code) {
352        console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
353        return;
354      }
355      screenClass = data;
356      console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data));
357    });
358} catch (exception) {
359    console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(exception));
360};
361```
362
363## screen.createVirtualScreen
364
365createVirtualScreen(options:VirtualScreenOption): Promise&lt;Screen&gt;
366
367创建虚拟屏幕,使用Promise异步回调。
368
369**系统能力:** SystemCapability.WindowManager.WindowManager.Core
370
371**需要权限**:ohos.permission.CAPTURE_SCREEN,如果VirtualScreenOption.surfaceId有效,此权限是必需的。仅系统应用可用。
372
373**参数:**
374
375| 参数名  | 类型                                        | 必填 | 说明                     |
376| ------- | ------------------------------------------- | ---- | ------------------------ |
377| options | [VirtualScreenOption](#virtualscreenoption) | 是   | 用于创建虚拟屏幕的参数。 |
378
379**返回值:**
380
381| 类型                             | 说明                                  |
382| -------------------------------- | ------------------------------------- |
383| Promise&lt;[Screen](#screen)&gt; | Promise对象。返回创建的虚拟屏幕对象。 |
384
385**错误码:**
386
387以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
388
389| 错误码ID | 错误信息 |
390| ------- | ----------------------- |
391| 1400001 | Invalid display or screen. |
392
393**示例:**
394
395```js
396let screenClass = null;
397try {
398    screen.createVirtualScreen({
399      name: 'screen01',
400      width: 1080,
401      height: 2340,
402      density: 2,
403      surfaceId: ''
404    }).then((data) => {
405      screenClass = data;
406      console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data));
407    }).catch((err) => {
408      console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
409    });
410} catch (exception) {
411    console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(exception));
412};
413```
414
415## screen.destroyVirtualScreen
416
417destroyVirtualScreen(screenId:number, callback: AsyncCallback&lt;void&gt;): void
418
419销毁虚拟屏幕,使用callback异步回调。
420
421**系统能力:** SystemCapability.WindowManager.WindowManager.Core
422
423**参数:**
424
425| 参数名   | 类型                      | 必填 | 说明                                                         |
426| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
427| screenId | number                    | 是   | 屏幕的id。                                                   |
428| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当销毁虚拟屏幕成功,err为undefined,否则为错误对象。 |
429
430**错误码:**
431
432以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
433
434| 错误码ID | 错误信息 |
435| ------- | ----------------------------- |
436| 1400002 | Unauthorized operation. |
437
438**示例:**
439
440```js
441let screenId = 1;
442try {
443    screen.destroyVirtualScreen(screenId, (err,data) => {
444      if (err.code) {
445        console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(err));
446        return;
447      }
448      console.info('Succeeded in destroying the virtual screen.');
449    });
450} catch (exception) {
451    console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(exception));
452};
453```
454
455## screen.destroyVirtualScreen
456
457destroyVirtualScreen(screenId:number): Promise&lt;void&gt;
458
459销毁虚拟屏幕,使用Promise异步回调。
460
461**系统能力:** SystemCapability.WindowManager.WindowManager.Core
462
463**参数:**
464
465| 参数名   | 类型   | 必填 | 说明       |
466| -------- | ------ | ---- | ---------- |
467| screenId | number | 是   | 屏幕的id。 |
468
469**返回值:**
470
471| 类型                | 说明                      |
472| ------------------- | ------------------------- |
473| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
474
475**错误码:**
476
477以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
478
479| 错误码ID | 错误信息 |
480| ------- | ----------------------------- |
481| 1400002 | Unauthorized operation. |
482
483**示例:**
484
485```js
486let screenId = 1;
487try {
488    screen.destroyVirtualScreen(screenId).then((data) => {
489      console.info('Succeeded in destroying the virtual screen.');
490    }).catch((err) => {
491      console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(err));
492    });
493} catch (exception) {
494    console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(exception));
495};
496```
497
498## screen.setVirtualScreenSurface
499
500setVirtualScreenSurface(screenId:number, surfaceId: string, callback: AsyncCallback&lt;void&gt;): void
501
502设置虚拟屏幕的surface,使用callback异步回调。
503
504**系统能力:** SystemCapability.WindowManager.WindowManager.Core
505
506**需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。
507
508**参数:**
509
510| 参数名    | 类型                      | 必填 | 说明                                                         |
511| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
512| screenId  | number                    | 是   | 屏幕的id。                                                   |
513| surfaceId | string                    | 是   | surface的id。                                                |
514| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置虚拟屏幕surface成功,err为undefined,否则为错误对象。 |
515
516**错误码:**
517
518以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
519
520| 错误码ID | 错误信息 |
521| ------- | ----------------------- |
522| 1400001 | Invalid display or screen. |
523
524**示例:**
525
526```js
527let screenId = 1;
528let surfaceId = '2048';
529try {
530  screen.setVirtualScreenSurface(screenId, surfaceId, (err,data) => {
531    if (err.code) {
532      console.error('Failed to set the surface for the virtual screen. Code: ' + JSON.stringify(err));
533      return;
534    }
535    console.info('Succeeded in setting the surface for the virtual screen.');
536  });
537} catch (exception) {
538    console.error('Failed to set the surface for the virtual screen. Code: ' + JSON.stringify(exception));
539};
540```
541
542## screen.setVirtualScreenSurface
543
544setVirtualScreenSurface(screenId:number, surfaceId: string): Promise&lt;void&gt;
545
546设置虚拟屏幕的surface,使用Promise异步回调。
547
548**系统能力:** SystemCapability.WindowManager.WindowManager.Core
549
550**需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。
551
552**参数:**
553
554| 参数名    | 类型   | 必填 | 说明          |
555| --------- | ------ | ---- | ------------- |
556| screenId  | number | 是   | 屏幕的id。    |
557| surfaceId | string | 是   | surface的id。 |
558
559**返回值:**
560
561| 类型                | 说明                      |
562| ------------------- | ------------------------- |
563| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
564
565**错误码:**
566
567以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
568
569| 错误码ID | 错误信息 |
570| ------- | ----------------------- |
571| 1400001 | Invalid display or screen. |
572
573**示例:**
574
575```js
576let screenId = 1;
577let surfaceId = '2048';
578try {
579    screen.setVirtualScreenSurface(screenId, surfaceId).then((data) => {
580      console.info('Succeeded in setting the surface for the virtual screen.');
581    }).catch((err) => {
582      console.error('Failed to set the surface for the virtual screen. Code: ' + JSON.stringify(err));
583    });
584} catch (exception) {
585    console.error('Failed to set the surface for the virtual screen. Code: ' + JSON.stringify(exception));
586};
587```
588
589## screen.isScreenRotationLocked
590
591isScreenRotationLocked(): Promise&lt;boolean&gt;
592
593查询当前自动转屏是否锁定,使用Promise异步回调。
594
595**系统能力:** SystemCapability.WindowManager.WindowManager.Core
596
597**返回值:**
598
599| 类型                   | 说明                                  |
600| ---------------------- | ------------------------------------- |
601| Promise&lt;boolean&gt; | Promise对象。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 |
602
603**示例:**
604
605```js
606screen.isScreenRotationLocked().then((isLocked) => {
607  console.info('Succeeded in getting the screen rotation lock status. isLocked:'+ JSON.stringify(isLocked));
608}).catch((err) => {
609  console.error('Failed to get the screen rotation lock status. Cause:' + JSON.stringify(err));
610});
611```
612
613## screen.isScreenRotationLocked
614
615isScreenRotationLocked(callback: AsyncCallback&lt;boolean&gt;): void
616
617查询当前自动转屏是否锁定,使用callback异步回调。
618
619**系统能力:** SystemCapability.WindowManager.WindowManager.Core
620
621**参数:**
622
623| 参数名    | 类型                          | 必填 | 说明                                                         |
624| --------- | ---------------------------- | ---- | ------------------------------------------------------------ |
625| callback  | AsyncCallback&lt;boolean&gt; | 是   | 回调函数。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 |
626
627**示例:**
628
629```js
630screen.isScreenRotationLocked((err, isLocked) => {
631  if (err.code) {
632    console.error('Failed to get the screen rotation lock status. Cause:' + JSON.stringify(err));
633    return;
634  }
635  console.info('Succeeded in getting the screen rotation lock status. isLocked:' + JSON.stringify(isLocked));
636});
637```
638
639## screen.setScreenRotationLocked
640
641setScreenRotationLocked(isLocked: boolean): Promise&lt;void&gt;
642
643设置自动转屏开关是否锁定,使用Promise异步回调。
644
645**系统能力:** SystemCapability.WindowManager.WindowManager.Core
646
647**参数:**
648
649| 参数名    | 类型   | 必填 | 说明          |
650| --------- | ------ | ---- | ------------- |
651| isLocked  | boolean | 是   | 自动转屏开关是否锁定。true为锁定,false为未锁定. |
652
653**返回值:**
654
655| 类型                | 说明                      |
656| ------------------- | ------------------------- |
657| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
658
659**示例:**
660
661```js
662let isLocked = false;
663try {
664    screen.setScreenRotationLocked(isLocked).then((data) => {
665      console.info('Succeeded in unlocking auto rotate');
666    }).catch((err) => {
667      console.error('Failed to unlock auto rotate. Code: ' + JSON.stringify(err));
668    });
669} catch (exception) {
670    console.error('Failed to unlock auto rotate. Code: ' + JSON.stringify(exception));
671};
672```
673
674## screen.setScreenRotationLocked
675
676setScreenRotationLocked(isLocked: boolean, callback: AsyncCallback&lt;void&gt;): void
677
678设置自动转屏开关是否锁定,使用callback异步回调。
679
680**系统能力:** SystemCapability.WindowManager.WindowManager.Core
681
682**参数:**
683
684| 参数名    | 类型                      | 必填 | 说明                                                         |
685| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
686| isLocked  | boolean                   | 是   | 自动转屏开关是否锁定。true为锁定,false为未锁定.                 |
687| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置自动转屏是否锁定成功,err为undefined,否则为错误对象。 |
688
689**示例:**
690
691```js
692let isLocked = false;
693try {
694    screen.setScreenRotationLocked(isLocked, (err, data) => {
695      if (err.code) {
696        console.error('Failed to unlock auto rotate. Cause:' + JSON.stringify(err));
697        return;
698      }
699      console.info('Succeeded in unlocking auto rotate.');
700    });
701} catch (exception) {
702    console.error('Failed to unlock auto rotate. Code: ' + JSON.stringify(exception));
703};
704```
705
706## ExpandOption
707
708扩展屏幕的参数。
709
710**系统能力:** SystemCapability.WindowManager.WindowManager.Core
711
712| 名称     | 类型 | 可读 | 可写 | 说明                |
713| -------- | -------- | ---- | ---- | ------------------- |
714| screenId | number   | 是   | 是   | 屏幕的id。          |
715| startX   | number   | 是   | 是   | 屏幕的起始X轴坐标。 |
716| startY   | number   | 是   | 是   | 屏幕的起始Y轴坐标。 |
717
718## VirtualScreenOption
719
720创建虚拟屏幕的参数。
721
722**系统能力:** SystemCapability.WindowManager.WindowManager.Core
723
724| 名称      | 类型 | 可读 | 可写 | 说明                      |
725| --------- | -------- | ---- | ---- | ------------------------- |
726| name      | string   | 是   | 是   | 指定虚拟屏幕的名称。      |
727| width     | number   | 是   | 是   | 指定虚拟屏幕的宽度,单位为像素。 |
728| height    | number   | 是   | 是   | 指定虚拟屏幕的高度,单位为像素。 |
729| density   | number   | 是   | 是   | 指定虚拟屏幕的密度。      |
730| surfaceId | string   | 是   | 是   | 指定虚拟屏幕的surfaceId。 |
731
732## Screen
733
734屏幕实例。
735
736下列API示例中都需先使用[getAllScreens()](#screengetallscreens)、[createVirtualScreen()](#screencreatevirtualscreen)中的任一方法获取到Screen实例,再通过此实例调用对应方法。
737
738**系统能力:** SystemCapability.WindowManager.WindowManager.Core
739
740| 名称              | 类型                                       | 可读 | 可写 | 说明                   |
741| ----------------- | ---------------------------------------------- | ---- | ---- | ---------------------- |
742| id                | number                                         | 是   | 否   | 屏幕的id。             |
743| parent            | number                                         | 是   | 否   | 屏幕所属群组的id。     |
744| supportedModeInfo | Array&lt;[ScreenModeInfo](#screenmodeinfo)&gt; | 是   | 否   | 屏幕支持的模式集合。   |
745| activeModeIndex   | number                                         | 是   | 否   | 当前屏幕所处模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。 |
746| orientation       | [Orientation](#orientation)                     | 是   | 否   | 屏幕方向。             |
747
748### setOrientation
749
750setOrientation(orientation: Orientation, callback: AsyncCallback&lt;void&gt;): void
751
752设置屏幕方向,使用callback异步回调。
753
754**系统能力:** SystemCapability.WindowManager.WindowManager.Core
755
756| 参数名      | 类型                        | 必填 | 说明                                                         |
757| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
758| orientation | [Orientation](#orientation) | 是   | 屏幕方向。                                                   |
759| callback    | AsyncCallback&lt;void&gt;   | 是   | 回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。 |
760
761**错误码:**
762
763以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
764
765| 错误码ID | 错误信息 |
766| ------- | -------------------------------------------- |
767| 1400003 | This display manager service works abnormally. |
768
769**示例:**
770
771```js
772try {
773    screenClass.setOrientation(screen.Orientation.VERTICAL, (err, data) => {
774        if (err.code) {
775            console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(err));
776            return;
777        }
778        console.info('Succeeded in setting the vertical orientation. data: ' + JSON.stringify(data));
779    });
780} catch (exception) {
781    console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
782};
783```
784
785### setOrientation
786
787setOrientation(orientation: Orientation): Promise&lt;void&gt;
788
789设置屏幕方向,使用Promise异步回调。
790
791**系统能力:** SystemCapability.WindowManager.WindowManager.Core
792
793| 参数名      | 类型                        | 必填 | 说明       |
794| ----------- | --------------------------- | ---- | ---------- |
795| orientation | [Orientation](#orientation) | 是   | 屏幕方向。 |
796
797**返回值:**
798
799| 类型                | 说明                      |
800| ------------------- | ------------------------- |
801| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
802
803**错误码:**
804
805以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
806
807| 错误码ID | 错误信息 |
808| ------- | -------------------------------------------- |
809| 1400003 | This display manager service works abnormally. |
810
811**示例:**
812
813```js
814try {
815    let promise = screenClass.setOrientation(screen.Orientation.VERTICAL);
816    promise.then((data) => {
817        console.info('Succeeded in setting the vertical orientation. Data: ' + JSON.stringify(data));
818    }).catch((err) => {
819        console.error('Failed to set the vertical orientation. Cause: ' + JSON.stringify(err));
820    });
821} catch (exception) {
822    console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
823};
824```
825
826### setScreenActiveMode
827
828setScreenActiveMode(modeIndex: number, callback: AsyncCallback&lt;void&gt;): void
829
830设置屏幕当前显示模式,使用callback异步回调。
831
832**系统能力:** SystemCapability.WindowManager.WindowManager.Core
833
834| 参数名    | 类型                      | 必填 | 说明                                                         |
835| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
836| modeIndex | number                    | 是   | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。 |
837| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置屏幕当前显示模式成功,err为undefined,否则为错误对象。 |
838
839**错误码:**
840
841以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
842
843| 错误码ID | 错误信息 |
844| ------- | -------------------------------------------- |
845| 1400003 | This display manager service works abnormally. |
846
847**示例:**
848
849```js
850let modeIndex = 0;
851try {
852    screenClass.setScreenActiveMode(modeIndex, (err, data) => {
853        if (err.code) {
854            console.error('Failed to set screen active mode 0. Code: ' + JSON.stringify(err));
855            return;
856        }
857        console.info('Succeeded in setting screen active mode 0. data: ' + JSON.stringify(data));
858    });
859} catch (exception) {
860    console.error('Failed to set screen active mode 0. Code: ' + JSON.stringify(exception));
861};
862```
863
864### setScreenActiveMode
865
866setScreenActiveMode(modeIndex: number): Promise&lt;void&gt;
867
868设置屏幕当前显示模式,使用Promise异步回调。
869
870**系统能力:** SystemCapability.WindowManager.WindowManager.Core
871
872| 参数名    | 类型   | 必填 | 说明       |
873| --------- | ------ | ---- | ---------- |
874| modeIndex | number | 是   | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。 |
875
876**返回值:**
877
878| 类型                | 说明                      |
879| ------------------- | ------------------------- |
880| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
881
882**错误码:**
883
884以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
885
886| 错误码ID | 错误信息 |
887| ------- | -------------------------------------------- |
888| 1400003 | This display manager service works abnormally. |
889
890**示例:**
891
892```js
893let modeIndex = 0;
894try {
895    let promise = screenClass.setScreenActiveMode(modeIndex);
896      promise.then((data) => {
897          console.info('Succeeded in setting screen active mode 0. Data: ' + JSON.stringify(data));
898      }).catch((err) => {
899          console.error('Failed to set screen active mode 0. Code: ' + JSON.stringify(err));
900      });
901} catch (exception) {
902    console.error('Failed to set screen active mode 0. Code: ' + JSON.stringify(exception));
903};
904```
905
906### setDensityDpi
907
908setDensityDpi(densityDpi: number, callback: AsyncCallback&lt;void&gt;): void;
909
910设置屏幕的像素密度,使用callback异步回调。
911
912**系统能力:** SystemCapability.WindowManager.WindowManager.Core
913
914| 参数名     | 类型                      | 必填 | 说明                                                         |
915| ---------- | ------------------------- | ---- | ------------------------------------------------------------ |
916| densityDpi | number                    | 是   | 像素密度。支持的输入范围为80-640。                           |
917| callback   | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置屏幕的像素密度成功,err为undefined,否则为错误对象。 |
918
919**错误码:**
920
921以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
922
923| 错误码ID | 错误信息 |
924| ------- | -------------------------------------------- |
925| 1400003 | This display manager service works abnormally. |
926
927**示例:**
928
929```js
930let densityDpi = 320;
931try {
932    screenClass.setDensityDpi(densityDpi, (err, data) => {
933        if (err.code) {
934            console.error('Failed to set the pixel density of the screen to 320. Code: ' + JSON.stringify(err));
935            return;
936        }
937        console.info('Succeed in setting the pixel density of the screen to 320. data: ' + JSON.stringify(data));
938    });
939} catch (exception) {
940    console.error('Failed to set the pixel density of the screen to 320. Code: ' + JSON.stringify(exception));
941};
942```
943
944### setDensityDpi
945
946setDensityDpi(densityDpi: number): Promise&lt;void&gt;
947
948设置屏幕的像素密度,使用Promise异步回调。
949
950**系统能力:** SystemCapability.WindowManager.WindowManager.Core
951
952| 参数名     | 类型   | 必填 | 说明                               |
953| ---------- | ------ | ---- | ---------------------------------- |
954| densityDpi | number | 是   | 像素密度。支持的输入范围为80-640。 |
955
956**返回值:**
957
958| 类型                | 说明                      |
959| ------------------- | ------------------------- |
960| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
961
962**错误码:**
963
964以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
965
966| 错误码ID | 错误信息 |
967| ------- | -------------------------------------------- |
968| 1400003 | This display manager service works abnormally. |
969
970**示例:**
971
972```js
973let densityDpi = 320;
974try {
975    let promise = screenClass.setDensityDpi(densityDpi);
976    promise.then((data) => {
977        console.info('Succeeded in setting the pixel density of the screen to 320. Data: ' + JSON.stringify(data));
978    }).catch((err) => {
979        console.error('Failed to set the pixel density of the screen to 320. Code: ' + JSON.stringify(err));
980    });
981} catch (exception) {
982    console.error('Failed to set the pixel density of the screen to 320. Code: ' + JSON.stringify(exception));
983};
984```
985
986## Orientation
987
988屏幕方向枚举。
989
990**系统能力:** SystemCapability.WindowManager.WindowManager.Core
991
992| 名称               | 值   | 说明                             |
993| ------------------ | ---- | -------------------------------- |
994| UNSPECIFIED        | 0    | 表示未指定屏幕方向,由系统指定。 |
995| VERTICAL           | 1    | 表示指定屏幕为垂直方向。         |
996| HORIZONTAL         | 2    | 表示指定屏幕为水平方向。         |
997| REVERSE_VERTICAL   | 3    | 表示指定屏幕为反向垂直方向。     |
998| REVERSE_HORIZONTAL | 4    | 表示指定屏幕为反向水平方向。     |
999
1000## ScreenModeInfo
1001
1002屏幕显示模式信息。
1003
1004**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1005
1006| 名称        | 类型 | 可读 | 可写 | 说明                                               |
1007| ----------- | -------- | ---- | ---- | -------------------------------------------------- |
1008| id          | number   | 是   | 是   | 模式id,所支持的模式由具体设备分辨率和刷新率决定。 |
1009| width       | number   | 是   | 是   | 屏幕的宽度,单位为像素。                                |
1010| height      | number   | 是   | 是   | 屏幕的高度,单位为像素。                                |
1011| refreshRate | number   | 是   | 是   | 屏幕的刷新率。                                     |