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>• 对于大屏内折产品,内屏显示状态为FOLD_DISPLAY_MODE_FULL,外屏显示状态为FOLD_DISPLAY_MODE_MAIN。<br> 81>• 对于小屏内折产品,内屏显示状态为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<Array<DisplayPhysicalResolution>> 202 203获取当前折叠设备的显示模式以及对应的物理屏幕分辨率信息对象。 204 205**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 206 207**系统能力:** SystemCapability.WindowManager.WindowManager.Core 208 209**返回值:** 210 211| 类型 | 说明 | 212| ----------------------------------------------- | ------------------------------------------------------- | 213| Promise<Array<[DisplayPhysicalResolution](#displayphysicalresolution12)>> | 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<Array<Display>>): 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<Array<[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 { 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<Array<Display>> 321 322获取当前所有的display对象,使用Promise异步回调。 323 324**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 325 326**系统能力:** SystemCapability.WindowManager.WindowManager.Core 327 328**返回值:** 329 330| 类型 | 说明 | 331| ----------------------------------------------- | ------------------------------------------------------- | 332| Promise<Array<[Display](#display)>> | 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<number>): 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<number> | 是 | 回调函数。返回监听到的显示设备的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<number>): 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<number> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册当前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<FoldStatus>): 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<[FoldStatus](#foldstatus10)> | 是 | 回调函数。表示折叠设备折叠状态。 | 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<FoldStatus>): 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<[FoldStatus](#foldstatus10)> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册折叠状态变化监听的所有回调函数。 | 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<Array<number>>): 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<Array<number>> | 是 | 回调函数。表示折叠设备屏幕折叠角度值(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<Array<number>>): 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<Array<number>> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册折叠角度变化监听的所有回调函数。| 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<boolean>): 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<boolean> | 是 | 回调函数。表示设备截屏、投屏、录屏状态发生变化。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<boolean>): 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<boolean> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册截屏、投屏、录屏状态变化监听的所有回调函数。| 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<FoldDisplayMode>): 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<[FoldDisplayMode](#folddisplaymode10)> | 是 | 回调函数。表示折叠设备屏幕显示模式。 | 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<FoldDisplayMode>): 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<[FoldDisplayMode](#folddisplaymode10)> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册屏幕显示模式变化监听的所有回调函数。 | 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<Display>): 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<[Display](#display)> | 是 | 回调函数。返回当前默认的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<Display> 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<[Display](#display)> | 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<Array<Display>>): 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<Array<[Display](#display)>> | 是 | 回调函数。返回当前所有的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<Array<Display>> 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<Array<[Display](#display)>> | 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 | 是 | 否 | 显示设备逻辑像素的密度,代表物理像素与逻辑像素的缩放系数,计算方式为:<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<CutoutInfo>): void 1070 1071获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用callback异步回调。建议应用布局规避该区域。 1072 1073**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1074 1075**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1076 1077**参数:** 1078 1079| 参数名 | 类型 | 必填 | 说明 | 1080| ----------- | --------------------------- | ---- | ------------------------------------------------------------ | 1081| callback | AsyncCallback<[CutoutInfo](#cutoutinfo9)> | 是 | 回调函数。返回描述不可用屏幕区域的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<CutoutInfo> 1110 1111获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用Promise异步回调。建议应用布局规避该区域。 1112 1113**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1114 1115**系统能力:** SystemCapability.WindowManager.WindowManager.Core 1116 1117**返回值:** 1118 1119| 类型 | 说明 | 1120| ------------------- | ------------------------- | 1121| Promise<[CutoutInfo](#cutoutinfo9)> | 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<Rect> 1148 1149获取当前2in1设备屏幕的可用区域,使用Promise异步回调。 1150 1151**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1152 1153**系统能力:** SystemCapability.Window.SessionManager 1154 1155**返回值:** 1156 1157| 类型 | 说明 | 1158| ------------------- | ------------------------- | 1159| Promise<[Rect](#rect9)> | 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<Rect>): 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<[Rect](#rect9)> | 是 | 回调函数,返回改变后的可用区域。 | 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<Rect>): 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<[Rect](#rect9)> | 否 | 回调函数,已经注册的回调函数,不填默认删除所有回调 | 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```