js-apis-screen.md 36.6 KB
Newer Older
张必荣 已提交
1
# 屏幕
2

张必荣 已提交
3 4 5 6 7 8 9
本模块提供管理屏幕的一些基础能力,包括获取屏幕对象,监听屏幕变化,创建和销毁虚拟屏幕等。

> **说明:**
>
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> 
> 本模块接口为系统接口。
10

张必荣 已提交
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
## 导入模块

```js
import screen from '@ohos.screen';
```

## screen.getAllScreens

getAllScreens(callback: AsyncCallback<Array<Screen>>): void

获取所有的屏幕,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                                   |
| -------- | --------------------------------------------------- | ---- | -------------------------------------- |
| callback | AsyncCallback<Array<[Screen](#screen)>> | 是   | 回调函数。返回当前获取的屏幕对象集合。 |

Z
zhengjiangliang 已提交
31 32 33 34 35 36 37 38
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
39 40 41
**示例:**

```js
42
let screenClass = null;
张必荣 已提交
43 44
screen.getAllScreens((err, data) => {
    if (err.code) {
45
        console.error('Failed to get all screens . Cause:  ' + JSON.stringify(err));
张必荣 已提交
46 47 48 49 50 51
        return;
    }
    console.info('Succeeded in getting all screens . Data:' + JSON.stringify(data));
    screenClass = data[0];
});
```
52

张必荣 已提交
53 54 55 56 57 58 59 60 61
## screen.getAllScreens

getAllScreens(): Promise<Array<Screen>>

获取所有的屏幕,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**返回值:** 
62

张必荣 已提交
63 64
| 类型                                          | 说明                                      |
| --------------------------------------------- | ----------------------------------------- |
65
| Promise<Array<[Screen](#screen)>> | Promise对象。返回当前获取的屏幕对象集合。 |
张必荣 已提交
66

Z
zhengjiangliang 已提交
67 68 69 70 71 72 73 74
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
75
**示例:**
76

张必荣 已提交
77
```js
78
let screenClass = null;
79
let promise = screen.getAllScreens();
张必荣 已提交
80 81 82 83 84 85 86
promise.then((data) => {
    screenClass = data[0];
    console.log('Succeeded in getting all screens . Data:'+ JSON.stringify(data));
}).catch((err) => {
    console.log('Failed to get all screens . Cause: ' + JSON.stringify(err));
});
```
87

张必荣 已提交
88
## screen.on('connect' | 'disconnect' | 'change')
89

张必荣 已提交
90 91 92 93 94 95 96
on(eventType: 'connect' | 'disconnect' | 'change', callback: Callback<number>): void

开启屏幕状态变化的监听。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**
97

张必荣 已提交
98 99 100 101 102 103
| 参数名    | 类型                   | 必填 | 说明                                                         |
| --------- | ---------------------- | ---- | ------------------------------------------------------------ |
| eventType | string                 | 是   | 监听事件。<br/>-eventType为"connect"表示屏幕连接事件。<br/>-eventType为"disconnect"表示断开屏幕连接事件。<br/>-eventType为"change"表示屏幕状态改变事件。 |
| callback  | Callback&lt;number&gt; | 是   | 回调函数。返回屏幕的id。                                     |

**示例:**
104

张必荣 已提交
105
```js
106 107 108 109 110 111 112
try {
    let callback = (data) => {
        console.info('Register the callback for screen changes. Data: ' + JSON.stringify(data))
    };
    screen.on('connect', callback);
} catch (exception) {
    console.error('Failed to register the callback for screen changes. Code: ' + JSON.stringify(exception));
张必荣 已提交
113 114
};
```
115

张必荣 已提交
116
## screen.off('connect' | 'disconnect' | 'change')
117

张必荣 已提交
118 119 120 121 122 123 124
off(eventType: 'connect' | 'disconnect' | 'change', callback?: Callback&lt;number&gt;): void

关闭屏幕状态变化的监听。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**
125

张必荣 已提交
126 127 128 129 130 131
| 参数名    | 类型                   | 必填 | 说明                                                         |
| --------- | ---------------------- | ---- | ------------------------------------------------------------ |
| eventType | string                 | 是   | 监听事件。<br/>-eventType为"connect"表示屏幕连接事件。<br/>-eventType为"disconnect"表示断开屏幕连接事件。<br/>-eventType为"change"表示屏幕状态改变事件。 |
| callback  | Callback&lt;number&gt; | 否   | 回调函数。返回屏幕的id。                                     |

**示例:**
132

张必荣 已提交
133
```js
134 135 136 137 138 139 140
try {
    let callback = (data) => {
        console.info('Unregister the callback for screen changes. Data: ' + JSON.stringify(data))
    };
    screen.off('connect', callback);
} catch (exception) {
    console.error('Failed to register the callback for screen changes. Code: ' + JSON.stringify(exception));
张必荣 已提交
141 142 143 144
};
```

## screen.makeExpand
145

张必荣 已提交
146 147 148 149 150 151 152
makeExpand(options:Array&lt;ExpandOption&gt;, callback: AsyncCallback&lt;number&gt;): void

将屏幕设置为扩展模式,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**
153

张必荣 已提交
154 155 156 157 158
| 参数名   | 类型                                       | 必填 | 说明                             |
| -------- | ------------------------------------------ | ---- | -------------------------------- |
| options  | Array&lt;[ExpandOption](#expandoption)&gt; | 是   | 设置扩展屏幕的参数集合。         |
| callback | Callback&lt;number&gt;                     | 是   | 回调函数。返回扩展屏幕的群组id。 |

Z
zhengjiangliang 已提交
159 160 161 162 163 164 165 166
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
167 168 169
**示例:**

```js
170 171 172 173 174 175 176 177 178 179 180 181 182
try {
    let groupId = null;
    screen.makeExpand([{screenId: 0, startX: 0, startY: 0}, {screenId: 1, startX: 1080, startY: 0}], (err, data) => {
      if (err.code) {
        console.error('Failed to make screens as expand-screen. Code:' + JSON.stringify(err));
        return;
      }
      groupId = data;
      console.info('Succeeded in making screens as expand-screen. Data: ' + JSON.stringify(data));
    });
} catch (exception) {
    console.error('Failed to make screens as expand-screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
183 184 185
```

## screen.makeExpand
186

张必荣 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199
makeExpand(options:Array&lt;ExpandOption&gt;): Promise&lt;number&gt;

将屏幕设置为扩展模式,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**

| 参数名  | 类型                                       | 必填 | 说明                     |
| ------- | ------------------------------------------ | ---- | ------------------------ |
| options | Array&lt;[ExpandOption](#expandoption)&gt; | 是   | 设置扩展屏幕的参数集合。 |

**返回值:**
200

张必荣 已提交
201 202 203 204
| 类型                  | 说明                                |
| --------------------- | ----------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回扩展屏幕的群组id。 |

Z
zhengjiangliang 已提交
205 206 207 208 209 210 211 212
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
213
**示例:**
214

张必荣 已提交
215
```js
216 217 218 219 220 221 222 223 224
try {
    screen.makeExpand([{screenId: 0, startX: 0, startY: 0}, {screenId: 1, startX: 1080, startY: 0}]).then((data) => {
      console.info('Succeeded in making screens as expand-screen. Data: ' + JSON.stringify(data));
    }).catch((err) => {
      console.error('Failed to make screens as expand-screen. Code:' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to make screens as expand-screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
225 226 227
```

## screen.makeMirror
228

张必荣 已提交
229 230 231 232 233 234 235 236 237 238 239 240 241 242
makeMirror(mainScreen:number, mirrorScreen:Array&lt;number&gt;, callback: AsyncCallback&lt;number&gt;): void

将屏幕设置为镜像模式,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**

| 参数名       | 类型                        | 必填 | 说明              |
| ------------ | --------------------------- | ---- |-----------------|
| mainScreen   | number                      | 是   | 主屏幕id。          |
| mirrorScreen | Array&lt;number&gt;         | 是   | 镜像屏幕id集合。       |
| callback     | AsyncCallback&lt;number&gt; | 是   | 回调函数。返回镜像屏幕的群组id。 |

Z
zhengjiangliang 已提交
243 244 245 246 247 248 249 250
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
251
**示例:**
252

张必荣 已提交
253
```js
254 255 256 257 258 259 260 261 262 263 264 265 266
let mainScreenId = 0;
let mirrorScreenIds = [1, 2, 3];
try {
    screen.makeMirror(mainScreenId, mirrorScreenIds, (err, data) => {
      if (err.code) {
        console.error('Failed to make screens as mirror-screen. Code: ' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in making screens as mirror-screen. Data: ' + JSON.stringify(data));
    });
} catch (exception) {
    console.error('Failed to make screens as mirror-screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
267 268 269
```

## screen.makeMirror
270

张必荣 已提交
271 272 273 274 275 276 277 278 279 280 281 282 283 284
makeMirror(mainScreen:number, mirrorScreen:Array&lt;number&gt;): Promise&lt;number&gt;

将屏幕设置为镜像模式,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**

| 参数名       | 类型                | 必填 | 说明        |
| ------------ | ------------------- | ---- |-----------|
| mainScreen   | number              | 是   | 主屏幕id。    |
| mirrorScreen | Array&lt;number&gt; | 是   | 镜像屏幕id集合。 |

**返回值:**
285

张必荣 已提交
286 287 288 289
| 类型                  | 说明                                |
| --------------------- | ----------------------------------- |
| Promise&lt;number&gt; | Promise对象。返回镜像屏幕的群组id。 |

Z
zhengjiangliang 已提交
290 291 292 293 294 295 296 297
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
298
**示例:**
299

张必荣 已提交
300
```js
301 302 303 304 305 306 307 308 309 310 311
let mainScreenId = 0;
let mirrorScreenIds = [1, 2, 3];
try {
    screen.makeMirror(mainScreenId, mirrorScreenIds).then((data) => {
      console.info('Succeeded in making screens as mirror-screen. Data: ' + JSON.stringify(data));
    }).catch((err) => {
      console.error('Failed to make screens as mirror-screen. Code: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to make screens as mirror-screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
312 313 314
```

## screen.createVirtualScreen
315

张必荣 已提交
316 317 318 319 320 321
createVirtualScreen(options:VirtualScreenOption, callback: AsyncCallback&lt;Screen&gt;): void

创建虚拟屏幕,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

322 323
**需要权限**:ohos.permission.CAPTURE_SCREEN,如果VirtualScreenOption.surfaceId有效,此权限是必需的。仅系统应用可用。

张必荣 已提交
324 325 326 327 328 329 330
**参数:**

| 参数名   | 类型                                        | 必填 | 说明                               |
| -------- | ------------------------------------------- | ---- | ---------------------------------- |
| options  | [VirtualScreenOption](#virtualscreenoption) | 是   | 用于创建虚拟屏幕的参数。           |
| callback | AsyncCallback&lt;[Screen](#screen)&gt;      | 是   | 回调函数,返回创建的虚拟屏幕对象。 |

Z
zhengjiangliang 已提交
331 332 333 334 335 336 337 338
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
339
**示例:**
340

张必荣 已提交
341
```js
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
let screenClass = null;
try {
    screen.createVirtualScreen({
      name: 'screen01',
      width: 1080,
      height: 2340,
      density: 2,
      surfaceId: ''
    }, (err, data) => {
      if (err.code) {
        console.error('Failed to create virtual screen. Code: ' + JSON.stringify(err));
        return;
      }
      screenClass = data;
      console.info('Succeeded in creating virtual screen. Data: ' + JSON.stringify(data));
    });
} catch (exception) {
    console.error('Failed to create virtual screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
361 362 363
```

## screen.createVirtualScreen
364

张必荣 已提交
365 366 367 368 369 370
createVirtualScreen(options:VirtualScreenOption): Promise&lt;Screen&gt;

创建虚拟屏幕,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

371 372
**需要权限**:ohos.permission.CAPTURE_SCREEN,如果VirtualScreenOption.surfaceId有效,此权限是必需的。仅系统应用可用。

张必荣 已提交
373
**参数:** 
374

张必荣 已提交
375 376 377 378 379 380 381 382 383 384
| 参数名  | 类型                                        | 必填 | 说明                     |
| ------- | ------------------------------------------- | ---- | ------------------------ |
| options | [VirtualScreenOption](#virtualscreenoption) | 是   | 用于创建虚拟屏幕的参数。 |

**返回值:**

| 类型                             | 说明                                  |
| -------------------------------- | ------------------------------------- |
| Promise&lt;[Screen](#screen)&gt; | Promise对象。返回创建的虚拟屏幕对象。 |

Z
zhengjiangliang 已提交
385 386 387 388 389 390 391 392
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
393
**示例:**
394

张必荣 已提交
395
```js
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412
let screenClass = null;
try {
    screen.createVirtualScreen({
      name: 'screen01',
      width: 1080,
      height: 2340,
      density: 2,
      surfaceId: ''
    }).then((data) => {
      screenClass = data;
      console.info('Succeeded in creating virtual screen. Data: ' + JSON.stringify(data));
    }).catch((err) => {
      console.error('Failed to create virtual screen. Code: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to create virtual screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
413 414 415
```

## screen.destroyVirtualScreen
416

张必荣 已提交
417 418 419 420 421 422 423
destroyVirtualScreen(screenId:number, callback: AsyncCallback&lt;void&gt;): void

销毁虚拟屏幕,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**
424

张必荣 已提交
425 426 427 428 429
| 参数名   | 类型                      | 必填 | 说明                                                         |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| screenId | number                    | 是   | 屏幕的id。                                                   |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当销毁虚拟屏幕成功,err为undefined,否则为错误对象。 |

Z
zhengjiangliang 已提交
430 431 432 433 434 435 436 437
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 1400002 | This operation is not access. |

张必荣 已提交
438
**示例:**
439

张必荣 已提交
440
```js
441 442 443 444 445 446 447 448 449 450 451 452
let screenId = 1;
try {
    screen.destroyVirtualScreen(screenId, (err,data) => {
      if (err.code) {
        console.error('Failed to destroy virtual screen. Code: ' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in destroying virtual screen.');
    });
} catch (exception) {
    console.error('Failed to destroy virtual screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
453 454 455
```

## screen.destroyVirtualScreen
456

张必荣 已提交
457 458 459 460 461 462 463
destroyVirtualScreen(screenId:number): Promise&lt;void&gt;

销毁虚拟屏幕,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**
464

张必荣 已提交
465 466 467 468 469
| 参数名   | 类型   | 必填 | 说明       |
| -------- | ------ | ---- | ---------- |
| screenId | number | 是   | 屏幕的id。 |

**返回值:**
470

张必荣 已提交
471 472 473 474
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

Z
zhengjiangliang 已提交
475 476 477 478 479 480 481 482
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------------- |
| 1400002 | This operation is not access. |

张必荣 已提交
483
**示例:**
484

张必荣 已提交
485
```js
486 487 488 489 490 491 492 493 494 495
let screenId = 1;
try {
    screen.destroyVirtualScreen(screenId).then((data) => {
      console.info('Succeeded in destroying virtual screen.');
    }).catch((err) => {
      console.error('Failed to destroy virtual screen. Code: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to destroy virtual screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
496 497 498
```

## screen.setVirtualScreenSurface
499

张必荣 已提交
500 501 502 503 504 505
setVirtualScreenSurface(screenId:number, surfaceId: string, callback: AsyncCallback&lt;void&gt;): void

设置虚拟屏幕的surface,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

506 507
**需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。

张必荣 已提交
508 509 510 511 512 513 514 515
**参数:**

| 参数名    | 类型                      | 必填 | 说明                                                         |
| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
| screenId  | number                    | 是   | 屏幕的id。                                                   |
| surfaceId | string                    | 是   | surface的id。                                                |
| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置虚拟屏幕surface成功,err为undefined,否则为错误对象。 |

Z
zhengjiangliang 已提交
516 517 518 519 520 521 522 523
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
524 525 526
**示例:**

```js
527 528 529 530 531 532 533 534 535 536 537 538 539
let screenId = 1;
let surfaceId = '2048';
try {
  screen.setVirtualScreenSurface(screenId, surfaceId, (err,data) => {
    if (err.code) {
      console.error('Failed to Set surface for the virtual screen. Code: ' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in setting surface for the virtual screen.');
  });
} catch (exception) {
    console.error('Failed to Set surface for the virtual screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
540 541 542
```

## screen.setVirtualScreenSurface
543

张必荣 已提交
544 545 546 547 548 549
setVirtualScreenSurface(screenId:number, surfaceId: string): Promise&lt;void&gt;

设置虚拟屏幕的surface,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

550 551
**需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。

张必荣 已提交
552
**参数:**
553

张必荣 已提交
554 555 556 557 558 559
| 参数名    | 类型   | 必填 | 说明          |
| --------- | ------ | ---- | ------------- |
| screenId  | number | 是   | 屏幕的id。    |
| surfaceId | string | 是   | surface的id。 |

**返回值:**
560

张必荣 已提交
561 562 563 564
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

Z
zhengjiangliang 已提交
565 566 567 568 569 570 571 572
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | ----------------------- |
| 1400001 | This is invalid screen. |

张必荣 已提交
573
**示例:**
574

张必荣 已提交
575
```js
576 577 578 579 580 581 582 583 584 585 586
let screenId = 1;
let surfaceId = '2048';
try {
    screen.setVirtualScreenSurface(screenId, surfaceId).then((data) => {
      console.info('Succeeded in setting surface for the virtual screen.');
    }).catch((err) => {
      console.error('Failed to Set surface for the virtual screen. Code: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to Set surface for the virtual screen. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
587
```
X
xpeng 已提交
588 589

## screen.isScreenRotationLocked
590

X
xpeng 已提交
591 592 593 594 595 596 597
isScreenRotationLocked(): Promise&lt;boolean&gt;

查询当前自动转屏是否锁定,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**返回值:**
598

X
xpeng 已提交
599 600
| 类型                   | 说明                                  |
| ---------------------- | ------------------------------------- |
601
| Promise&lt;boolean&gt; | Promise对象。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 |
X
xpeng 已提交
602 603

**示例:**
604

X
xpeng 已提交
605 606 607 608 609 610 611 612 613
```js
screen.isScreenRotationLocked().then((isLocked) => {
  console.info('Succeeded in getting screen rotation lock status. isLocked:'+ JSON.stringify(isLocked));
}).catch((err) => {
  console.error('Failed to get screen rotation lock status. Cause:' + JSON.stringify(err));
});
```

## screen.isScreenRotationLocked
614

X
xpeng 已提交
615 616 617 618 619 620 621 622 623 624
isScreenRotationLocked(callback: AsyncCallback&lt;boolean&gt;): void

查询当前自动转屏是否锁定,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**

| 参数名    | 类型                          | 必填 | 说明                                                         |
| --------- | ---------------------------- | ---- | ------------------------------------------------------------ |
625
| callback  | AsyncCallback&lt;boolean&gt; | 是   | 回调函数。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 |
X
xpeng 已提交
626 627 628 629 630 631 632 633 634 635 636 637 638 639

**示例:**

```js
screen.isScreenRotationLocked((err, isLocked) => {
  if (err.code) {
    console.error('Failed to get screen rotation lock status. Cause:' + JSON.stringify(err));
    return;
  }
  console.info('Succeeded in getting screen rotation lock status. isLocked:' + JSON.stringify(isLocked));
});
```

## screen.setScreenRotationLocked
640

X
xpeng 已提交
641 642 643 644 645 646 647
setScreenRotationLocked(isLocked: boolean): Promise&lt;void&gt;

设置自动转屏开关是否锁定,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**
648

X
xpeng 已提交
649 650 651 652 653
| 参数名    | 类型   | 必填 | 说明          |
| --------- | ------ | ---- | ------------- |
| isLocked  | boolean | 是   | 自动转屏开关是否锁定。true为锁定,false为未锁定. |

**返回值:**
654

X
xpeng 已提交
655 656 657 658 659
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

**示例:**
660

X
xpeng 已提交
661
```js
662 663 664 665 666 667 668 669 670 671
let isLocked = false;
try {
    screen.setScreenRotationLocked(isLocked).then((data) => {
      console.info('Succeeded in setting whether to lock screen rotation');
    }).catch((err) => {
      console.error('Failed to set whether to lock screen rotation. Code: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to set whether to lock screen rotation. Code: ' + JSON.stringify(exception));
};
X
xpeng 已提交
672 673 674
```

## screen.setScreenRotationLocked
675

X
xpeng 已提交
676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691
setScreenRotationLocked(isLocked: boolean, callback: AsyncCallback&lt;void&gt;): void

设置自动转屏开关是否锁定,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

**参数:**

| 参数名    | 类型                      | 必填 | 说明                                                         |
| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
| isLocked  | boolean                   | 是   | 自动转屏开关是否锁定。true为锁定,false为未锁定.                 |
| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置自动转屏是否锁定成功,err为undefined,否则为错误对象。 |

**示例:**

```js
692 693 694 695 696 697 698 699 700 701 702 703
let isLocked = false;
try {
    screen.setScreenRotationLocked(isLocked, (err, data) => {
      if (err.code) {
        console.error('Failed to set whether to lock screen rotation. Cause:' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in setting whether to lock screen rotation.');
    });
} catch (exception) {
    console.error('Failed to set whether to lock screen rotation. Code: ' + JSON.stringify(exception));
};
X
xpeng 已提交
704 705
```

张必荣 已提交
706
## ExpandOption
707

张必荣 已提交
708 709 710 711 712 713 714 715 716 717 718
扩展屏幕的参数。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 名称     | 参数类型 | 可读 | 可写 | 说明                |
| -------- | -------- | ---- | ---- | ------------------- |
| screenId | number   | 是   | 是   | 屏幕的id。          |
| startX   | number   | 是   | 是   | 屏幕的起始X轴坐标。 |
| startY   | number   | 是   | 是   | 屏幕的起始Y轴坐标。 |

## VirtualScreenOption
719

张必荣 已提交
720 721 722 723 724 725 726 727 728 729 730 731 732
创建虚拟屏幕的参数。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 名称      | 参数类型 | 可读 | 可写 | 说明                      |
| --------- | -------- | ---- | ---- | ------------------------- |
| name      | string   | 是   | 是   | 指定虚拟屏幕的名称。      |
| width     | number   | 是   | 是   | 指定虚拟屏幕的宽度。      |
| height    | number   | 是   | 是   | 指定虚拟屏幕的高度。      |
| density   | number   | 是   | 是   | 指定虚拟屏幕的密度。      |
| surfaceId | string   | 是   | 是   | 指定虚拟屏幕的surfaceId。 |

## Screen
733

张必荣 已提交
734 735 736 737 738 739 740 741 742 743 744 745
屏幕实例。

下列API示例中都需先使用[getAllScreens()](#screengetallscreens)[createVirtualScreen()](#screencreatevirtualscreen)中的任一方法获取到Screen实例,再通过此实例调用对应方法。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 名称              | 参数类型                                       | 可读 | 可写 | 说明                   |
| ----------------- | ---------------------------------------------- | ---- | ---- | ---------------------- |
| id                | number                                         | 是   | 否   | 屏幕的id。             |
| parent            | number                                         | 是   | 否   | 屏幕所属群组的id。     |
| supportedModeInfo | Array&lt;[ScreenModeInfo](#screenmodeinfo)&gt; | 是   | 否   | 屏幕支持的模式集合。   |
| activeModeIndex   | number                                         | 是   | 否   | 当前屏幕所处模式索引。 |
G
ge-yafang 已提交
746
| orientation       | [Orientation](#orientation)                     | 是   | 否   | 屏幕方向。             |
张必荣 已提交
747 748

### setOrientation
749

张必荣 已提交
750 751 752 753 754 755 756 757 758 759 760
setOrientation(orientation: Orientation, callback: AsyncCallback&lt;void&gt;): void

设置屏幕方向,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 参数名      | 类型                        | 必填 | 说明                                                         |
| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
| orientation | [Orientation](#orientation) | 是   | 屏幕方向。                                                   |
| callback    | AsyncCallback&lt;void&gt;   | 是   | 回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。 |

Z
zhengjiangliang 已提交
761 762 763 764 765 766 767 768
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 1400003 | This window manager service work abnormally. |

张必荣 已提交
769
**示例:**
770

张必荣 已提交
771
```js
772 773 774 775 776 777 778 779 780 781 782
try {
    screenClass.setOrientation(screen.Orientation.VERTICAL, (err, data) => {
        if (err.code) {
            console.error('Failed to set Orientation VERTICAL. Code: ' + JSON.stringify(err));
            return;
        }
        console.info('Succeeded in setting Orientation VERTICAL. data: ' + JSON.stringify(data));
    });
} catch (exception) {
    console.error('Failed to set Orientation VERTICAL. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
783
```
784

张必荣 已提交
785
### setOrientation
786

张必荣 已提交
787 788 789 790 791 792 793 794 795 796 797
setOrientation(orientation: Orientation): Promise&lt;void&gt;

设置屏幕方向,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 参数名      | 类型                        | 必填 | 说明       |
| ----------- | --------------------------- | ---- | ---------- |
| orientation | [Orientation](#orientation) | 是   | 屏幕方向。 |

**返回值:**
798

张必荣 已提交
799 800 801 802
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

Z
zhengjiangliang 已提交
803 804 805 806 807 808 809 810
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 1400003 | This window manager service work abnormally. |

张必荣 已提交
811
**示例:**
812

张必荣 已提交
813
```js
814 815 816 817 818 819 820 821 822 823
try {
    let promise = screenClass.setOrientation(screen.Orientation.VERTICAL);
    promise.then((data) => {
        console.info('Succeeded in setting Orientation VERTICAL. Data: ' + JSON.stringify(data));
    }).catch((err) => {
        console.error('Failed to set Orientation VERTICAL. Cause: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to set Orientation VERTICAL. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
824
```
825

张必荣 已提交
826
### setScreenActiveMode
827

张必荣 已提交
828 829 830 831 832 833 834 835 836 837 838
setScreenActiveMode(modeIndex: number, callback: AsyncCallback&lt;void&gt;): void

设置屏幕当前显示模式,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 参数名    | 类型                      | 必填 | 说明                                                         |
| --------- | ------------------------- | ---- | ------------------------------------------------------------ |
| modeIndex | number                    | 是   | 模式索引。                                                   |
| callback  | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置屏幕当前显示模式成功,err为undefined,否则为错误对象。 |

Z
zhengjiangliang 已提交
839 840 841 842 843 844 845 846
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 1400003 | This window manager service work abnormally. |

张必荣 已提交
847 848 849
**示例:**

```js
850 851 852 853 854 855 856 857 858 859 860 861
let modeIndex = 0;
try {
    screenClass.setScreenActiveMode(modeIndex, (err, data) => {
        if (err.code) {
            console.error('Failed to set ScreenActiveMode 0. Code: ' + JSON.stringify(err));
            return;
        }
        console.info('Succeeded in setting ScreenActiveMode 0. data: ' + JSON.stringify(data));
    });
} catch (exception) {
    console.error('Failed to set ScreenActiveMode 0. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
862
```
863

张必荣 已提交
864
### setScreenActiveMode
865

张必荣 已提交
866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881
setScreenActiveMode(modeIndex: number): Promise&lt;void&gt;

设置屏幕当前显示模式,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 参数名    | 类型   | 必填 | 说明       |
| --------- | ------ | ---- | ---------- |
| modeIndex | number | 是   | 模式索引。 |

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

Z
zhengjiangliang 已提交
882 883 884 885 886 887 888 889
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 1400003 | This window manager service work abnormally. |

张必荣 已提交
890
**示例:**
891

张必荣 已提交
892
```js
893 894 895 896 897 898 899 900 901 902 903
let modeIndex = 0;
try {
    let promise = screenClass.setScreenActiveMode(modeIndex);
      promise.then((data) => {
          console.info('Succeeded in setting ScreenActiveMode 0. Data: ' + JSON.stringify(data));
      }).catch((err) => {
          console.error('Failed to set ScreenActiveMode 0. Code: ' + JSON.stringify(err));
      });
} catch (exception) {
    console.error('Failed to set ScreenActiveMode 0. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
904 905 906
```

### setDensityDpi
907

张必荣 已提交
908 909 910 911 912 913 914 915
setDensityDpi(densityDpi: number, callback: AsyncCallback&lt;void&gt;): void;

设置屏幕的像素密度,使用callback异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 参数名     | 类型                      | 必填 | 说明                                                         |
| ---------- | ------------------------- | ---- | ------------------------------------------------------------ |
张必荣 已提交
916
| densityDpi | number                    | 是   | 像素密度。支持的输入范围为80-640。                           |
张必荣 已提交
917 918
| callback   | AsyncCallback&lt;void&gt; | 是   | 回调函数。当设置屏幕的像素密度成功,err为undefined,否则为错误对象。 |

Z
zhengjiangliang 已提交
919 920 921 922 923 924 925 926
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 1400003 | This window manager service work abnormally. |

张必荣 已提交
927
**示例:**
928

张必荣 已提交
929
```js
930 931 932 933 934 935 936 937 938 939 940 941
let densityDpi = 320;
try {
    screenClass.setDensityDpi(densityDpi, (err, data) => {
        if (err.code) {
            console.error('Failed to set DensityDpi 320. Code: ' + JSON.stringify(err));
            return;
        }
        console.info('Succeed in setting DensityDpi 320. data: ' + JSON.stringify(data));
    });
} catch (exception) {
    console.error('Failed to set DensityDpi 320. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
942 943 944
```

### setDensityDpi
945

张必荣 已提交
946 947 948 949 950 951
setDensityDpi(densityDpi: number): Promise&lt;void&gt;

设置屏幕的像素密度,使用Promise异步回调。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

张必荣 已提交
952 953 954
| 参数名     | 类型   | 必填 | 说明                               |
| ---------- | ------ | ---- | ---------------------------------- |
| densityDpi | number | 是   | 像素密度。支持的输入范围为80-640。 |
张必荣 已提交
955 956 957 958 959 960 961

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

Z
zhengjiangliang 已提交
962 963 964 965 966 967 968 969
**错误码:**

以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)

| 错误码ID | 错误信息 |
| ------- | -------------------------------------------- |
| 1400003 | This window manager service work abnormally. |

张必荣 已提交
970
**示例:**
971

张必荣 已提交
972
```js
973 974 975 976 977 978 979 980 981 982 983
let densityDpi = 320;
try {
    let promise = screenClass.setDensityDpi(densityDpi);
    promise.then((data) => {
        console.info('Succeeded in setting DensityDpi 320. Data: ' + JSON.stringify(data));
    }).catch((err) => {
        console.error('Failed to set DensityDpi 320. Code: ' + JSON.stringify(err));
    });
} catch (exception) {
    console.error('Failed to set DensityDpi 320. Code: ' + JSON.stringify(exception));
};
张必荣 已提交
984 985 986
```

## Orientation
987

张必荣 已提交
988 989 990 991 992 993 994 995 996 997 998 999 1000
屏幕方向枚举。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 名称               | 值   | 说明                             |
| ------------------ | ---- | -------------------------------- |
| UNSPECIFIED        | 0    | 表示未指定屏幕方向,由系统指定。 |
| VERTICAL           | 1    | 表示指定屏幕为垂直方向。         |
| HORIZONTAL         | 2    | 表示指定屏幕为水平方向。         |
| REVERSE_VERTICAL   | 3    | 表示指定屏幕为反向垂直方向。     |
| REVERSE_HORIZONTAL | 4    | 表示指定屏幕为反向水平方向。     |

## ScreenModeInfo
1001

张必荣 已提交
1002 1003 1004 1005 1006 1007 1008 1009 1010 1011
屏幕显示模式信息。

**系统能力:** SystemCapability.WindowManager.WindowManager.Core

| 名称        | 参数类型 | 可读 | 可写 | 说明                                               |
| ----------- | -------- | ---- | ---- | -------------------------------------------------- |
| id          | number   | 是   | 是   | 模式id,所支持的模式由具体设备分辨率和刷新率决定。 |
| width       | number   | 是   | 是   | 屏幕的宽度。                                       |
| height      | number   | 是   | 是   | 屏幕的高度。                                       |
| refreshRate | number   | 是   | 是   | 屏幕的刷新率。                                     |