1# @ohos.display (屏幕属性)
2
3屏幕属性提供管理显示设备的一些基础能力,包括获取默认显示设备的信息,获取所有显示设备的信息以及监听显示设备的插拔行为。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { display } from '@kit.ArkUI';
13```
14
15## DisplayState
16
17显示设备的状态枚举。
18
19**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
20
21**系统能力:** SystemCapability.WindowManager.WindowManager.Core
22
23| 名称 | 值 | 说明 |
24| -------- | -------- | -------- |
25| STATE_UNKNOWN | 0 | 表示显示设备状态未知。|
26| STATE_OFF | 1 | 表示显示设备状态为关闭。 |
27| STATE_ON | 2 | 表示显示设备状态为开启。|
28| STATE_DOZE | 3 | 表示显示设备为低电耗模式。|
29| STATE_DOZE_SUSPEND | 4 | 表示显示设备为睡眠模式,CPU为挂起状态。 |
30| STATE_VR | 5 | 表示显示设备为VR模式。|
31| STATE_ON_SUSPEND | 6 | 表示显示设备为开启状态,CPU为挂起状态。 |
32
33## Orientation<sup>10+</sup>
34
35显示设备当前显示的方向枚举。
36
37**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
38
39**系统能力:** SystemCapability.WindowManager.WindowManager.Core
40
41| 名称 | 值 | 说明 |
42| -------- | -------- | -------- |
43| PORTRAIT | 0 | 表示设备当前以竖屏方式显示。|
44| LANDSCAPE | 1 | 表示设备当前以横屏方式显示。 |
45| PORTRAIT_INVERTED | 2 | 表示设备当前以反向竖屏方式显示。|
46| LANDSCAPE_INVERTED | 3 | 表示设备当前以反向横屏方式显示。|
47
48## FoldStatus<sup>10+</sup>
49
50当前可折叠设备的折叠状态枚举。
51
52**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
53
54**系统能力:** SystemCapability.Window.SessionManager
55
56| 名称 | 值 | 说明 |
57| -------- | -------- | -------- |
58| FOLD_STATUS_UNKNOWN | 0 | 表示设备当前折叠状态未知。|
59| FOLD_STATUS_EXPANDED | 1 | 表示设备当前折叠状态为完全展开。|
60| FOLD_STATUS_FOLDED | 2 | 表示设备当前折叠状态为折叠。|
61| FOLD_STATUS_HALF_FOLDED | 3 | 表示设备当前折叠状态为半折叠。半折叠指完全展开和折叠之间的状态。|
62
63## FoldDisplayMode<sup>10+</sup>
64
65可折叠设备的显示模式枚举。
66
67**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
68
69**系统能力:** SystemCapability.Window.SessionManager
70
71| 名称 | 值 | 说明 |
72| -------- | -------- | -------- |
73| FOLD_DISPLAY_MODE_UNKNOWN | 0 | 表示设备当前折叠显示模式未知。|
74| FOLD_DISPLAY_MODE_FULL | 1 | 表示设备当前全屏显示。 |
75| FOLD_DISPLAY_MODE_MAIN | 2 | 表示设备当前主屏幕显示。|
76| FOLD_DISPLAY_MODE_SUB | 3 | 表示设备当前子屏幕显示。|
77| FOLD_DISPLAY_MODE_COORDINATION | 4 | 表示设备当前双屏协同显示。|
78
79>**说明:**<br>
80>&bullet; 对于大屏内折产品,内屏显示状态为FOLD_DISPLAY_MODE_FULL,外屏显示状态为FOLD_DISPLAY_MODE_MAIN。<br>
81>&bullet; 对于小屏内折产品,内屏显示状态为FOLD_DISPLAY_MODE_MAIN,外屏显示状态为FOLD_DISPLAY_MODE_SUB。
82
83## FoldCreaseRegion<sup>10+</sup>
84
85折叠折痕区域。
86
87**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
88
89**系统能力:** SystemCapability.Window.SessionManager
90
91| 名称   | 类型 | 可读 | 可写 | 说明               |
92| ------ | -------- | ---- | ---- | ------------------ |
93| displayId   | number   | 是   | 否   | 显示器ID,用于识别折痕所在的屏幕。 |
94| creaseRects    | Array\<[Rect](#rect9)>   | 是   | 否   | 折痕区域。 |
95
96## Rect<sup>9+</sup>
97
98矩形区域。
99
100**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
101
102**系统能力:** SystemCapability.WindowManager.WindowManager.Core
103
104| 名称   | 类型 | 可读 | 可写 | 说明               |
105| ------ | -------- | ---- | ---- | ------------------ |
106| left   | number   | 是   | 是   | 矩形区域的左边界,单位为px,该参数应为整数。 |
107| top    | number   | 是   | 是   | 矩形区域的上边界,单位为px,该参数应为整数。 |
108| width  | number   | 是   | 是   | 矩形区域的宽度,单位为px,该参数应为整数。   |
109| height | number   | 是   | 是   | 矩形区域的高度,单位为px,该参数应为整数。   |
110
111## WaterfallDisplayAreaRects<sup>9+</sup>
112
113瀑布屏曲面部分显示区域。
114
115**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
116
117**系统能力:** SystemCapability.WindowManager.WindowManager.Core
118
119| 名称   | 类型      | 可读 | 可写 | 说明               |
120| ------ | ------------- | ---- | ---- | ------------------ |
121| left   | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的左侧矩形区域。 |
122| top    | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的顶部矩形区域。 |
123| right  | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的右侧矩形区域。 |
124| bottom | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的底部矩形区域。 |
125
126## CutoutInfo<sup>9+</sup>
127
128挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。
129
130**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
131
132**系统能力:** SystemCapability.WindowManager.WindowManager.Core
133
134| 名称                        | 类型      | 可读 | 可写 | 说明               |
135| --------------------------- | ------------- | ---- | ---- | ------------------ |
136| boundingRects                | Array\<[Rect](#rect9)> | 是   | 否   | 挖孔、刘海等区域的边界矩形。 |
137| waterfallDisplayAreaRects   | [WaterfallDisplayAreaRects](#waterfalldisplayarearects9) | 是 | 否 | 瀑布屏曲面部分显示区域。 |
138
139## DisplayPhysicalResolution<sup>12+</sup>
140折叠设备的显示模式以及对应的物理屏幕分辨率信息。
141
142**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
143
144**系统能力:** SystemCapability.WindowManager.WindowManager.Core
145
146| 名称                        | 类型      | 只读 | 可选 | 说明               |
147| --------------------------- | ------------- | ---- | ---- | ------------------ |
148| foldDisplayMode             | [FoldDisplayMode](#folddisplaymode10) | 是   | 否   | 折叠设备的显示模式。 |
149| physicalWidth   | number | 是 | 否 | 折叠设备的宽度,单位为px,该参数应为大于0的整数。|
150| physicalHeight  | number | 是 | 否 | 折叠设备的高度,单位为px,该参数应为大于0的整数。|
151
152## display.getDisplayByIdSync<sup>12+</sup>
153
154getDisplayByIdSync(displayId: number): Display
155
156根据displayId获取对应的display对象。
157
158**系统能力:** SystemCapability.WindowManager.WindowManager.Core
159
160**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
161
162**参数:**
163
164| 参数名 | 类型                      | 必填 | 说明       |
165| ------ | ------------------------- | ---- |----------|
166| displayId     | number                    | 是   | 屏幕id。该参数仅支持整数输入,该参数大于等于0。需要确保displayId准确才能成功获取到对应结果。可以通过[WindowProperties](js-apis-window.md#windowproperties)的displayId属性获取到准确的displayId作为入参。 |
167
168**返回值:**
169
170| 类型                           | 说明                                           |
171| ------------------------------| ----------------------------------------------|
172| [Display](#display) | 返回displayId对应的display对象。 |
173
174**错误码:**
175
176以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
177
178| 错误码ID | 错误信息 |
179| ------- | ----------------------- |
180| 401     | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.2. Incorrect parameter types. 3. Parameter verification failed.|
181| 1400003 | This display manager service works abnormally. |
182
183**示例:**
184
185```ts
186import { display } from '@kit.ArkUI';
187
188let displayClass: display.Display | null = null;
189
190try {
191  // 可以通过WindowProperties的displayId属性获取到准确的displayId作为入参
192  let displayId = 0;
193  displayClass = display.getDisplayByIdSync(displayId);
194} catch (exception) {
195  console.error(`Failed to get display. Code: ${exception.code}, message: ${exception.message}`);
196}
197```
198
199## display.getAllDisplayPhysicalResolution<sup>12+</sup>
200
201getAllDisplayPhysicalResolution(): Promise&lt;Array&lt;DisplayPhysicalResolution&gt;&gt;
202
203获取当前折叠设备的显示模式以及对应的物理屏幕分辨率信息对象。
204
205**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
206
207**系统能力:** SystemCapability.WindowManager.WindowManager.Core
208
209**返回值:**
210
211| 类型 | 说明 |
212| ----------------------------------------------- | ------------------------------------------------------- |
213| Promise&lt;Array&lt;[DisplayPhysicalResolution](#displayphysicalresolution12)&gt;&gt; | Promise对象。返回当前所有的DisplayPhysicalResolution对象。 |
214
215**错误码:**
216
217以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
218
219| 错误码ID | 错误信息 |
220| ------- | ----------------------- |
221| 1400003 | This display manager service works abnormally. |
222
223**示例:**
224
225```ts
226import { BusinessError } from '@kit.BasicServicesKit';
227import { display } from '@kit.ArkUI';
228
229let promise = display.getAllDisplayPhysicalResolution();
230promise.then((resolutionObjects) => {
231  console.info('Obtaining physical resolution length: ' + resolutionObjects.length);
232  for (let i = 0; i < resolutionObjects.length; i++) {
233     console.info(`resolutionObjects[${i}].foldDisplayMode: ${resolutionObjects[i].foldDisplayMode}`);
234     console.info(`resolutionObjects[${i}].physicalWidth: ${resolutionObjects[i].physicalWidth}`);
235     console.info(`resolutionObjects[${i}].physicalHeight: ${resolutionObjects[i].physicalHeight}`);
236  }
237}).catch((err: BusinessError) => {
238  console.error(`Failed to obtain physical resolution. Code: ${err.code}, message: ${err.message}`);
239});
240```
241
242## display.getDefaultDisplaySync<sup>9+</sup>
243
244getDefaultDisplaySync(): Display
245
246获取当前默认的display对象。
247
248**系统能力:** SystemCapability.WindowManager.WindowManager.Core
249
250**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
251
252**返回值:**
253
254| 类型                           | 说明                                           |
255| ------------------------------| ----------------------------------------------|
256| [Display](#display) | 返回默认的display对象。 |
257
258**错误码:**
259
260以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
261
262| 错误码ID | 错误信息 |
263| ------- | ----------------------- |
264| 1400001 | Invalid display or screen. |
265
266**示例:**
267
268```ts
269import { display } from '@kit.ArkUI';
270
271let displayClass: display.Display | null = null;
272
273displayClass = display.getDefaultDisplaySync();
274```
275
276## display.getPrimaryDisplaySync<sup>14+</sup>
277
278getPrimaryDisplaySync(): Display
279
280获取主屏信息。除2in1之外的设备获取的是设备自带屏幕的Display对象;2in1设备外接屏幕时获取的是当前主屏幕的Display对象;2in1设备没有外接屏幕时获取的是自带屏幕的Display对象。
281
282**系统能力:** SystemCapability.WindowManager.WindowManager.Core
283
284**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
285
286**返回值:**
287
288| 类型                           | 说明                                           |
289| ------------------------------| ----------------------------------------------|
290| [Display](#display) | 当前设备主屏幕的Display对象。 |
291
292**错误码:**
293
294以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
295
296| 错误码ID | 错误信息 |
297| ------- | ----------------------- |
298| 1400001 | Invalid display or screen. |
299
300**示例:**
301
302```ts
303import { display } from '@kit.ArkUI';
304
305let displayClass: display.Display | null = null;
306
307displayClass = display.getPrimaryDisplaySync();
308```
309
310## display.getAllDisplays<sup>9+</sup>
311
312getAllDisplays(callback: AsyncCallback&lt;Array&lt;Display&gt;&gt;): void
313
314获取当前所有的display对象,使用callback异步回调。
315
316**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
317
318**系统能力:** SystemCapability.WindowManager.WindowManager.Core
319
320**参数:**
321
322| 参数名 | 类型 | 必填 | 说明 |
323| -------- | ---------------------------------------------------- | ---- | ------------------------------- |
324| callback | AsyncCallback&lt;Array&lt;[Display](#display)&gt;&gt; | 是 | 回调函数。返回当前所有的display对象。 |
325
326**错误码:**
327
328以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
329
330| 错误码ID | 错误信息 |
331| ------- | ----------------------- |
332| 1400001 | Invalid display or screen. |
333
334**示例:**
335
336```ts
337import { BusinessError } from '@kit.BasicServicesKit';
338import { display } from '@kit.ArkUI';
339
340let displayClass: Array<display.Display> = [];
341display.getAllDisplays((err: BusinessError, data: Array<display.Display>) => {
342  displayClass = data;
343  const errCode: number = err.code;
344  if (errCode) {
345    console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
346    return;
347  }
348  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
349});
350```
351
352## display.getAllDisplays<sup>9+</sup>
353
354getAllDisplays(): Promise&lt;Array&lt;Display&gt;&gt;
355
356获取当前所有的display对象,使用Promise异步回调。
357
358**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
359
360**系统能力:** SystemCapability.WindowManager.WindowManager.Core
361
362**返回值:**
363
364| 类型 | 说明 |
365| ----------------------------------------------- | ------------------------------------------------------- |
366| Promise&lt;Array&lt;[Display](#display)&gt;&gt; | Promise对象。返回当前所有的display对象。 |
367
368**错误码:**
369
370以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
371
372| 错误码ID | 错误信息 |
373| ------- | ----------------------- |
374| 1400001 | Invalid display or screen. |
375
376**示例:**
377
378```ts
379import { BusinessError } from '@kit.BasicServicesKit';
380import { display } from '@kit.ArkUI';
381
382let displayClass: Array<display.Display> =[];
383let promise: Promise<Array<display.Display>> = display.getAllDisplays();
384promise.then((data: Array<display.Display>) => {
385  displayClass = data;
386  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
387}).catch((err: BusinessError) => {
388  console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
389});
390```
391
392## display.on('add'|'remove'|'change')
393
394on(type: 'add'|'remove'|'change', callback: Callback&lt;number&gt;): void
395
396开启显示设备变化的监听。
397
398**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
399
400**系统能力:** SystemCapability.WindowManager.WindowManager.Core
401
402**参数:**
403
404| 参数名 | 类型 | 必填 | 说明                                                                                                                              |
405| -------- | -------- | -------- |---------------------------------------------------------------------------------------------------------------------------------|
406| type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。例如:插入显示器。<br/>- type为"remove",表示移除显示设备事件。例如:移除显示器。<br/>- type为"change",表示改变显示设备事件。例如:显示器方向改变。 |
407| callback | Callback&lt;number&gt; | 是 | 回调函数。返回监听到的显示设备的id,该参数应为整数。                                                                                                     |
408
409**错误码:**
410
411以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
412
413| 错误码ID | 错误信息 |
414| ------- | ----------------------- |
415| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
416
417**示例:**
418
419```ts
420import { Callback } from '@kit.BasicServicesKit';
421
422let callback: Callback<number> = (data: number) => {
423  console.info('Listening enabled. Data: ' + JSON.stringify(data));
424};
425
426display.on("add", callback);
427```
428
429## display.off('add'|'remove'|'change')
430
431off(type: 'add'|'remove'|'change', callback?: Callback&lt;number&gt;): void
432
433关闭显示设备变化的监听。
434
435**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
436
437**系统能力:** SystemCapability.WindowManager.WindowManager.Core
438
439**参数:**
440
441| 参数名 | 类型 | 必填 | 说明 |
442| -------- | -------- | -------- | -------- |
443| type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。例如:插入显示器。<br/>- type为"remove",表示移除显示设备事件。例如:移除显示器。<br/>- type为"change",表示改变显示设备事件。例如:显示器方向改变。 |
444| callback | Callback&lt;number&gt; | 否 | 需要取消注册的回调函数。若无此参数,则取消注册当前type类型事件监听的所有回调函数。 |
445
446**错误码:**
447
448以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
449
450| 错误码ID | 错误信息 |
451| ------- | ----------------------- |
452| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
453
454**示例:**
455
456```ts
457
458// 如果通过on注册多个callback,同时关闭所有callback监听
459display.off("remove");
460
461let callback: Callback<number> = (data: number) => {
462  console.info('Succeeded in unregistering the callback for display remove. Data: ' + JSON.stringify(data))
463};
464// 关闭传入的callback监听
465display.off('remove', callback);
466```
467
468## display.isFoldable<sup>10+</sup>
469isFoldable(): boolean
470
471检查设备是否可折叠。
472
473**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
474
475**系统能力:** SystemCapability.Window.SessionManager
476
477**返回值:**
478
479| 类型 | 说明 |
480| ----------------------------------------------- | ------------------------------------------------------- |
481| boolean | boolean对象,返回当前设备是否可折叠的结果。false表示不可折叠,true表示可折叠。|
482
483**错误码:**
484
485以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
486
487| 错误码ID | 错误信息 |
488| ------- | ----------------------- |
489| 1400003 | This display manager service works abnormally. |
490
491**示例:**
492
493```ts
494import { display } from '@kit.ArkUI';
495
496let ret: boolean = false;
497ret = display.isFoldable();
498```
499
500## display.getFoldStatus<sup>10+</sup>
501getFoldStatus(): FoldStatus
502
503获取可折叠设备的当前折叠状态。
504
505**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
506
507**系统能力:** SystemCapability.Window.SessionManager
508
509**返回值:**
510
511| 类型 | 说明 |
512| ----------------------------------------------- | ------------------------------------------------------- |
513| [FoldStatus](#foldstatus10) | FoldStatus对象,返回当前可折叠设备的折叠状态。 |
514
515**错误码:**
516
517以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
518
519| 错误码ID | 错误信息 |
520| ------- | ----------------------- |
521| 1400003 | This display manager service works abnormally. |
522
523**示例:**
524
525```ts
526import { display } from '@kit.ArkUI';
527
528let data: display.FoldStatus = display.getFoldStatus();
529console.info('Succeeded in obtaining fold status. Data: ' + JSON.stringify(data));
530```
531
532## display.getFoldDisplayMode<sup>10+</sup>
533getFoldDisplayMode(): FoldDisplayMode
534
535获取可折叠设备的显示模式。
536
537**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
538
539**系统能力:** SystemCapability.Window.SessionManager
540
541**返回值:**
542
543| 类型 | 说明 |
544| ----------------------------------------------- | ------------------------------------------------------- |
545| [FoldDisplayMode](#folddisplaymode10) | FoldDisplayMode对象,返回当前可折叠设备的显示模式。 |
546
547**错误码:**
548
549以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
550
551| 错误码ID | 错误信息 |
552| ------- | ----------------------- |
553| 1400003 | This display manager service works abnormally. |
554
555**示例:**
556
557```ts
558import { display } from '@kit.ArkUI';
559
560let data: display.FoldDisplayMode = display.getFoldDisplayMode();
561console.info('Succeeded in obtaining fold display mode. Data: ' + JSON.stringify(data));
562```
563
564## display.getCurrentFoldCreaseRegion<sup>10+</sup>
565getCurrentFoldCreaseRegion(): FoldCreaseRegion
566
567在当前显示模式下获取折叠折痕区域。
568
569**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
570
571**系统能力:** SystemCapability.Window.SessionManager
572
573**返回值:**
574
575| 类型 | 说明 |
576| ----------------------------------------------- | ------------------------------------------------------- |
577| [FoldCreaseRegion](#foldcreaseregion10) | FoldCreaseRegion对象,返回设备在当前显示模式下的折叠折痕区域。 |
578
579**错误码:**
580
581以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
582
583| 错误码ID | 错误信息 |
584| ------- | ----------------------- |
585| 1400003 | This display manager service works abnormally. |
586
587**示例:**
588
589```ts
590import { display } from '@kit.ArkUI';
591
592let data: display.FoldCreaseRegion = display.getCurrentFoldCreaseRegion();
593console.info('Succeeded in obtaining current fold crease region. Data: ' + JSON.stringify(data));
594```
595
596## display.on('foldStatusChange')<sup>10+</sup>
597
598on(type: 'foldStatusChange', callback: Callback&lt;FoldStatus&gt;): void
599
600开启折叠设备折叠状态变化的监听。
601
602本接口监听设备物理折叠状态的变化,[display.on('foldDispla
603yModeChange')](#displayonfolddisplaymodechange10)则监听屏幕显示模式的变化。
604
605两者存在差异,时序上物理折叠状态变化在前,底层会根据物理折叠状态匹配屏幕显示模式状态。
606
607若需监听当前显示内容是显示在折叠设备的内屏还是外屏,请使用[display.on('foldDisplayModeChange')](#displayonfolddisplaymodechange10)。
608
609**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
610
611**系统能力:** SystemCapability.Window.SessionManager
612
613**参数:**
614
615| 参数名   | 类型                                       | 必填 | 说明                                                    |
616| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
617| type     | string                                   | 是   | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 |
618| callback | Callback&lt;[FoldStatus](#foldstatus10)&gt; | 是   | 回调函数。表示折叠设备折叠状态。 |
619
620**错误码:**
621
622以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
623
624| 错误码ID | 错误信息 |
625| ------- | ----------------------- |
626| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
627| 1400003 | This display manager service works abnormally. |
628
629**示例:**
630
631```ts
632import { Callback } from '@kit.BasicServicesKit';
633
634/**
635 * 注册监听的callback参数要采用对象传递.
636 * 若使用匿名函数注册,每次调用会创建一个新的底层对象,引起内存泄漏问题。
637*/
638let callback: Callback<display.FoldStatus> = (data: display.FoldStatus) => {
639  console.info('Listening enabled. Data: ' + JSON.stringify(data));
640};
641display.on('foldStatusChange', callback);
642```
643
644## display.off('foldStatusChange')<sup>10+</sup>
645
646off(type: 'foldStatusChange', callback?: Callback&lt;FoldStatus&gt;): void
647
648关闭折叠设备折叠状态变化的监听。
649
650**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
651
652**系统能力:** SystemCapability.Window.SessionManager
653
654**参数:**
655
656| 参数名   | 类型                                       | 必填 | 说明                                                    |
657| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
658| type     | string                                   | 是   | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 |
659| callback | Callback&lt;[FoldStatus](#foldstatus10)&gt; | 否   | 需要取消注册的回调函数。若无此参数,则取消注册折叠状态变化监听的所有回调函数。 |
660
661**错误码:**
662
663以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
664
665| 错误码ID | 错误信息 |
666| ------- | ----------------------- |
667| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
668| 1400003 | This display manager service works abnormally. |
669
670**示例:**
671
672```ts
673
674// 如果通过on注册多个callback,同时关闭所有callback监听
675display.off('foldStatusChange');
676
677let callback: Callback<display.FoldStatus> = (data: display.FoldStatus) => {
678  console.info('unregistering FoldStatus changes callback. Data: ' + JSON.stringify(data));
679};
680// 关闭传入的callback监听
681display.off('foldStatusChange', callback);
682```
683
684## display.on('foldAngleChange')<sup>12+</sup>
685
686on(type: 'foldAngleChange', callback: Callback&lt;Array&lt;number&gt;&gt;): void
687
688开启折叠设备折叠角度变化的监听。
689
690**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
691
692**系统能力:** SystemCapability.Window.SessionManager
693
694**参数:**
695
696| 参数名   | 类型                                      | 必填 | 说明                                                    |
697| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
698| type     | string                                   | 是 | 监听事件,固定为'foldAngleChange',表示折叠设备折叠角度发生变化。|
699| callback | Callback&lt;Array&lt;number&gt;&gt; | 是 | 回调函数。表示折叠设备屏幕折叠角度值(0度~180度)。|
700
701**错误码:**
702
703以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
704
705| 错误码ID | 错误信息 |
706| ------- | ----------------------- |
707| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
708| 1400003 | This display manager service works abnormally. |
709
710**示例:**
711
712```ts
713import { Callback } from '@kit.BasicServicesKit';
714
715let callback: Callback<Array<number>> = (angles: Array<number>) => {
716  console.info('Listening fold angles length: ' + angles.length);
717};
718display.on('foldAngleChange', callback);
719```
720
721## display.off('foldAngleChange')<sup>12+</sup>
722
723off(type: 'foldAngleChange', callback?: Callback&lt;Array&lt;number&gt;&gt;): void
724
725关闭折叠设备折叠角度变化的监听。
726
727**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
728
729**系统能力:** SystemCapability.Window.SessionManager
730
731**参数:**
732
733| 参数名   | 类型                                       | 必填 | 说明                                                    |
734| -------- |-------------------------------------------| ---- | ------------------------------------------------------- |
735| type     | string                                    | 是  | 监听事件,固定为'foldAngleChange'表示折叠设备折叠角度发生变化。|
736| callback | Callback&lt;Array&lt;number&gt;&gt; | 否  | 需要取消注册的回调函数。若无此参数,则取消注册折叠角度变化监听的所有回调函数。|
737
738**错误码:**
739
740以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
741
742| 错误码ID | 错误信息 |
743| ------- | ----------------------- |
744| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
745| 1400003 | This display manager service works abnormally. |
746
747**示例:**
748
749```ts
750display.off('foldAngleChange');
751```
752
753## display.on('captureStatusChange')<sup>12+</sup>
754
755on(type: 'captureStatusChange', callback: Callback&lt;boolean&gt;): void
756
757开启屏幕截屏、投屏、录屏状态变化的监听。
758
759**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
760
761**系统能力:** SystemCapability.Window.SessionManager
762
763**参数:**
764
765| 参数名   | 类型                                       | 必填 | 说明                                                    |
766| -------- |-------------------------------------------| ---- | ------------------------------------------------------- |
767| type     | string                                   | 是 | 监听事件,固定为'captureStatusChange'表示设备截屏、投屏或者录屏状态发生变化。|
768| callback | Callback&lt;boolean&gt; | 是 | 回调函数。表示设备截屏、投屏、录屏状态发生变化。true表示设备开始截屏、投屏或者录屏,false表示结束截屏、投屏、录屏。|
769
770**错误码:**
771
772以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
773
774| 错误码ID | 错误信息 |
775| ------- | ----------------------- |
776| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
777| 1400003 | This display manager service works abnormally. |
778
779**示例:**
780
781```ts
782import { Callback } from '@kit.BasicServicesKit';
783
784let callback: Callback<boolean> = (captureStatus: boolean) => {
785  console.info('Listening capture status: ' + captureStatus);
786};
787display.on('captureStatusChange', callback);
788```
789
790## display.off('captureStatusChange')<sup>12+</sup>
791
792off(type: 'captureStatusChange', callback?: Callback&lt;boolean&gt;): void
793
794关闭屏幕截屏、投屏、录屏状态变化的监听。
795
796**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
797
798**系统能力:** SystemCapability.Window.SessionManager
799
800**参数:**
801
802| 参数名   | 类型                                       | 必填 | 说明                                                    |
803| -------- |-------------------------------------------| ---- | ------------------------------------------------------- |
804| type     | string                                   | 是 | 监听事件,固定为'captureStatusChange'表示设备截屏、投屏、录屏状态发生变化。|
805| callback | Callback&lt;boolean&gt; | 否 | 需要取消注册的回调函数。若无此参数,则取消注册截屏、投屏、录屏状态变化监听的所有回调函数。|
806
807**错误码:**
808
809以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
810
811| 错误码ID | 错误信息 |
812| ------- | ----------------------- |
813| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
814| 1400003 | This display manager service works abnormally. |
815
816**示例:**
817
818```ts
819display.off('captureStatusChange');
820```
821
822## display.isCaptured<sup>12+</sup>
823isCaptured(): boolean
824
825检查设备是否正在截屏、投屏、录屏。
826
827**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
828
829**系统能力:** SystemCapability.Window.SessionManager
830
831**返回值:**
832
833| 类型 | 说明 |
834| ----------------------------------------------- | ------------------------------------------------------- |
835| boolean | boolean值,返回当前设备是否有截屏、投屏或者录屏。true表示有截屏、投屏、录屏,否则返回false。|
836
837**错误码:**
838
839以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
840
841| 错误码ID | 错误信息 |
842| ------- | ----------------------- |
843| 1400003 | This display manager service works abnormally. |
844
845**示例:**
846
847```ts
848import { display } from '@kit.ArkUI';
849
850let ret: boolean = false;
851ret = display.isCaptured();
852```
853
854## display.on('foldDisplayModeChange')<sup>10+</sup>
855
856on(type: 'foldDisplayModeChange', callback: Callback&lt;FoldDisplayMode&gt;): void
857
858开启折叠设备屏幕显示模式变化的监听。
859
860本接口监听设备屏幕显示模式的变化,[display.on('foldStatusChange')](#displayonfoldstatuschange10)则监听设备物理折叠状态的变化。
861
862两者存在差异,时序上物理折叠状态变化在前,底层会根据物理折叠状态匹配屏幕显示模式状态。
863
864**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
865
866**系统能力:** SystemCapability.Window.SessionManager
867
868**参数:**
869
870| 参数名   | 类型                                       | 必填 | 说明                                                    |
871| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
872| type     | string                                   | 是   | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 |
873| callback | Callback&lt;[FoldDisplayMode](#folddisplaymode10)&gt; | 是   | 回调函数。表示折叠设备屏幕显示模式。 |
874
875**错误码:**
876
877以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
878
879| 错误码ID | 错误信息 |
880| ------- | ----------------------- |
881| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
882| 1400003 | This display manager service works abnormally. |
883
884**示例:**
885
886```ts
887import { Callback } from '@kit.BasicServicesKit';
888
889/**
890 * 注册监听的callback参数要采用对象传递.
891 * 若使用匿名函数注册,每次调用会创建一个新的底层对象,引起内存泄漏问题。
892*/
893let callback: Callback<display.FoldDisplayMode> = (data: display.FoldDisplayMode) => {
894  console.info('Listening enabled. Data: ' + JSON.stringify(data));
895};
896display.on('foldDisplayModeChange', callback);
897```
898
899## display.off('foldDisplayModeChange')<sup>10+</sup>
900
901off(type: 'foldDisplayModeChange', callback?: Callback&lt;FoldDisplayMode&gt;): void
902
903关闭折叠设备屏幕显示模式变化的监听。
904
905**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
906
907**系统能力:** SystemCapability.Window.SessionManager
908
909**参数:**
910
911| 参数名   | 类型                                       | 必填 | 说明                                                    |
912| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
913| type     | string                                   | 是   | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 |
914| callback | Callback&lt;[FoldDisplayMode](#folddisplaymode10)&gt; | 否   | 需要取消注册的回调函数。若无此参数,则取消注册屏幕显示模式变化监听的所有回调函数。 |
915
916**错误码:**
917
918以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
919
920| 错误码ID | 错误信息 |
921| ------- | ----------------------- |
922| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
923| 1400003 | This display manager service works abnormally. |
924
925**示例:**
926
927```ts
928
929// 如果通过on注册多个callback,同时关闭所有callback监听
930display.off('foldDisplayModeChange');
931
932let callback: Callback<display.FoldDisplayMode> = (data: display.FoldDisplayMode) => {
933  console.info('unregistering FoldDisplayMode changes callback. Data: ' + JSON.stringify(data));
934};
935// 关闭传入的callback监听
936display.off('foldDisplayModeChange', callback);
937```
938
939
940## display.getDefaultDisplay<sup>(deprecated)</sup>
941
942getDefaultDisplay(callback: AsyncCallback&lt;Display&gt;): void
943
944获取当前默认的display对象,使用callback异步回调。
945
946> **说明:**
947>
948> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)。
949
950**系统能力:** SystemCapability.WindowManager.WindowManager.Core
951
952**参数:**
953
954| 参数名 | 类型 | 必填 | 说明 |
955| -------- | -------- | -------- | -------- |
956| callback | AsyncCallback&lt;[Display](#display)&gt; | 是 | 回调函数。返回当前默认的display对象。 |
957
958**示例:**
959
960```ts
961import { BusinessError } from '@kit.BasicServicesKit';
962
963let displayClass: display.Display | null = null;
964display.getDefaultDisplay((err: BusinessError, data: display.Display) => {
965  const errCode: number = err.code;
966  if (errCode) {
967    console.error(`Failed to obtain the default display object. Code: ${err.code}, message: ${err.message}`);
968    return;
969  }
970  console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
971  displayClass = data;
972});
973```
974
975## display.getDefaultDisplay<sup>(deprecated)</sup>
976
977getDefaultDisplay(): Promise&lt;Display&gt;
978
979获取当前默认的display对象,使用Promise异步回调。
980
981> **说明:**
982>
983> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)。
984
985**系统能力:** SystemCapability.WindowManager.WindowManager.Core
986
987**返回值:**
988
989| 类型                               | 说明                                           |
990| ---------------------------------- | ---------------------------------------------- |
991| Promise&lt;[Display](#display)&gt; | Promise对象。返回当前默认的display对象。 |
992
993**示例:**
994
995```ts
996import { BusinessError } from '@kit.BasicServicesKit';
997
998let displayClass: display.Display | null = null;
999let promise: Promise<display.Display> = display.getDefaultDisplay();
1000promise.then((data: display.Display) => {
1001  displayClass = data;
1002  console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
1003}).catch((err: BusinessError) => {
1004  console.error(`Failed to obtain the default display object. Code: ${err.code}, message: ${err.message}`);
1005});
1006```
1007
1008## display.getAllDisplay<sup>(deprecated)</sup>
1009
1010getAllDisplay(callback: AsyncCallback&lt;Array&lt;Display&gt;&gt;): void
1011
1012获取当前所有的display对象,使用callback异步回调。
1013
1014> **说明:**
1015>
1016> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getAllDisplays()](#displaygetalldisplays9)。
1017
1018**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1019
1020**参数:**
1021
1022| 参数名   | 类型                                                 | 必填 | 说明                            |
1023| -------- | ---------------------------------------------------- | ---- | ------------------------------- |
1024| callback | AsyncCallback&lt;Array&lt;[Display](#display)&gt;&gt; | 是   | 回调函数。返回当前所有的display对象。 |
1025
1026**示例:**
1027
1028```ts
1029import { BusinessError } from '@kit.BasicServicesKit';
1030
1031display.getAllDisplay((err: BusinessError, data: Array<display.Display>) => {
1032  const errCode: number = err.code;
1033  if (errCode) {
1034    console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
1035    return;
1036  }
1037  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
1038});
1039```
1040
1041## display.getAllDisplay<sup>(deprecated)</sup>
1042
1043getAllDisplay(): Promise&lt;Array&lt;Display&gt;&gt;
1044
1045获取当前所有的display对象,使用Promise异步回调。
1046
1047> **说明:**
1048>
1049> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getAllDisplays()](#displaygetalldisplays9-1)。
1050
1051**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1052
1053**返回值:**
1054
1055| 类型                                            | 说明                                                    |
1056| ----------------------------------------------- | ------------------------------------------------------- |
1057| Promise&lt;Array&lt;[Display](#display)&gt;&gt; | Promise对象。返回当前所有的display对象。 |
1058
1059**示例:**
1060
1061```ts
1062import { BusinessError } from '@kit.BasicServicesKit';
1063
1064let promise: Promise<Array<display.Display>> = display.getAllDisplay();
1065promise.then((data: Array<display.Display>) => {
1066  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
1067}).catch((err: BusinessError) => {
1068  console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
1069});
1070```
1071
1072## Display
1073屏幕实例。描述display对象的属性和方法。
1074
1075下列API示例中都需先使用[getAllDisplays()](#displaygetalldisplays9)、[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)中的任一方法获取到Display实例,再通过此实例调用对应方法。
1076
1077### 属性
1078
1079**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1080
1081| 名称 | 类型 | 只读 | 可选 | 说明                                                                                                            |
1082| -------- | -------- | -------- | -------- |---------------------------------------------------------------------------------------------------------------|
1083| id | number | 是 | 否 | 显示设备的id号,该参数应为整数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                             |
1084| name | string | 是 | 否 | 显示设备的名称。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                      |
1085| alive | boolean | 是 | 否 | 显示设备是否启用。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                     |
1086| state | [DisplayState](#displaystate) | 是 | 否 | 显示设备的状态。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                      |
1087| refreshRate | number | 是 | 否 | 显示设备的刷新率,该参数应为整数,单位为hz。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                             |
1088| rotation | number | 是 | 否 | 显示设备的屏幕顺时针旋转角度。<br>值为0时,表示显示设备屏幕顺时针旋转为0°;<br>值为1时,表示显示设备屏幕顺时针旋转为90°;<br>值为2时,表示显示设备屏幕顺时针旋转为180°;<br>值为3时,表示显示设备屏幕顺时针旋转为270°。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1089| width | number | 是 | 否 | 显示设备的屏幕宽度,单位为px,该参数应为整数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                        |
1090| height | number | 是 | 否 | 显示设备的屏幕高度,单位为px,该参数应为整数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                        |
1091| densityDPI | number | 是 | 否 | 显示设备屏幕的物理像素密度,表示每英寸上的像素点数。该参数为浮点数,单位为px。一般取值160.0、480.0等,实际能取到的值取决于不同设备设置里提供的可选值。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                   |
1092| orientation<sup>10+</sup> | [Orientation](#orientation10) | 是 | 否 | 表示屏幕当前显示的方向。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                  |
1093| densityPixels | number | 是 | 否 | 显示设备逻辑像素的密度,代表物理像素与逻辑像素的缩放系数,计算方式为:![densityPixels](figures/densityPixels.jpg)<br>该参数为浮点数,受densityDPI范围限制,取值范围在[0.5,4.0]。一般取值1.0、3.0等,实际取值取决于不同设备提供的densityDPI。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                  |
1094| scaledDensity | number | 是 | 否 | 显示设备的显示字体的缩放因子。该参数为浮点数,通常与densityPixels相同。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                    |
1095| xDPI | number | 是 | 否 | x方向中每英寸屏幕的确切物理像素值,该参数为浮点数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1096| yDPI | number | 是 | 否 | y方向中每英寸屏幕的确切物理像素值,该参数为浮点数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1097| colorSpaces<sup>11+</sup> | Array<[colorSpaceManager.ColorSpace](../apis-arkgraphics2d/js-apis-colorSpaceManager.md)> | 是 | 否 | 显示设备支持的所有色域类型。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                |
1098| hdrFormats<sup>11+</sup> | Array<[hdrCapability.HDRFormat](../apis-arkgraphics2d/js-apis-hdrCapability.md)> | 是 | 否 | 显示设备支持的所有HDR格式。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                               |
1099| availableWidth<sup>12+</sup> | number | 是 | 否 | 2in1设备上屏幕的可用区域宽度,单位为px,该参数为大于0的整数。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1100| availableHeight<sup>12+</sup> | number | 是 | 否 | 2in1设备上屏幕的可用区域高度,单位为px,该参数为大于0的整数。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1101
1102### getCutoutInfo<sup>9+</sup>
1103getCutoutInfo(callback: AsyncCallback&lt;CutoutInfo&gt;): void
1104
1105获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用callback异步回调。建议应用布局规避该区域。
1106
1107**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1108
1109**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1110
1111**参数:**
1112
1113| 参数名      | 类型                        | 必填 | 说明                                                         |
1114| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
1115| callback    | AsyncCallback&lt;[CutoutInfo](#cutoutinfo9)&gt;   | 是   | 回调函数。返回描述不可用屏幕区域的CutoutInfo对象。 |
1116
1117**错误码:**
1118
1119以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
1120
1121| 错误码ID | 错误信息 |
1122| ------- | ----------------------- |
1123| 1400001 | Invalid display or screen. |
1124
1125**示例:**
1126
1127```ts
1128import { BusinessError } from '@kit.BasicServicesKit';
1129
1130let displayClass: display.Display | null = null;
1131displayClass = display.getDefaultDisplaySync();
1132
1133displayClass.getCutoutInfo((err: BusinessError, data: display.CutoutInfo) => {
1134  const errCode: number = err.code;
1135  if (errCode) {
1136    console.error(`Failed to get cutoutInfo. Code: ${err.code}, message: ${err.message}`);
1137    return;
1138  }
1139  console.info('Succeeded in getting cutoutInfo. data: ' + JSON.stringify(data));
1140});
1141```
1142### getCutoutInfo<sup>9+</sup>
1143getCutoutInfo(): Promise&lt;CutoutInfo&gt;
1144
1145获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用Promise异步回调。建议应用布局规避该区域。
1146
1147**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1148
1149**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1150
1151**返回值:**
1152
1153| 类型                | 说明                      |
1154| ------------------- | ------------------------- |
1155| Promise&lt;[CutoutInfo](#cutoutinfo9)&gt; | Promise对象。返回描述不可用屏幕区域的CutoutInfo对象。 |
1156
1157**错误码:**
1158
1159以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
1160
1161| 错误码ID | 错误信息 |
1162| ------- | ----------------------- |
1163| 1400001 | Invalid display or screen. |
1164
1165**示例:**
1166
1167```ts
1168import { BusinessError } from '@kit.BasicServicesKit';
1169
1170let displayClass: display.Display | null = null;
1171displayClass = display.getDefaultDisplaySync();
1172let promise: Promise<display.CutoutInfo> = displayClass.getCutoutInfo();
1173promise.then((data: display.CutoutInfo) => {
1174  console.info('Succeeded in getting cutoutInfo. Data: ' + JSON.stringify(data));
1175}).catch((err: BusinessError) => {
1176  console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
1177});
1178```
1179
1180### getAvailableArea<sup>12+</sup>
1181getAvailableArea(): Promise&lt;Rect&gt;
1182
1183获取当前设备屏幕的可用区域,使用Promise异步回调。
1184
1185**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1186
1187**系统能力:** SystemCapability.Window.SessionManager
1188
1189**返回值:**
1190
1191| 类型                | 说明                      |
1192| ------------------- | ------------------------- |
1193| Promise&lt;[Rect](#rect9)&gt; | Promise对象。返回当前屏幕可用矩形区域。 |
1194
1195**错误码:**
1196
1197以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
1198
1199| 错误码ID | 错误信息 |
1200| ------- | ----------------------- |
1201| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
1202| 1400001 | Invalid display or screen. |
1203
1204**示例:**
1205
1206```ts
1207import { BusinessError } from '@kit.BasicServicesKit';
1208import { display } from '@kit.ArkUI';
1209
1210let displayClass: display.Display | null = null;
1211try {
1212  displayClass = display.getDefaultDisplaySync();
1213  let promise = displayClass.getAvailableArea();
1214  promise.then((data) => {
1215    console.info('Succeeded get the available area in this display. data: ' + JSON.stringify(data));
1216  }).catch((err: BusinessError) => {
1217    console.error(`Failed to get the available area in this display. Code: ${err.code}, message: ${err.message}`);
1218  })
1219} catch (exception) {
1220  console.error(`Failed to obtain the default display object. Code: ${exception.code}, message: ${exception.message}`);
1221}
1222```
1223
1224### on('availableAreaChange')<sup>12+</sup>
1225on(type: 'availableAreaChange', callback: Callback&lt;Rect&gt;): void
1226
1227开启当前设备屏幕的可用区域监听。当前设备屏幕有可用区域变化时,触发回调函数,返回可用区域。
1228
1229**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1230
1231**系统能力:** SystemCapability.Window.SessionManager
1232
1233**参数:**
1234
1235| 参数名   | 类型                                       | 必填 | 说明                                                    |
1236| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
1237| type     | string                                   | 是   | 监听事件,固定为'availableAreaChange',表示屏幕可用区域变更。 |
1238| callback | Callback&lt;[Rect](#rect9)&gt; | 是   | 回调函数,返回改变后的可用区域。 |
1239
1240**错误码:**
1241
1242以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
1243
1244| 错误码ID | 错误信息 |
1245| ------- | ----------------------- |
1246| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
1247| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
1248| 1400003 | This display manager service works abnormally. |
1249
1250**示例:**
1251
1252```ts
1253import { Callback } from '@kit.BasicServicesKit';
1254import { display } from '@kit.ArkUI';
1255
1256let callback: Callback<display.Rect> = (data: display.Rect) => {
1257  console.info('Listening enabled. Data: ' + JSON.stringify(data));
1258};
1259let displayClass: display.Display | null = null;
1260try {
1261  displayClass = display.getDefaultDisplaySync();
1262  displayClass.on("availableAreaChange", callback);
1263} catch (exception) {
1264  console.error(`Failed to register callback. Code: ${exception.code}, message: ${exception.message}`);
1265}
1266```
1267
1268### off('availableAreaChange')<sup>12+</sup>
1269
1270off(type: 'availableAreaChange', callback?: Callback&lt;Rect&gt;): void
1271
1272关闭当前设备屏幕可用区域变化的监听。
1273
1274**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1275
1276**系统能力:** SystemCapability.Window.SessionManager
1277
1278**参数:**
1279
1280| 参数名   | 类型                                       | 必填 | 说明                                                    |
1281| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
1282| type     | string                                   | 是   | 监听事件,固定为'availableAreaChange',表示屏幕可用区域变更。 |
1283| callback | Callback&lt;[Rect](#rect9)&gt; | 否   | 回调函数,已经注册的回调函数,不填默认删除所有回调 |
1284
1285**错误码:**
1286
1287以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
1288
1289| 错误码ID | 错误信息 |
1290| ------- | ----------------------- |
1291| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
1292| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
1293| 1400003 | This display manager service works abnormally. |
1294
1295**示例:**
1296
1297```ts
1298import { Callback } from '@kit.BasicServicesKit';
1299import { display } from '@kit.ArkUI';
1300
1301let callback: Callback<display.Rect> = (data: display.Rect) => {
1302  console.info('Listening enabled. Data: ' + JSON.stringify(data));
1303};
1304let displayClass: display.Display | null = null;
1305try {
1306  displayClass = display.getDefaultDisplaySync();
1307  displayClass.off("availableAreaChange", callback);
1308} catch (exception) {
1309  console.error(`Failed to unregister callback. Code: ${exception.code}, message: ${exception.message}`);
1310}
1311```