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_FULL,外屏显示状态为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.getAllDisplays<sup>9+</sup>
277
278getAllDisplays(callback: AsyncCallback&lt;Array&lt;Display&gt;&gt;): void
279
280获取当前所有的display对象,使用callback异步回调。
281
282**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
283
284**系统能力:** SystemCapability.WindowManager.WindowManager.Core
285
286**参数:**
287
288| 参数名 | 类型 | 必填 | 说明 |
289| -------- | ---------------------------------------------------- | ---- | ------------------------------- |
290| callback | AsyncCallback&lt;Array&lt;[Display](#display)&gt;&gt; | 是 | 回调函数。返回当前所有的display对象。 |
291
292**错误码:**
293
294以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
295
296| 错误码ID | 错误信息 |
297| ------- | ----------------------- |
298| 1400001 | Invalid display or screen. |
299
300**示例:**
301
302```ts
303import { BusinessError } from '@kit.BasicServicesKit';
304import { display } from '@kit.ArkUI';
305
306let displayClass: Array<display.Display> = [];
307display.getAllDisplays((err: BusinessError, data: Array<display.Display>) => {
308  displayClass = data;
309  const errCode: number = err.code;
310  if (errCode) {
311    console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
312    return;
313  }
314  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
315});
316```
317
318## display.getAllDisplays<sup>9+</sup>
319
320getAllDisplays(): Promise&lt;Array&lt;Display&gt;&gt;
321
322获取当前所有的display对象,使用Promise异步回调。
323
324**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
325
326**系统能力:** SystemCapability.WindowManager.WindowManager.Core
327
328**返回值:**
329
330| 类型 | 说明 |
331| ----------------------------------------------- | ------------------------------------------------------- |
332| Promise&lt;Array&lt;[Display](#display)&gt;&gt; | Promise对象。返回当前所有的display对象。 |
333
334**错误码:**
335
336以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
337
338| 错误码ID | 错误信息 |
339| ------- | ----------------------- |
340| 1400001 | Invalid display or screen. |
341
342**示例:**
343
344```ts
345import { BusinessError } from '@kit.BasicServicesKit';
346import { display } from '@kit.ArkUI';
347
348let displayClass: Array<display.Display> =[];
349let promise: Promise<Array<display.Display>> = display.getAllDisplays();
350promise.then((data: Array<display.Display>) => {
351  displayClass = data;
352  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
353}).catch((err: BusinessError) => {
354  console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
355});
356```
357
358## display.on('add'|'remove'|'change')
359
360on(type: 'add'|'remove'|'change', callback: Callback&lt;number&gt;): void
361
362开启显示设备变化的监听。
363
364**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
365
366**系统能力:** SystemCapability.WindowManager.WindowManager.Core
367
368**参数:**
369
370| 参数名 | 类型 | 必填 | 说明                                                                                                                              |
371| -------- | -------- | -------- |---------------------------------------------------------------------------------------------------------------------------------|
372| type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。例如:插入显示器。<br/>- type为"remove",表示移除显示设备事件。例如:移除显示器。<br/>- type为"change",表示改变显示设备事件。例如:显示器方向改变。 |
373| callback | Callback&lt;number&gt; | 是 | 回调函数。返回监听到的显示设备的id,该参数应为整数。                                                                                                     |
374
375**错误码:**
376
377以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
378
379| 错误码ID | 错误信息 |
380| ------- | ----------------------- |
381| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
382
383**示例:**
384
385```ts
386import { Callback } from '@kit.BasicServicesKit';
387
388let callback: Callback<number> = (data: number) => {
389  console.info('Listening enabled. Data: ' + JSON.stringify(data));
390};
391
392display.on("add", callback);
393```
394
395## display.off('add'|'remove'|'change')
396
397off(type: 'add'|'remove'|'change', callback?: Callback&lt;number&gt;): void
398
399关闭显示设备变化的监听。
400
401**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
402
403**系统能力:** SystemCapability.WindowManager.WindowManager.Core
404
405**参数:**
406
407| 参数名 | 类型 | 必填 | 说明 |
408| -------- | -------- | -------- | -------- |
409| type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。例如:插入显示器。<br/>- type为"remove",表示移除显示设备事件。例如:移除显示器。<br/>- type为"change",表示改变显示设备事件。例如:显示器方向改变。 |
410| callback | Callback&lt;number&gt; | 否 | 需要取消注册的回调函数。若无此参数,则取消注册当前type类型事件监听的所有回调函数。 |
411
412**错误码:**
413
414以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
415
416| 错误码ID | 错误信息 |
417| ------- | ----------------------- |
418| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
419
420**示例:**
421
422```ts
423
424// 如果通过on注册多个callback,同时关闭所有callback监听
425display.off("remove");
426
427let callback: Callback<number> = (data: number) => {
428  console.info('Succeeded in unregistering the callback for display remove. Data: ' + JSON.stringify(data))
429};
430// 关闭传入的callback监听
431display.off('remove', callback);
432```
433
434## display.isFoldable<sup>10+</sup>
435isFoldable(): boolean
436
437检查设备是否可折叠。
438
439**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
440
441**系统能力:** SystemCapability.Window.SessionManager
442
443**返回值:**
444
445| 类型 | 说明 |
446| ----------------------------------------------- | ------------------------------------------------------- |
447| boolean | boolean对象,返回当前设备是否可折叠的结果。false表示不可折叠,true表示可折叠。|
448
449**错误码:**
450
451以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
452
453| 错误码ID | 错误信息 |
454| ------- | ----------------------- |
455| 1400003 | This display manager service works abnormally. |
456
457**示例:**
458
459```ts
460import { display } from '@kit.ArkUI';
461
462let ret: boolean = false;
463ret = display.isFoldable();
464```
465
466## display.getFoldStatus<sup>10+</sup>
467getFoldStatus(): FoldStatus
468
469获取可折叠设备的当前折叠状态。
470
471**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
472
473**系统能力:** SystemCapability.Window.SessionManager
474
475**返回值:**
476
477| 类型 | 说明 |
478| ----------------------------------------------- | ------------------------------------------------------- |
479| [FoldStatus](#foldstatus10) | FoldStatus对象,返回当前可折叠设备的折叠状态。 |
480
481**错误码:**
482
483以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
484
485| 错误码ID | 错误信息 |
486| ------- | ----------------------- |
487| 1400003 | This display manager service works abnormally. |
488
489**示例:**
490
491```ts
492import { display } from '@kit.ArkUI';
493
494let data: display.FoldStatus = display.getFoldStatus();
495console.info('Succeeded in obtaining fold status. Data: ' + JSON.stringify(data));
496```
497
498## display.getFoldDisplayMode<sup>10+</sup>
499getFoldDisplayMode(): FoldDisplayMode
500
501获取可折叠设备的显示模式。
502
503**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
504
505**系统能力:** SystemCapability.Window.SessionManager
506
507**返回值:**
508
509| 类型 | 说明 |
510| ----------------------------------------------- | ------------------------------------------------------- |
511| [FoldDisplayMode](#folddisplaymode10) | FoldDisplayMode对象,返回当前可折叠设备的显示模式。 |
512
513**错误码:**
514
515以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
516
517| 错误码ID | 错误信息 |
518| ------- | ----------------------- |
519| 1400003 | This display manager service works abnormally. |
520
521**示例:**
522
523```ts
524import { display } from '@kit.ArkUI';
525
526let data: display.FoldDisplayMode = display.getFoldDisplayMode();
527console.info('Succeeded in obtaining fold display mode. Data: ' + JSON.stringify(data));
528```
529
530## display.getCurrentFoldCreaseRegion<sup>10+</sup>
531getCurrentFoldCreaseRegion(): FoldCreaseRegion
532
533在当前显示模式下获取折叠折痕区域。
534
535**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
536
537**系统能力:** SystemCapability.Window.SessionManager
538
539**返回值:**
540
541| 类型 | 说明 |
542| ----------------------------------------------- | ------------------------------------------------------- |
543| [FoldCreaseRegion](#foldcreaseregion10) | FoldCreaseRegion对象,返回设备在当前显示模式下的折叠折痕区域。 |
544
545**错误码:**
546
547以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
548
549| 错误码ID | 错误信息 |
550| ------- | ----------------------- |
551| 1400003 | This display manager service works abnormally. |
552
553**示例:**
554
555```ts
556import { display } from '@kit.ArkUI';
557
558let data: display.FoldCreaseRegion = display.getCurrentFoldCreaseRegion();
559console.info('Succeeded in obtaining current fold crease region. Data: ' + JSON.stringify(data));
560```
561
562## display.on('foldStatusChange')<sup>10+</sup>
563
564on(type: 'foldStatusChange', callback: Callback&lt;FoldStatus&gt;): void
565
566开启折叠设备折叠状态变化的监听。
567
568本接口监听设备物理折叠状态的变化,[display.on('foldDispla
569yModeChange')](#displayonfolddisplaymodechange10)则监听屏幕显示模式的变化。
570
571两者存在差异,时序上物理折叠状态变化在前,底层会根据物理折叠状态匹配屏幕显示模式状态。
572
573若需监听当前显示内容是显示在折叠设备的内屏还是外屏,请使用[display.on('foldDisplayModeChange')](#displayonfolddisplaymodechange10)。
574
575**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
576
577**系统能力:** SystemCapability.Window.SessionManager
578
579**参数:**
580
581| 参数名   | 类型                                       | 必填 | 说明                                                    |
582| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
583| type     | string                                   | 是   | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 |
584| callback | Callback&lt;[FoldStatus](#foldstatus10)&gt; | 是   | 回调函数。表示折叠设备折叠状态。 |
585
586**错误码:**
587
588以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
589
590| 错误码ID | 错误信息 |
591| ------- | ----------------------- |
592| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
593| 1400003 | This display manager service works abnormally. |
594
595**示例:**
596
597```ts
598import { Callback } from '@kit.BasicServicesKit';
599
600/**
601 * 注册监听的callback参数要采用对象传递.
602 * 若使用匿名函数注册,每次调用会创建一个新的底层对象,引起内存泄漏问题。
603*/
604let callback: Callback<display.FoldStatus> = (data: display.FoldStatus) => {
605  console.info('Listening enabled. Data: ' + JSON.stringify(data));
606};
607display.on('foldStatusChange', callback);
608```
609
610## display.off('foldStatusChange')<sup>10+</sup>
611
612off(type: 'foldStatusChange', callback?: Callback&lt;FoldStatus&gt;): void
613
614关闭折叠设备折叠状态变化的监听。
615
616**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
617
618**系统能力:** SystemCapability.Window.SessionManager
619
620**参数:**
621
622| 参数名   | 类型                                       | 必填 | 说明                                                    |
623| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
624| type     | string                                   | 是   | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 |
625| callback | Callback&lt;[FoldStatus](#foldstatus10)&gt; | 否   | 需要取消注册的回调函数。若无此参数,则取消注册折叠状态变化监听的所有回调函数。 |
626
627**错误码:**
628
629以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
630
631| 错误码ID | 错误信息 |
632| ------- | ----------------------- |
633| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
634| 1400003 | This display manager service works abnormally. |
635
636**示例:**
637
638```ts
639
640// 如果通过on注册多个callback,同时关闭所有callback监听
641display.off('foldStatusChange');
642
643let callback: Callback<display.FoldStatus> = (data: display.FoldStatus) => {
644  console.info('unregistering FoldStatus changes callback. Data: ' + JSON.stringify(data));
645};
646// 关闭传入的callback监听
647display.off('foldStatusChange', callback);
648```
649
650## display.on('foldAngleChange')<sup>12+</sup>
651
652on(type: 'foldAngleChange', callback: Callback&lt;Array&lt;number&gt;&gt;): void
653
654开启折叠设备折叠角度变化的监听。
655
656**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
657
658**系统能力:** SystemCapability.Window.SessionManager
659
660**参数:**
661
662| 参数名   | 类型                                      | 必填 | 说明                                                    |
663| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
664| type     | string                                   | 是 | 监听事件,固定为'foldAngleChange',表示折叠设备折叠角度发生变化。|
665| callback | Callback&lt;Array&lt;number&gt;&gt; | 是 | 回调函数。表示折叠设备屏幕折叠角度值(0度~180度)。|
666
667**错误码:**
668
669以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
670
671| 错误码ID | 错误信息 |
672| ------- | ----------------------- |
673| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
674| 1400003 | This display manager service works abnormally. |
675
676**示例:**
677
678```ts
679import { Callback } from '@kit.BasicServicesKit';
680
681let callback: Callback<Array<number>> = (angles: Array<number>) => {
682  console.info('Listening fold angles length: ' + angles.length);
683};
684display.on('foldAngleChange', callback);
685```
686
687## display.off('foldAngleChange')<sup>12+</sup>
688
689off(type: 'foldAngleChange', callback?: Callback&lt;Array&lt;number&gt;&gt;): void
690
691关闭折叠设备折叠角度变化的监听。
692
693**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
694
695**系统能力:** SystemCapability.Window.SessionManager
696
697**参数:**
698
699| 参数名   | 类型                                       | 必填 | 说明                                                    |
700| -------- |-------------------------------------------| ---- | ------------------------------------------------------- |
701| type     | string                                    | 是  | 监听事件,固定为'foldAngleChange'表示折叠设备折叠角度发生变化。|
702| callback | Callback&lt;Array&lt;number&gt;&gt; | 否  | 需要取消注册的回调函数。若无此参数,则取消注册折叠角度变化监听的所有回调函数。|
703
704**错误码:**
705
706以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
707
708| 错误码ID | 错误信息 |
709| ------- | ----------------------- |
710| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
711| 1400003 | This display manager service works abnormally. |
712
713**示例:**
714
715```ts
716display.off('foldAngleChange');
717```
718
719## display.on('captureStatusChange')<sup>12+</sup>
720
721on(type: 'captureStatusChange', callback: Callback&lt;boolean&gt;): void
722
723开启屏幕截屏、投屏、录屏状态变化的监听。
724
725**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
726
727**系统能力:** SystemCapability.Window.SessionManager
728
729**参数:**
730
731| 参数名   | 类型                                       | 必填 | 说明                                                    |
732| -------- |-------------------------------------------| ---- | ------------------------------------------------------- |
733| type     | string                                   | 是 | 监听事件,固定为'captureStatusChange'表示设备截屏、投屏或者录屏状态发生变化。|
734| callback | Callback&lt;boolean&gt; | 是 | 回调函数。表示设备截屏、投屏、录屏状态发生变化。true表示设备开始截屏、投屏或者录屏,false表示结束截屏、投屏、录屏。|
735
736**错误码:**
737
738以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
739
740| 错误码ID | 错误信息 |
741| ------- | ----------------------- |
742| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
743| 1400003 | This display manager service works abnormally. |
744
745**示例:**
746
747```ts
748import { Callback } from '@kit.BasicServicesKit';
749
750let callback: Callback<boolean> = (captureStatus: boolean) => {
751  console.info('Listening capture status: ' + captureStatus);
752};
753display.on('captureStatusChange', callback);
754```
755
756## display.off('captureStatusChange')<sup>12+</sup>
757
758off(type: 'captureStatusChange', callback?: Callback&lt;boolean&gt;): void
759
760关闭屏幕截屏、投屏、录屏状态变化的监听。
761
762**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
763
764**系统能力:** SystemCapability.Window.SessionManager
765
766**参数:**
767
768| 参数名   | 类型                                       | 必填 | 说明                                                    |
769| -------- |-------------------------------------------| ---- | ------------------------------------------------------- |
770| type     | string                                   | 是 | 监听事件,固定为'captureStatusChange'表示设备截屏、投屏、录屏状态发生变化。|
771| callback | Callback&lt;boolean&gt; | 否 | 需要取消注册的回调函数。若无此参数,则取消注册截屏、投屏、录屏状态变化监听的所有回调函数。|
772
773**错误码:**
774
775以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
776
777| 错误码ID | 错误信息 |
778| ------- | ----------------------- |
779| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
780| 1400003 | This display manager service works abnormally. |
781
782**示例:**
783
784```ts
785display.off('captureStatusChange');
786```
787
788## display.isCaptured<sup>12+</sup>
789isCaptured(): boolean
790
791检查设备是否正在截屏、投屏、录屏。
792
793**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
794
795**系统能力:** SystemCapability.Window.SessionManager
796
797**返回值:**
798
799| 类型 | 说明 |
800| ----------------------------------------------- | ------------------------------------------------------- |
801| boolean | boolean值,返回当前设备是否有截屏、投屏或者录屏。true表示有截屏、投屏、录屏,否则返回false。|
802
803**错误码:**
804
805以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
806
807| 错误码ID | 错误信息 |
808| ------- | ----------------------- |
809| 1400003 | This display manager service works abnormally. |
810
811**示例:**
812
813```ts
814import { display } from '@kit.ArkUI';
815
816let ret: boolean = false;
817ret = display.isCaptured();
818```
819
820## display.on('foldDisplayModeChange')<sup>10+</sup>
821
822on(type: 'foldDisplayModeChange', callback: Callback&lt;FoldDisplayMode&gt;): void
823
824开启折叠设备屏幕显示模式变化的监听。
825
826本接口监听设备屏幕显示模式的变化,[display.on('foldStatusChange')](#displayonfoldstatuschange10)则监听设备物理折叠状态的变化。
827
828两者存在差异,时序上物理折叠状态变化在前,底层会根据物理折叠状态匹配屏幕显示模式状态。
829
830**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
831
832**系统能力:** SystemCapability.Window.SessionManager
833
834**参数:**
835
836| 参数名   | 类型                                       | 必填 | 说明                                                    |
837| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
838| type     | string                                   | 是   | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 |
839| callback | Callback&lt;[FoldDisplayMode](#folddisplaymode10)&gt; | 是   | 回调函数。表示折叠设备屏幕显示模式。 |
840
841**错误码:**
842
843以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
844
845| 错误码ID | 错误信息 |
846| ------- | ----------------------- |
847| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
848| 1400003 | This display manager service works abnormally. |
849
850**示例:**
851
852```ts
853import { Callback } from '@kit.BasicServicesKit';
854
855/**
856 * 注册监听的callback参数要采用对象传递.
857 * 若使用匿名函数注册,每次调用会创建一个新的底层对象,引起内存泄漏问题。
858*/
859let callback: Callback<display.FoldDisplayMode> = (data: display.FoldDisplayMode) => {
860  console.info('Listening enabled. Data: ' + JSON.stringify(data));
861}; 
862display.on('foldDisplayModeChange', callback);
863```
864
865## display.off('foldDisplayModeChange')<sup>10+</sup>
866
867off(type: 'foldDisplayModeChange', callback?: Callback&lt;FoldDisplayMode&gt;): void
868
869关闭折叠设备屏幕显示模式变化的监听。
870
871**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
872
873**系统能力:** SystemCapability.Window.SessionManager
874
875**参数:**
876
877| 参数名   | 类型                                       | 必填 | 说明                                                    |
878| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
879| type     | string                                   | 是   | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 |
880| callback | Callback&lt;[FoldDisplayMode](#folddisplaymode10)&gt; | 否   | 需要取消注册的回调函数。若无此参数,则取消注册屏幕显示模式变化监听的所有回调函数。 |
881
882**错误码:**
883
884以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
885
886| 错误码ID | 错误信息 |
887| ------- | ----------------------- |
888| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
889| 1400003 | This display manager service works abnormally. |
890
891**示例:**
892
893```ts
894
895// 如果通过on注册多个callback,同时关闭所有callback监听
896display.off('foldDisplayModeChange');
897
898let callback: Callback<display.FoldDisplayMode> = (data: display.FoldDisplayMode) => {
899  console.info('unregistering FoldDisplayMode changes callback. Data: ' + JSON.stringify(data));
900};
901// 关闭传入的callback监听
902display.off('foldDisplayModeChange', callback);
903```
904
905
906## display.getDefaultDisplay<sup>(deprecated)</sup>
907
908getDefaultDisplay(callback: AsyncCallback&lt;Display&gt;): void
909
910获取当前默认的display对象,使用callback异步回调。
911
912> **说明:**
913> 
914> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)。
915
916**系统能力:** SystemCapability.WindowManager.WindowManager.Core
917
918**参数:**
919
920| 参数名 | 类型 | 必填 | 说明 |
921| -------- | -------- | -------- | -------- |
922| callback | AsyncCallback&lt;[Display](#display)&gt; | 是 | 回调函数。返回当前默认的display对象。 |
923
924**示例:**
925
926```ts
927import { BusinessError } from '@kit.BasicServicesKit';
928
929let displayClass: display.Display | null = null;
930display.getDefaultDisplay((err: BusinessError, data: display.Display) => {
931  const errCode: number = err.code;
932  if (errCode) {
933    console.error(`Failed to obtain the default display object. Code: ${err.code}, message: ${err.message}`);
934    return;
935  }
936  console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
937  displayClass = data;
938});
939```
940
941## display.getDefaultDisplay<sup>(deprecated)</sup>
942
943getDefaultDisplay(): Promise&lt;Display&gt;
944
945获取当前默认的display对象,使用Promise异步回调。
946
947> **说明:**
948> 
949> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)。
950
951**系统能力:** SystemCapability.WindowManager.WindowManager.Core
952
953**返回值:**
954
955| 类型                               | 说明                                           |
956| ---------------------------------- | ---------------------------------------------- |
957| Promise&lt;[Display](#display)&gt; | Promise对象。返回当前默认的display对象。 |
958
959**示例:**
960
961```ts
962import { BusinessError } from '@kit.BasicServicesKit';
963
964let displayClass: display.Display | null = null;
965let promise: Promise<display.Display> = display.getDefaultDisplay();
966promise.then((data: display.Display) => {
967  displayClass = data;
968  console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
969}).catch((err: BusinessError) => {
970  console.error(`Failed to obtain the default display object. Code: ${err.code}, message: ${err.message}`);
971});
972```
973
974## display.getAllDisplay<sup>(deprecated)</sup>
975
976getAllDisplay(callback: AsyncCallback&lt;Array&lt;Display&gt;&gt;): void
977
978获取当前所有的display对象,使用callback异步回调。
979
980> **说明:**
981> 
982> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getAllDisplays()](#displaygetalldisplays9)。
983
984**系统能力:** SystemCapability.WindowManager.WindowManager.Core
985
986**参数:**
987
988| 参数名   | 类型                                                 | 必填 | 说明                            |
989| -------- | ---------------------------------------------------- | ---- | ------------------------------- |
990| callback | AsyncCallback&lt;Array&lt;[Display](#display)&gt;&gt; | 是   | 回调函数。返回当前所有的display对象。 |
991
992**示例:**
993
994```ts
995import { BusinessError } from '@kit.BasicServicesKit';
996
997display.getAllDisplay((err: BusinessError, data: Array<display.Display>) => {
998  const errCode: number = err.code;
999  if (errCode) {
1000    console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
1001    return;
1002  }
1003  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
1004});
1005```
1006
1007## display.getAllDisplay<sup>(deprecated)</sup>
1008
1009getAllDisplay(): Promise&lt;Array&lt;Display&gt;&gt;
1010
1011获取当前所有的display对象,使用Promise异步回调。
1012
1013> **说明:**
1014> 
1015> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getAllDisplays()](#displaygetalldisplays9-1)。
1016
1017**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1018
1019**返回值:**
1020
1021| 类型                                            | 说明                                                    |
1022| ----------------------------------------------- | ------------------------------------------------------- |
1023| Promise&lt;Array&lt;[Display](#display)&gt;&gt; | Promise对象。返回当前所有的display对象。 |
1024
1025**示例:**
1026
1027```ts
1028import { BusinessError } from '@kit.BasicServicesKit';
1029
1030let promise: Promise<Array<display.Display>> = display.getAllDisplay();
1031promise.then((data: Array<display.Display>) => {
1032  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
1033}).catch((err: BusinessError) => {
1034  console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
1035});
1036```
1037
1038## Display
1039屏幕实例。描述display对象的属性和方法。
1040
1041下列API示例中都需先使用[getAllDisplays()](#displaygetalldisplays9)、[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)中的任一方法获取到Display实例,再通过此实例调用对应方法。
1042
1043### 属性
1044
1045**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1046
1047| 名称 | 类型 | 只读 | 可选 | 说明                                                                                                            |
1048| -------- | -------- | -------- | -------- |---------------------------------------------------------------------------------------------------------------|
1049| id | number | 是 | 否 | 显示设备的id号,该参数应为整数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                             |
1050| name | string | 是 | 否 | 显示设备的名称。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                      |
1051| alive | boolean | 是 | 否 | 显示设备是否启用。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                     |
1052| state | [DisplayState](#displaystate) | 是 | 否 | 显示设备的状态。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                      |
1053| refreshRate | number | 是 | 否 | 显示设备的刷新率,该参数应为整数,单位为hz。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                             |
1054| rotation | number | 是 | 否 | 显示设备的屏幕顺时针旋转角度。<br>值为0时,表示显示设备屏幕顺时针旋转为0°;<br>值为1时,表示显示设备屏幕顺时针旋转为90°;<br>值为2时,表示显示设备屏幕顺时针旋转为180°;<br>值为3时,表示显示设备屏幕顺时针旋转为270°。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
1055| width | number | 是 | 否 | 显示设备的屏幕宽度,单位为px,该参数应为整数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                        |
1056| height | number | 是 | 否 | 显示设备的屏幕高度,单位为px,该参数应为整数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                                        |
1057| densityDPI | number | 是 | 否 | 显示设备屏幕的物理像素密度,表示每英寸上的像素点数。该参数为浮点数,单位为px。一般取值160.0、480.0等,实际能取到的值取决于不同设备设置里提供的可选值。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                   |
1058| orientation<sup>10+</sup> | [Orientation](#orientation10) | 是 | 否 | 表示屏幕当前显示的方向。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                  |
1059| densityPixels | number | 是 | 否 | 显示设备逻辑像素的密度,代表物理像素与逻辑像素的缩放系数,计算方式为:![densityPixels](figures/densityPixels.jpg)<br>该参数为浮点数,受densityDPI范围限制,取值范围在[0.5,4.0]。一般取值1.0、3.0等,实际取值取决于不同设备提供的densityDPI。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。                                                                  |
1060| scaledDensity | number | 是 | 否 | 显示设备的显示字体的缩放因子。该参数为浮点数,通常与densityPixels相同。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                    |
1061| xDPI | number | 是 | 否 | x方向中每英寸屏幕的确切物理像素值,该参数为浮点数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1062| yDPI | number | 是 | 否 | y方向中每英寸屏幕的确切物理像素值,该参数为浮点数。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1063| colorSpaces<sup>11+</sup> | Array<[colorSpaceManager.ColorSpace](../apis-arkgraphics2d/js-apis-colorSpaceManager.md)> | 是 | 否 | 显示设备支持的所有色域类型。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                                |
1064| hdrFormats<sup>11+</sup> | Array<[hdrCapability.HDRFormat](../apis-arkgraphics2d/js-apis-hdrCapability.md)> | 是 | 否 | 显示设备支持的所有HDR格式。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                               |
1065| availableWidth<sup>12+</sup> | number | 是 | 否 | 2in1设备上屏幕的可用区域宽度,单位为px,该参数为大于0的整数。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1066| availableHeight<sup>12+</sup> | number | 是 | 否 | 2in1设备上屏幕的可用区域高度,单位为px,该参数为大于0的整数。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                                                                                    |
1067
1068### getCutoutInfo<sup>9+</sup>
1069getCutoutInfo(callback: AsyncCallback&lt;CutoutInfo&gt;): void
1070
1071获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用callback异步回调。建议应用布局规避该区域。
1072
1073**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1074
1075**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1076
1077**参数:**
1078
1079| 参数名      | 类型                        | 必填 | 说明                                                         |
1080| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
1081| callback    | AsyncCallback&lt;[CutoutInfo](#cutoutinfo9)&gt;   | 是   | 回调函数。返回描述不可用屏幕区域的CutoutInfo对象。 |
1082
1083**错误码:**
1084
1085以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
1086
1087| 错误码ID | 错误信息 |
1088| ------- | ----------------------- |
1089| 1400001 | Invalid display or screen. |
1090
1091**示例:**
1092
1093```ts
1094import { BusinessError } from '@kit.BasicServicesKit';
1095
1096let displayClass: display.Display | null = null;
1097displayClass = display.getDefaultDisplaySync();
1098
1099displayClass.getCutoutInfo((err: BusinessError, data: display.CutoutInfo) => {
1100  const errCode: number = err.code;
1101  if (errCode) {
1102    console.error(`Failed to get cutoutInfo. Code: ${err.code}, message: ${err.message}`);
1103    return;
1104  }
1105  console.info('Succeeded in getting cutoutInfo. data: ' + JSON.stringify(data));
1106});
1107```
1108### getCutoutInfo<sup>9+</sup>
1109getCutoutInfo(): Promise&lt;CutoutInfo&gt;
1110
1111获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用Promise异步回调。建议应用布局规避该区域。
1112
1113**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1114
1115**系统能力:** SystemCapability.WindowManager.WindowManager.Core
1116
1117**返回值:**
1118
1119| 类型                | 说明                      |
1120| ------------------- | ------------------------- |
1121| Promise&lt;[CutoutInfo](#cutoutinfo9)&gt; | Promise对象。返回描述不可用屏幕区域的CutoutInfo对象。 |
1122
1123**错误码:**
1124
1125以下错误码的详细介绍请参见[屏幕错误码](errorcode-display.md)。
1126
1127| 错误码ID | 错误信息 |
1128| ------- | ----------------------- |
1129| 1400001 | Invalid display or screen. |
1130
1131**示例:**
1132
1133```ts
1134import { BusinessError } from '@kit.BasicServicesKit';
1135
1136let displayClass: display.Display | null = null;
1137displayClass = display.getDefaultDisplaySync();
1138let promise: Promise<display.CutoutInfo> = displayClass.getCutoutInfo();
1139promise.then((data: display.CutoutInfo) => {
1140  console.info('Succeeded in getting cutoutInfo. Data: ' + JSON.stringify(data));
1141}).catch((err: BusinessError) => {
1142  console.error(`Failed to obtain all the display objects. Code: ${err.code}, message: ${err.message}`);
1143});
1144```
1145
1146### getAvailableArea<sup>12+</sup>
1147getAvailableArea(): Promise&lt;Rect&gt;
1148
1149获取当前2in1设备屏幕的可用区域,使用Promise异步回调。
1150
1151**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1152
1153**系统能力:** SystemCapability.Window.SessionManager
1154
1155**返回值:**
1156
1157| 类型                | 说明                      |
1158| ------------------- | ------------------------- |
1159| Promise&lt;[Rect](#rect9)&gt; | Promise对象。返回当前屏幕可用矩形区域。 |
1160
1161**错误码:**
1162
1163以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
1164
1165| 错误码ID | 错误信息 |
1166| ------- | ----------------------- |
1167| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
1168| 1400001 | Invalid display or screen. |
1169
1170**示例:**
1171
1172```ts
1173import { BusinessError } from '@kit.BasicServicesKit';
1174import { display } from '@kit.ArkUI';
1175
1176let displayClass: display.Display | null = null;
1177try {
1178  displayClass = display.getDefaultDisplaySync();
1179  let promise = displayClass.getAvailableArea();
1180  promise.then((data) => {
1181    console.info('Succeeded get the available area in this display. data: ' + JSON.stringify(data));
1182  }).catch((err: BusinessError) => {
1183    console.error(`Failed to get the available area in this display. Code: ${err.code}, message: ${err.message}`);
1184  })
1185} catch (exception) {
1186  console.error(`Failed to obtain the default display object. Code: ${exception.code}, message: ${exception.message}`);
1187}
1188```
1189
1190### on('availableAreaChange')<sup>12+</sup>
1191on(type: 'availableAreaChange', callback: Callback&lt;Rect&gt;): void
1192
1193开启当前2in1设备屏幕的可用区域监听。当前2in1设备屏幕有可用区域变化时,触发回调函数,返回可用区域。
1194
1195**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1196
1197**系统能力:** SystemCapability.Window.SessionManager
1198
1199**参数:**
1200
1201| 参数名   | 类型                                       | 必填 | 说明                                                    |
1202| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
1203| type     | string                                   | 是   | 监听事件,固定为'availableAreaChange',表示屏幕可用区域变更。 |
1204| callback | Callback&lt;[Rect](#rect9)&gt; | 是   | 回调函数,返回改变后的可用区域。 |
1205
1206**错误码:**
1207
1208以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
1209
1210| 错误码ID | 错误信息 |
1211| ------- | ----------------------- |
1212| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
1213| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
1214| 1400003 | This display manager service works abnormally. |
1215
1216**示例:**
1217
1218```ts
1219import { Callback } from '@kit.BasicServicesKit';
1220import { display } from '@kit.ArkUI';
1221
1222let callback: Callback<display.Rect> = (data: display.Rect) => {
1223  console.info('Listening enabled. Data: ' + JSON.stringify(data));
1224};
1225let displayClass: display.Display | null = null;
1226try {
1227  displayClass = display.getDefaultDisplaySync();
1228  displayClass.on("availableAreaChange", callback);
1229} catch (exception) {
1230  console.error(`Failed to register callback. Code: ${exception.code}, message: ${exception.message}`);
1231}
1232```
1233
1234### off('availableAreaChange')<sup>12+</sup>
1235
1236off(type: 'availableAreaChange', callback?: Callback&lt;Rect&gt;): void
1237
1238关闭当前2in1设备屏幕可用区域变化的监听。
1239
1240**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1241
1242**系统能力:** SystemCapability.Window.SessionManager
1243
1244**参数:**
1245
1246| 参数名   | 类型                                       | 必填 | 说明                                                    |
1247| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
1248| type     | string                                   | 是   | 监听事件,固定为'availableAreaChange',表示屏幕可用区域变更。 |
1249| callback | Callback&lt;[Rect](#rect9)&gt; | 否   | 回调函数,已经注册的回调函数,不填默认删除所有回调 |
1250
1251**错误码:**
1252
1253以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。
1254
1255| 错误码ID | 错误信息 |
1256| ------- | ----------------------- |
1257| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.|
1258| 801 | Capability not supported. Failed to call the API due to limited device capabilities. |
1259| 1400003 | This display manager service works abnormally. |
1260
1261**示例:**
1262
1263```ts
1264import { Callback } from '@kit.BasicServicesKit';
1265import { display } from '@kit.ArkUI';
1266
1267let callback: Callback<display.Rect> = (data: display.Rect) => {
1268  console.info('Listening enabled. Data: ' + JSON.stringify(data));
1269};
1270let displayClass: display.Display | null = null;
1271try {
1272  displayClass = display.getDefaultDisplaySync();
1273  displayClass.off("availableAreaChange", callback);
1274} catch (exception) {
1275  console.error(`Failed to unregister callback. Code: ${exception.code}, message: ${exception.message}`);
1276}
1277```