# @ohos.screen (Screen) (System API) The Screen module implements basic screen management. You can use the APIs of this module to obtain a Screen object, listen for screen changes, and create and destroy virtual screens. > **NOTE** > > - The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. > > - The APIs provided by this module are system APIs. ## Modules to Import ```ts import { screen } from '@kit.ArkUI'; ``` ## screen.getAllScreens getAllScreens(callback: AsyncCallback<Array<Screen>>): void Obtains all screens. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | --------------------------------------------------- | ---- | -------------------------------------- | | callback | AsyncCallback<Array<[Screen](#screen)>> | Yes | Callback used to return all the **Screen** objects obtained.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenClass: screen.Screen | null = null; screen.getAllScreens((err: BusinessError, data: Array) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to get all screens. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in getting all screens. Data:' + JSON.stringify(data)); screenClass = data[0]; }); ``` ## screen.getAllScreens getAllScreens(): Promise<Array<Screen>> Obtains all screens. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Return value** | Type | Description | | --------------------------------------------- | ----------------------------------------- | | Promise<Array<[Screen](#screen)>> | Promise used to return all the **Screen** objects obtained.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenClass: screen.Screen | null = null; let promise: Promise> = screen.getAllScreens(); promise.then((data: Array) => { screenClass = data[0]; console.log('Succeeded in getting all screens. Data:' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.log('Failed to get all screens. Cause: ' + JSON.stringify(err)); }); ``` ## screen.on('connect' | 'disconnect' | 'change') on(eventType: 'connect' | 'disconnect' | 'change', callback: Callback<number>): void Subscribes to events related to the screen state. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | --------- | ---------------------- | ---- | ----------------------------------------------------------- | | eventType | string | Yes | Event type.
- **connect**: an event indicating that the screen is connected.
- **disconnect**: an event indicating that the screen is disconnected.
- **change**: an event indicating that the screen state changes.| | callback | Callback<number> | Yes | Callback used to return the screen ID, which is an integer. | **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| **Example** ```ts let callback: Callback = (data: number) => { console.info('Succeeded in registering the callback for screen changes. Data: ' + JSON.stringify(data)) }; screen.on('connect', callback); ``` ## screen.off('connect' | 'disconnect' | 'change') off(eventType: 'connect' | 'disconnect' | 'change', callback?: Callback<number>): void Unsubscribes from events related to the screen state. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | --------- | ---------------------- | ---- | ------------------------------------------------------------ | | eventType | string | Yes | Event type.
- **connect**: an event indicating that the screen is connected.
- **disconnect**: an event indicating that the screen is disconnected.
- **change**: an event indicating that the screen state changes.| | callback | Callback<number> | No | Callback used to return the screen ID, which is an integer. | **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| **Example** ```ts let callback: Callback = (data: number) => { console.info('Succeeded in unregistering the callback for screen changes. Data: ' + JSON.stringify(data)) }; screen.off('connect', callback); screen.off('connect'); ``` ## screen.makeExpand makeExpand(options:Array<ExpandOption>, callback: AsyncCallback<number>): void Sets the screen to the expanded mode. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------------------ | ---- |----------------------------| | options | Array<[ExpandOption](#expandoption)> | Yes | Parameters for expanding the screen. | | callback | AsyncCallback<number> | Yes | Callback used to return the group ID of the expanded screens, which is an integer.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let groupId: number | null = null; class ExpandOption { screenId: number = 0; startX: number = 0; startY: number = 0; } let mainScreenOption: ExpandOption = { screenId: 0, startX: 0, startY: 0 }; let otherScreenOption: ExpandOption = { screenId: 1, startX: 1080, startY: 0 }; let expandOptionArray : ExpandOption[] = [ mainScreenOption, otherScreenOption ]; screen.makeExpand(expandOptionArray, (err: BusinessError, data: number) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to expand the screen. Code:${err.code},message is ${err.message}`); return; } groupId = data; console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data)); }); ``` ## screen.makeExpand makeExpand(options:Array<ExpandOption>): Promise<number> Sets the screen to the expanded mode. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | ------- | ------------------------------------------ | ---- | ------------------------ | | options | Array<[ExpandOption](#expandoption)> | Yes | Parameters for expanding the screen.| **Return value** | Type | Description | | --------------------- |---------------------------------| | Promise<number> | Promise used to return the group ID of the expanded screens, which is an integer.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; class ExpandOption { screenId: number = 0; startX: number = 0; startY: number = 0; } let mainScreenOption: ExpandOption = { screenId: 0, startX: 0, startY: 0 }; let otherScreenOption: ExpandOption = { screenId: 1, startX: 1080, startY: 0 }; let expandOptionArray : ExpandOption[] = [ mainScreenOption, otherScreenOption ]; screen.makeExpand(expandOptionArray).then(( data: number) => { console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.error(`Failed to expand the screen. Code:${err.code},message is ${err.message}`); }); ``` ## screen.stopExpand10+ stopExpand(expandScreen:Array<number>, callback: AsyncCallback<void>): void Stops the expanded mode. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name| Type| Mandatory| Description | | ------------ | --------------------------- | --- |-----------------------------------------| | expandScreen | Array<number> | Yes | IDs of the expanded screens. Each ID must be an integer. The size of the expandScreen array cannot exceed 1000. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the expanded mode is stopped, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let expandScreenIds: Array = [1, 2, 3]; screen.stopExpand(expandScreenIds, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to stop expand screens. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in stopping expand screens.'); }); ``` ## screen.stopExpand10+ stopExpand(expandScreen:Array<number>): Promise<void> Stops the expanded mode. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name| Type| Mandatory| Description | | ------------ | ------------------- | --- |--------------------| | expandScreen | Array<number> | Yes | IDs of the expanded screens. Each ID must be an integer. The size of the expandScreen array cannot exceed 1000.| **Return value** | Type| Description| | --------------------- | ----------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let expandScreenIds: Array = [1, 2, 3]; screen.stopExpand(expandScreenIds).then(() => { console.info('Succeeded in stopping expand screens.'); }).catch((err: BusinessError) => { console.error(`Failed to stop expand screens. Code:${err.code},message is ${err.message}`); }); ``` ## screen.makeMirror makeMirror(mainScreen:number, mirrorScreen:Array<number>, callback: AsyncCallback<number>): void Sets screen mirroring. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | --------------------------- | ---- |--------------------| | mainScreen | number | Yes | ID of the primary screen. The value must be an integer. | | mirrorScreen | Array<number> | Yes | IDs of secondary screens. Each ID must be an integer.| | callback | AsyncCallback<number> | Yes | Callback used to return the group ID of the secondary screens, which is an integer. | **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let mainScreenId: number = 0; let mirrorScreenIds: Array = [1, 2, 3]; screen.makeMirror(mainScreenId, mirrorScreenIds, (err: BusinessError, data: number) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to set screen mirroring. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data)); }); ``` ## screen.makeMirror makeMirror(mainScreen:number, mirrorScreen:Array<number>): Promise<number> Sets screen mirroring. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ------------------- | ---- |--------------------| | mainScreen | number | Yes | ID of the primary screen. The value must be an integer. | | mirrorScreen | Array<number> | Yes | IDs of secondary screens. Each ID must be an integer.| **Return value** | Type | Description | | --------------------- |---------------------------------| | Promise<number> | Promise used to return the group ID of the secondary screens, which is an integer.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let mainScreenId: number = 0; let mirrorScreenIds: Array = [1, 2, 3]; screen.makeMirror(mainScreenId, mirrorScreenIds).then((data: number) => { console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.error(`Failed to set screen mirroring. Code:${err.code},message is ${err.message}`); }); ``` ## screen.stopMirror10+ stopMirror(mirrorScreen:Array<number>, callback: AsyncCallback<void>): void Stops screen mirroring. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name| Type| Mandatory| Description | | ------------ | --------------------------- | --- |-----------------------------------------| | mirrorScreen | Array<number> | Yes | IDs of secondary screens. Each ID must be an integer. The size of the mirrorScreen array cannot exceed 1000.| | callback | AsyncCallback<void> | Yes | Callback used to return the result. If screen mirroring is stopped, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let mirrorScreenIds: Array = [1, 2, 3]; screen.stopMirror(mirrorScreenIds, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to stop mirror screens. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in stopping mirror screens.'); }); ``` ## screen.stopMirror10+ stopMirror(mirrorScreen:Array<number>): Promise<void> Stops screen mirroring. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name| Type| Mandatory| Description | | ------------ | ------------------- | --- |--------------------| | mirrorScreen | Array<number> | Yes | IDs of secondary screens. Each ID must be an integer. The size of the mirrorScreen array cannot exceed 1000.| **Return value** | Type| Description| | --------------------- | ----------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let mirrorScreenIds: Array = [1, 2, 3]; screen.stopMirror(mirrorScreenIds).then(() => { console.info('Succeeded in stopping mirror screens.'); }).catch((err: BusinessError) => { console.error(`Failed to stop mirror screens.Code:${err.code},message is ${err.message}`); }); ``` ## screen.createVirtualScreen createVirtualScreen(options:VirtualScreenOption, callback: AsyncCallback<Screen>): void Creates a virtual screen. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Required permissions**: ohos.permission.CAPTURE_SCREEN **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------------------------- | ---- | ---------------------------------- | | options | [VirtualScreenOption](#virtualscreenoption) | Yes | Virtual screen parameters. | | callback | AsyncCallback<[Screen](#screen)> | Yes | Callback used to return the created virtual screen.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 201 | Permission verification failed. | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenClass: screen.Screen | null = null; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option, (err: BusinessError, data: screen.Screen) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); return; } screenClass = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); }); ``` ## screen.createVirtualScreen createVirtualScreen(options:VirtualScreenOption): Promise<Screen> Creates a virtual screen. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Required permissions**: ohos.permission.CAPTURE_SCREEN **Parameters** | Name | Type | Mandatory| Description | | ------- | ------------------------------------------- | ---- | ------------------------ | | options | [VirtualScreenOption](#virtualscreenoption) | Yes | Virtual screen parameters.| **Return value** | Type | Description | | -------------------------------- | ------------------------------------- | | Promise<[Screen](#screen)> | Promise used to return the created virtual screen.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 201 | Permission verification failed. | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenClass: screen.Screen | null = null; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { screenClass = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ## screen.destroyVirtualScreen destroyVirtualScreen(screenId:number, callback: AsyncCallback<void>): void Destroys a virtual screen. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | ------------------------- | ---- | ------------------------------------------------------------ | | screenId | number | Yes | Screen ID. The value must be an integer. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the virtual screen is destroyed, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400002 | Unauthorized operation. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenId: number = 1; screen.destroyVirtualScreen(screenId, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to destroy the virtual screen. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in destroying the virtual screen.'); }); ``` ## screen.destroyVirtualScreen destroyVirtualScreen(screenId:number): Promise<void> Destroys a virtual screen. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ---------- | | screenId | number | Yes | Screen ID. The value must be an integer.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400002 | Unauthorized operation. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenId: number = 1; screen.destroyVirtualScreen(screenId).then(() => { console.info('Succeeded in destroying the virtual screen.'); }).catch((err: BusinessError) => { console.error(`Failed to destroy the virtual screen.Code:${err.code},message is ${err.message}`); }); ``` ## screen.setVirtualScreenSurface setVirtualScreenSurface(screenId:number, surfaceId: string, callback: AsyncCallback<void>): void Sets the surface for a virtual screen. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Required permissions**: ohos.permission.CAPTURE_SCREEN (available only to system applications) **Parameters** | Name | Type | Mandatory| Description | | --------- | ------------------------- | ---- | ------------------------------------------------------------ | | screenId | number | Yes | Screen ID. The value must be an integer. | | surfaceId | string | Yes | Surface ID of the virtual screen. The value can be customized. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the virtual screen surface is successfully set, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 201 | Permission verification failed. | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenId: number = 1; let surfaceId: string = '2048'; screen.setVirtualScreenSurface(screenId, surfaceId, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to set the surface for the virtual screen. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in setting the surface for the virtual screen.'); }); ``` ## screen.setVirtualScreenSurface setVirtualScreenSurface(screenId:number, surfaceId: string): Promise<void> Sets the surface for a virtual screen. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Required permissions**: ohos.permission.CAPTURE_SCREEN (available only to system applications) **Parameters** | Name | Type | Mandatory| Description | | --------- | ------ | ---- | ------------- | | screenId | number | Yes | Screen ID. The value must be an integer. | | surfaceId | string | Yes | Surface ID of the virtual screen. The value can be customized.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | ----------------------- | | 201 | Permission verification failed. | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400001 | Invalid display or screen. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenId: number = 1; let surfaceId: string = '2048'; screen.setVirtualScreenSurface(screenId, surfaceId).then(() => { console.info('Succeeded in setting the surface for the virtual screen.'); }).catch((err: BusinessError) => { console.error(`Failed to set the surface for the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ## screen.isScreenRotationLocked isScreenRotationLocked(): Promise<boolean> Checks whether auto rotate is locked. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Return value** | Type | Description | | ---------------------- | ------------------------------------- | | Promise<boolean> | Promise used to return the result. If **true** is returned, auto rotate is locked. If **false** is returned, auto rotate is unlocked.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; screen.isScreenRotationLocked().then((isLocked: boolean) => { console.info('Succeeded in getting the screen rotation lock status. isLocked:' + JSON.stringify(isLocked)); }).catch((err: BusinessError) => { console.error(`Failed to get the screen rotation lock status. Code:${err.code},message is ${err.message}`); }); ``` ## screen.isScreenRotationLocked isScreenRotationLocked(callback: AsyncCallback<boolean>): void Checks whether auto rotate is locked. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | --------- | ---------------------------- | ---- | ------------------------------------------------------------ | | callback | AsyncCallback<boolean> | Yes | Callback used to return the result. If **true** is returned, auto rotate is locked. If **false** is returned, auto rotate is unlocked.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; screen.isScreenRotationLocked((err: BusinessError, isLocked: boolean) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to get the screen rotation lock status. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in getting the screen rotation lock status. isLocked:' + JSON.stringify(isLocked)); }); ``` ## screen.setScreenRotationLocked setScreenRotationLocked(isLocked: boolean): Promise<void> Sets whether to lock auto rotate. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | --------- | ------ | ---- | ------------- | | isLocked | boolean | Yes | Whether to lock auto rotate. The value **true** means to lock auto rotate, and **false** means the opposite.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let isLocked: boolean = false; screen.setScreenRotationLocked(isLocked).then(() => { console.info('Succeeded in unlocking auto rotate'); }).catch((err: BusinessError) => { console.error(`Failed to unlock auto rotate. Code:${err.code},message is ${err.message}`); }); ``` ## screen.setScreenRotationLocked setScreenRotationLocked(isLocked: boolean, callback: AsyncCallback<void>): void Sets whether to lock auto rotate. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | --------- | ------------------------- | ---- | ------------------------------------------------------------ | | isLocked | boolean | Yes | Whether to lock auto rotate. The value **true** means to lock auto rotate, and **false** means the opposite. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the operation is successful, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let isLocked: boolean = false; screen.setScreenRotationLocked(isLocked, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to unlock auto rotate. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in unlocking auto rotate.'); }); ``` ## screen.setMultiScreenMode13+ setMultiScreenMode(primaryScreenId: number, secondaryScreenId: number, secondaryScreenMode: MultiScreenMode): Promise<void> Sets the display mode (mirror or extend) of the secondary screen. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ------------------- | ---- |--------------------| | primaryScreenId | number | Yes | ID of the primary screen. The value must be an integer.| | secondaryScreenId | number | Yes | ID of the secondary screen. The value must be an integer.| | secondaryScreenMode | [MultiScreenMode](#multiscreenmode13) | Yes | Display mode of the secondary screen.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed, non-system application uses system API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let primaryScreenId: number = 0; let secondaryScreenId: number = 12; let screenMode: screen.MultiScreenMode = screen.MultiScreenMode.SCREEN_MIRROR; screen.setMultiScreenMode(primaryScreenId, secondaryScreenId, screenMode).then(() => { console.info('Succeeded in setting multi screen mode. Data: '); }).catch((err: BusinessError) => { console.error(`Failed to set multi screen mode. Code:${err.code},message is ${err.message}`); }); ``` ## screen.setMultiScreenRelativePosition13+ setMultiScreenRelativePosition(mainScreenOptions: MultiScreenPositionOptions, secondaryScreenOptions: MultiScreenPositionOptions): Promise<void> Sets the positions of the primary and secondary screens in extend mode. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core **Parameters** | Name | Type | Mandatory| Description | | ------------ | ------------------- | ---- |--------------------| | mainScreenOptions | [MultiScreenPositionOptions](#multiscreenpositionoptions13) | Yes | Position of the primary screen.| | secondaryScreenOptions | [MultiScreenPositionOptions](#multiscreenpositionoptions13) | Yes | Position of the secondary screen.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value. | **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed, non-system application uses system API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let mainScreenOptions: screen.MultiScreenPositionOptions = { id : 0, startX : 0, startY : 0 }; let secondaryScreenOptions: screen.MultiScreenPositionOptions = { id : 12, startX : 1000, startY : 1000 }; screen.setMultiScreenRelativePosition(mainScreenOptions, secondaryScreenOptions).then(() => { console.info('Succeeded in setting multi screen relative position. Data: '); }).catch((err: BusinessError) => { console.error(`Failed to set multi screen relative position. Code:${err.code},message is ${err.message}`); }); ``` ## ExpandOption Defines the parameters for expanding a screen. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type| Readable| Writable| Description | | -------- | -------- | ---- | ---- | ------------------- | | screenId | number | Yes | Yes | Screen ID. The value must be an integer. | | startX | number | Yes | Yes | Start X coordinate of the screen. The value must be an integer.| | startY | number | Yes | Yes | Start Y coordinate of the screen. The value must be an integer.| ## MultiScreenMode13+ Enumerates the display modes of secondary screens. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Value | Description | | ------------------ | ---- | -------------------------------- | | SCREEN_MIRROR | 0 | Mirror mode.| | SCREEN_EXTAND | 1 | Extend mode.| ## MultiScreenPositionOptions13+ Describes the screen position information. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Readable| Writable | Description | | -------- | -------- | ---- | ---- | ------------------- | | id | number | Yes | Yes | Screen ID. The value must be a positive integer. Any non-positive integer values will be considered invalid and result in an error.| | startX | number | Yes | Yes | Start X coordinate of the screen. The upper left vertex of the bounding rectangle formed by the two screens is used as the origin, with the positive direction being rightwards. The value must be a positive integer. Any non-positive integer values will be considered invalid and result in an error.| | startY | number | Yes | Yes | Start Y coordinate of the screen. The upper left vertex of the bounding rectangle formed by the two screens is used as the origin, with the positive direction being downwards. The value must be a positive integer. Any non-positive integer values will be considered invalid and result in an error.| ## VirtualScreenOption Defines virtual screen parameters. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type| Readable| Writable| Description | | --------- | -------- | ---- | ---- |--------------------------| | name | string | Yes | Yes | Name of a virtual screen. | | width | number | Yes | Yes | Width of the virtual screen, in px. The value must be an integer.| | height | number | Yes | Yes | Height of the virtual screen, in px. The value must be an integer.| | density | number | Yes | Yes | Density of the virtual screen, in px. The value must be a floating point number.| | surfaceId | string | Yes | Yes | Surface ID of the virtual screen. | ## Screen Implements a **Screen** instance. Before calling any API in **Screen**, you must use **[getAllScreens()](#screengetallscreens)** or **[createVirtualScreen()](#screencreatevirtualscreen)** to obtain a **Screen** instance. ### Attributes **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Readable| Writable| Description | | ----------------- | ---------------------------------------------- | ---- | ---- |-------------------------------------------------------------| | id | number | Yes | No | Screen ID. The value must be an integer. | | parent | number | Yes | No | ID of the group to which a screen belongs. The value must be an integer. | | supportedModeInfo | Array<[ScreenModeInfo](#screenmodeinfo)> | Yes | No | Mode set supported by the screen. | | activeModeIndex | number | Yes | No | Index of the active screen mode. The current value and value range of this parameter vary according to the screen resolution, refresh rate, and device hardware. The value must be an integer.| | orientation | [Orientation](#orientation) | Yes | No | Screen orientation. | | sourceMode10+ | [ScreenSourceMode](#screensourcemode10) | Yes | No | Source mode of the screen. | ### setOrientation setOrientation(orientation: Orientation, callback: AsyncCallback<void>): void Sets the screen orientation. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Mandatory| Description | | ----------- | --------------------------- | ---- | ------------------------------------------------------------ | | orientation | [Orientation](#orientation) | Yes | Screen orientation. The value must be an enumerated value of **Orientation**. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the screen orientation is successfully set, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { let screenClass: screen.Screen = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); screenClass.setOrientation(screen.Orientation.VERTICAL, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to set the vertical orientation. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in setting the vertical orientation.'); }); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ### setOrientation setOrientation(orientation: Orientation): Promise<void> Sets the screen orientation. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Mandatory| Description | | ----------- | --------------------------- | ---- | ---------- | | orientation | [Orientation](#orientation) | Yes | Screen orientation. The value must be an enumerated value of **Orientation**.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { let screenClass: screen.Screen = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); let promise: Promise = screenClass.setOrientation(screen.Orientation.VERTICAL); promise.then(() => { console.info('Succeeded in setting the vertical orientation.'); }).catch((err: BusinessError) => { console.error(`Failed to set the vertical orientation. Code:${err.code},message is ${err.message}`); }); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ### setScreenActiveMode setScreenActiveMode(modeIndex: number, callback: AsyncCallback<void>): void Sets the active mode of the screen. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Mandatory| Description | | --------- | ------------------------- | ---- | ------------------------------------------------------------ | | modeIndex | number | Yes | Index of the mode to set. The current value and value range of this parameter vary according to the screen resolution, refresh rate, and device hardware. The value must be an integer.| | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the active mode is successfully set, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { let screenClass: screen.Screen = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); let modeIndex: number = 0; screenClass.setScreenActiveMode(modeIndex, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to set screen active mode 0. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in setting the vertical orientation.'); }); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ### setScreenActiveMode setScreenActiveMode(modeIndex: number): Promise<void> Sets the active mode of the screen. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Mandatory| Description | | --------- | ------ | ---- | ---------- | | modeIndex | number | Yes | Index of the mode to set. The current value and value range of this parameter vary according to the screen resolution, refresh rate, and device hardware. The value must be an integer.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { let screenClass: screen.Screen = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); let modeIndex: number = 0; let promise: Promise = screenClass.setScreenActiveMode(modeIndex); promise.then(() => { console.info('Succeeded in setting screen active mode 0.'); }).catch((err: BusinessError) => { console.error(`Failed to set screen active mode 0.Code:${err.code},message is ${err.message}`); }); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ### setDensityDpi setDensityDpi(densityDpi: number, callback: AsyncCallback<void>): void; Sets the pixel density of the screen. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Mandatory| Description | | ---------- | ------------------------- | ---- |------------------------------------------| | densityDpi | number | Yes | Pixel density. The value must be an integer in the range [80, 640]. | | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the pixel density is successfully set, **err** is **undefined**; otherwise, **err** is an error object.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let densityDpi: number = 320; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { let screenClass: screen.Screen = data; console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data)); screenClass.setDensityDpi(densityDpi, (err: BusinessError) => { const errCode: number = err.code; if (errCode) { console.error(`Failed to set the pixel density of the screen to 320. Code:${err.code},message is ${err.message}`); return; } console.info('Succeeded in setting the vertical orientation.'); }); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ### setDensityDpi setDensityDpi(densityDpi: number): Promise<void> Sets the pixel density of the screen. This API uses a promise to return the result. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type | Mandatory| Description | | ---------- | ------ | ---- |------------------------------------| | densityDpi | number | Yes | Pixel density. The value must be an integer in the range [80, 640].| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise that returns no value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Display Error Codes](errorcode-display.md). | ID| Error Message| | ------- | -------------------------------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.| | 1400003 | This display manager service works abnormally. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let densityDpi: number = 320; class VirtualScreenOption { name : string = ''; width : number = 0; height : number = 0; density : number = 0; surfaceId : string = ''; } let option : VirtualScreenOption = { name: 'screen01', width: 1080, height: 2340, density: 2, surfaceId: '' }; screen.createVirtualScreen(option).then((data: screen.Screen) => { let screenClass: screen.Screen = data; let promise: Promise = screenClass.setDensityDpi(densityDpi); promise.then(() => { console.info('Succeeded in setting the pixel density of the screen to 320.'); }).catch((err: BusinessError) => { console.error(`Failed to set the pixel density of the screen to 320. Code:${err.code},message is ${err.message}`); }); }).catch((err: BusinessError) => { console.error(`Failed to create the virtual screen. Code:${err.code},message is ${err.message}`); }); ``` ## Orientation Enumerates the screen orientations. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Value | Description | | ------------------ | ---- | -------------------------------- | | UNSPECIFIED | 0 | Unspecified. The screen orientation is determined by the system.| | VERTICAL | 1 | Vertical. | | HORIZONTAL | 2 | Horizontal. | | REVERSE_VERTICAL | 3 | Reverse vertical. | | REVERSE_HORIZONTAL | 4 | Reverse horizontal. | ## ScreenSourceMode10+ Enumerates the sources of the content displayed on the screen. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Value | Description | | ------------------ | ---- | -------------------------------- | | SCREEN_MAIN | 0 | Content from the primary screen (default).| | SCREEN_MIRROR | 1 | Content from a mirror screen. | | SCREEN_EXTEND | 2 | Content from an extend screen. | | SCREEN_ALONE | 3 | The source is unspecified. | ## ScreenModeInfo Defines the screen mode information. **System capability**: SystemCapability.WindowManager.WindowManager.Core | Name | Type| Readable| Writable| Description | | ----------- | -------- | ---- | ---- | -------------------------------------------------- | | id | number | Yes | Yes | Mode ID. The supported mode is determined by the device resolution and refresh rate. The value must be an integer.| | width | number | Yes | Yes | Width of the screen, in px. The value must be an integer. | | height | number | Yes | Yes | Height of the screen, in px. The value must be an integer. | | refreshRate | number | Yes | Yes | Refresh rate of the screen, in hz. The value must be an integer. |