# @ohos.screen (屏幕)(系统接口) 本模块提供管理屏幕的一些基础能力,包括获取屏幕对象,监听屏幕变化,创建和销毁虚拟屏幕等。 > **说明:** > > - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > > - 本模块接口为系统接口。 ## 导入模块 ```ts import { screen } from '@kit.ArkUI'; ``` ## screen.getAllScreens getAllScreens(callback: AsyncCallback<Array<Screen>>): void 获取所有的屏幕,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------------------------------------- | ---- | -------------------------------------- | | callback | AsyncCallback<Array<[Screen](#screen)>> | 是 | 回调函数。返回当前获取的屏幕对象集合。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 1400001 | Invalid display or screen. | **示例:** ```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)); if(data.length > 0 ){ screenClass = data[0]; } }); ``` ## screen.getAllScreens getAllScreens(): Promise<Array<Screen>> 获取所有的屏幕,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **返回值:** | 类型 | 说明 | | --------------------------------------------- | ----------------------------------------- | | Promise<Array<[Screen](#screen)>> | Promise对象。返回当前获取的屏幕对象集合。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 1400001 | Invalid display or screen. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let screenClass: screen.Screen | null = null; let promise: Promise> = screen.getAllScreens(); promise.then((data: Array) => { if(data.length > 0){ 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 开启屏幕状态变化的监听。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ---------------------- | ---- | ----------------------------------------------------------- | | eventType | string | 是 | 监听事件。
-eventType为"connect"表示屏幕连接事件。
-eventType为"disconnect"表示断开屏幕连接事件。
-eventType为"change"表示屏幕状态改变事件。 | | callback | Callback<number> | 是 | 回调函数。返回屏幕的id,该参数为整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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.| **示例:** ```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 关闭屏幕状态变化的监听。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ---------------------- | ---- | ------------------------------------------------------------ | | eventType | string | 是 | 监听事件。
-eventType为"connect"表示屏幕连接事件。
-eventType为"disconnect"表示断开屏幕连接事件。
-eventType为"change"表示屏幕状态改变事件。 | | callback | Callback<number> | 否 | 回调函数。返回屏幕的id,该参数为整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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.| **示例:** ```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.makeMirror makeMirror(mainScreen:number, mirrorScreen:Array<number>, callback: AsyncCallback<number>): void 将屏幕设置为镜像模式,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | --------------------------- | ---- |--------------------| | mainScreen | number | 是 | 主屏幕id,该参数仅支持整数输入。 | | mirrorScreen | Array<number> | 是 | 镜像屏幕id集合,其中id应为整数。 | | callback | AsyncCallback<number> | 是 | 回调函数。返回镜像屏幕的群组id,其中id为整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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> 将屏幕设置为镜像模式,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------- | ---- |--------------------| | mainScreen | number | 是 | 主屏幕id,该参数仅支持整数输入。 | | mirrorScreen | Array<number> | 是 | 镜像屏幕id集合。其中id应为整数。 | **返回值:** | 类型 | 说明 | | --------------------- |---------------------------------| | Promise<number> | Promise对象。返回镜像屏幕的群组id,其中id为整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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 停止屏幕的镜像模式,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | --------------------------- | --- |-----------------------------------------| | mirrorScreen | Array<number> | 是 | 镜像屏幕id集合,其中id应为整数。 mirrorScreen数组大小不应超过1000。 | | callback | AsyncCallback<void> | 是 | 回调函数。当停止屏幕镜像模式成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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> 停止屏幕的镜像模式,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------- | --- |--------------------| | mirrorScreen | Array<number> | 是 | 镜像屏幕id集合,其中id应为整数。mirrorScreen数组大小不应超过1000。 | **返回值:** | 类型 | 说明 | | --------------------- | ----------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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.makeUnique18+ makeUnique(uniqueScreen: Array<number>): Promise<Array<number>> 将屏幕设置为异源模式,使用Promise异步回调。 **系统能力:** SystemCapability.Window.SessionManager **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | ------------- | | uniqueScreen | Array<number> | 是 | 异源屏幕id集合。其中id应为大于0的整数,否则返回401错误码。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<Array<number>> | Promise对象。返回异源屏幕的displayId集合,其中id为大于0的整数。| **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. 3.Parameter verification failed.| | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | | 1400001 | Invalid display or screen. | | 1400003 | This display manager service works abnormally. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let uniqueScreenIds: Array = [1001, 1002, 1003]; screen.makeUnique(uniqueScreenIds).then((data: Array) => { console.info('Succeeded in making unique screens.'); }).catch((err: BusinessError) => { console.error(`Failed to make unique screens. Code:${err.code},message is ${err.message}`); }); ``` ## screen.createVirtualScreen createVirtualScreen(options:VirtualScreenOption, callback: AsyncCallback<Screen>): void 创建虚拟屏幕,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **需要权限**:ohos.permission.CAPTURE_SCREEN **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------------------- | ---- | ---------------------------------- | | options | [VirtualScreenOption](#virtualscreenoption) | 是 | 用于创建虚拟屏幕的参数。 | | callback | AsyncCallback<[Screen](#screen)> | 是 | 回调函数,返回创建的虚拟屏幕对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 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. | **示例:** ```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> 创建虚拟屏幕,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **需要权限**:ohos.permission.CAPTURE_SCREEN **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------------------------------------------- | ---- | ------------------------ | | options | [VirtualScreenOption](#virtualscreenoption) | 是 | 用于创建虚拟屏幕的参数。 | **返回值:** | 类型 | 说明 | | -------------------------------- | ------------------------------------- | | Promise<[Screen](#screen)> | Promise对象。返回创建的虚拟屏幕对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 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. | **示例:** ```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 销毁虚拟屏幕,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ------------------------------------------------------------ | | screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | | callback | AsyncCallback<void> | 是 | 回调函数。当销毁虚拟屏幕成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------------- | | 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. | **示例:** ```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> 销毁虚拟屏幕,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------ | ---- | ---------- | | screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------------- | | 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. | **示例:** ```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 设置虚拟屏幕的surface,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------- | ---- | ------------------------------------------------------------ | | screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | | surfaceId | string | 是 | 代表虚拟屏幕的surface标识符,surfaceId值可自行定义。 | | callback | AsyncCallback<void> | 是 | 回调函数。当设置虚拟屏幕surface成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 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. | **示例:** ```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> 设置虚拟屏幕的surface,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **需要权限**:ohos.permission.CAPTURE_SCREEN,仅系统应用可用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | ------------- | | screenId | number | 是 | 屏幕的id,该参数仅支持整数输入。 | | surfaceId | string | 是 | 代表虚拟屏幕的surface标识符,surfaceId值可自行定义。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 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. | **示例:** ```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.setScreenPrivacyMaskImage19+ setScreenPrivacyMaskImage(screenId:number, image?: image.PixelMap): Promise<void> 设置屏幕的隐私蒙版图片,使用Promise异步回调。 **系统能力:** SystemCapability.Window.SessionManager **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | ------------- | | screenId | number | 是 | 屏幕的id,该参数仅支持正整数输入。 | | image | [image.PixelMap](../apis-image-kit/arkts-apis-image-PixelMap.md) | 否 | 屏幕的隐私蒙版图片,不传入则使用默认隐私蒙版图片。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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.| | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | | 1400001 | Invalid display or screen. | | 1400003 | This display manager service works abnormally. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { image } from '@kit.ImageKit'; const color: ArrayBuffer = new ArrayBuffer(96); // 96为需要创建的像素buffer大小,取值为:height * width *4 let opts: image.InitializationOptions = { editable: true, pixelFormat: image.PixelMapFormat.RGBA_8888, size: { height: 4, width: 6 } } image.createPixelMap(color, opts).then((pixelMap: image.PixelMap) => { console.info('Succeeded in creating pixelmap.'); let screenId: number = 1; screen.setScreenPrivacyMaskImage(screenId, pixelMap).then(() => { console.info('Succeeded in setting the privacy mask image for the screen.'); }).catch((err: BusinessError) => { console.error(`Failed to set the privacy mask image for the screen. Code:${err.code},message is ${err.message}`); }); }).catch((error: BusinessError) => { console.error(`Failed to create pixelmap. code is ${error.code}, message is ${error.message}`); }) ``` ## screen.isScreenRotationLocked isScreenRotationLocked(): Promise<boolean> 查询当前自动转屏是否锁定,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **返回值:** | 类型 | 说明 | | ---------------------- | ------------------------------------- | | Promise<boolean> | Promise对象。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| **示例:** ```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 查询当前自动转屏是否锁定,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ---------------------------- | ---- | ------------------------------------------------------------ | | callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| **示例:** ```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> 设置自动转屏开关是否锁定,使用Promise异步回调,不适用于2in1设备。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | ------------- | | isLocked | boolean | 是 | 自动转屏开关是否锁定。true为锁定,false为未锁定。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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.| **示例:** ```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 设置自动转屏开关是否锁定,使用callback异步回调,不适用于2in1设备。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------- | ---- | ------------------------------------------------------------ | | isLocked | boolean | 是 | 自动转屏开关是否锁定。true为锁定,false为未锁定。 | | callback | AsyncCallback<void> | 是 | 回调函数。当设置自动转屏是否锁定成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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.| **示例:** ```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> 设置扩展屏幕的显示模式(镜像/扩展),使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------- | ---- |--------------------| | primaryScreenId | number | 是 | 主屏的id,该参数应为正整数。 | | secondaryScreenId | number | 是 | 扩展屏幕的id,该参数应为正整数。| | secondaryScreenMode | [MultiScreenMode](#multiscreenmode13) | 是 | 扩展屏幕的显示模式。| **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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> 仅在扩展模式下,设置主屏和扩展屏幕的位置信息,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------- | ---- |--------------------| | mainScreenOptions | [MultiScreenPositionOptions](#multiscreenpositionoptions13) | 是 | 主屏的位置信息。| | secondaryScreenOptions | [MultiScreenPositionOptions](#multiscreenpositionoptions13) | 是 | 扩展屏幕的位置信息。| **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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}`); }); ``` ## screen.makeMirrorWithRegion19+ makeMirrorWithRegion(mainScreen:number, mirrorScreen:Array<number>, mainScreenRegion:Rect): Promise<number> 将屏幕的某一矩形区域设置为镜像模式,使用Promise异步回调。调用该接口后,不建议再进行屏幕的旋转/折叠,否则可能导致镜像内容异常。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------- | ---- |--------------------| | mainScreen | number | 是 | 主屏幕id,该参数仅支持正整数输入。 | | mirrorScreen | Array<number> | 是 | 镜像屏幕id集合。其中id应为正整数。 | | mainScreenRegion | [Rect](#rect19) | 是 | 主屏创建镜像的矩形区域。 | **返回值:** | 类型 | 说明 | | --------------------- |---------------------------------| | Promise<number> | Promise对象。返回镜像屏幕的群组id,其中id为正整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 202 | Permission verification failed. A non-system application calls a system API.| | 1400001 | Invalid display or screen. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let mainScreenId: number = 0; let mirrorScreenIds: Array = [1, 2, 3]; let mainScreenRegion: screen.Rect = { left : 0, top : 0, width : 1920, height : 1080 }; screen.makeMirrorWithRegion(mainScreenId, mirrorScreenIds, mainScreenRegion).then((data: number) => { console.info(`Succeeded in setting screen mirroring. Data: ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`Failed to set screen area mirroring. Code:${err.code},message is ${err.message}`); }); ``` ## screen.makeExpand(deprecated) makeExpand(options:Array<ExpandOption>, callback: AsyncCallback<number>): void 将屏幕设置为扩展模式,使用callback异步回调。 > **说明:** > > 从API version 9开始支持,从API version 20开始废弃。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------------------ | ---- |----------------------------| | options | Array<[ExpandOption](#expandoption)> | 是 | 设置扩展屏幕的参数集合。 | | callback | AsyncCallback<number> | 是 | 回调函数。返回扩展屏幕的群组id,其中id为整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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(deprecated) makeExpand(options:Array<ExpandOption>): Promise<number> 将屏幕设置为扩展模式,使用Promise异步回调。 > **说明:** > > 从API version 9开始支持,从API version 20开始废弃。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------------------------------------------ | ---- | ------------------------ | | options | Array<[ExpandOption](#expandoption)> | 是 | 设置扩展屏幕的参数集合。 | **返回值:** | 类型 | 说明 | | --------------------- |---------------------------------| | Promise<number> | Promise对象。返回扩展屏幕的群组id,其中id为整数。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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.stopExpand(deprecated) stopExpand(expandScreen:Array<number>, callback: AsyncCallback<void>): void 停止屏幕的扩展模式,使用callback异步回调。 > **说明:** > > 从API version 10开始支持,从API version 20开始废弃。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | --------------------------- | --- |-----------------------------------------| | expandScreen | Array<number> | 是 | 扩展屏幕id集合,其中id为整数。 expandScreen数组大小不应超过1000。 | | callback | AsyncCallback<void> | 是 | 回调函数。当停止屏幕扩展模式成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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.stopExpand(deprecated) stopExpand(expandScreen:Array<number>): Promise<void> 停止屏幕的扩展模式,使用Promise异步回调。 > **说明:** > > 从API version 10开始支持,从API version 20开始废弃。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------- | --- |--------------------| | expandScreen | Array<number> | 是 | 扩展屏幕id集合,其中id为整数。expandScreen数组大小不应超过1000。 | **返回值:** | 类型 | 说明 | | --------------------- | ----------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | ----------------------- | | 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. | **示例:** ```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}`); }); ``` ## ExpandOption 扩展屏幕的参数。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | -------- | -------- | ---- | ---- | ------------------- | | screenId | number | 否 | 否 | 屏幕的id,该参数应为整数。 | | startX | number | 否 | 否 | 屏幕的起始X轴坐标,该参数应为整数。 | | startY | number | 否 | 否 | 屏幕的起始Y轴坐标,该参数应为整数。 | ## MultiScreenMode13+ 屏幕模式枚举。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 值 | 说明 | | ------------------ | ---- | -------------------------------- | | SCREEN_MIRROR | 0 | 表示屏幕为镜像模式。 | | SCREEN_EXTEND | 1 | 表示屏幕为扩展模式。 | ## MultiScreenPositionOptions13+ 屏幕位置信息。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | -------- | -------- | ---- | ---- | ------------------- | | id | number | 否 | 否 | 屏幕的id,该参数应为正整数,非正整数会作为非法参数报错。| | startX | number | 否 | 否 | 屏幕的起始X轴坐标。以两块屏幕外接矩形的左上顶点为原点,向右为正方向。该参数应为正整数,非正整数会作为非法参数报错。 | | startY | number | 否 | 否 | 屏幕的起始Y轴坐标。以两块屏幕外接矩形的左上顶点为原点,向下为正方向。该参数应为正整数,非正整数会作为非法参数报错。 | ## VirtualScreenOption 创建虚拟屏幕的参数。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | --------- | -------- | ---- | ---- |--------------------------| | name | string | 否 | 否 | 指定虚拟屏幕的名称。 | | width | number | 否 | 否 | 指定虚拟屏幕的宽度,单位为px,该参数应为整数。 | | height | number | 否 | 否 | 指定虚拟屏幕的高度,单位为px,该参数应为整数。 | | density | number | 否 | 否 | 指定虚拟屏幕的密度,单位为px,该参数为浮点数。 | | surfaceId | string | 否 | 否 | 指定虚拟屏幕的surfaceId。 | ## Screen 屏幕实例。 下列API示例中都需先使用[getAllScreens()](#screengetallscreens)、[createVirtualScreen()](#screencreatevirtualscreen)中的任一方法获取到Screen实例,再通过此实例调用对应方法。 ### 属性 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | ----------------- | ---------------------------------------------- | ---- | ---- |-------------------------------------------------------------| | id | number | 是 | 否 | 屏幕的id,该参数为整数。 | | parent | number | 是 | 否 | 屏幕所属群组的id,该参数为整数。 | | supportedModeInfo | Array<[ScreenModeInfo](#screenmodeinfo)> | 是 | 否 | 屏幕支持的模式集合。 | | activeModeIndex | number | 是 | 否 | 当前屏幕所处模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。该参数为整数。 | | orientation | [Orientation](#orientation) | 是 | 否 | 屏幕方向。 | | sourceMode10+ | [ScreenSourceMode](#screensourcemode10) | 是 | 否 | 屏幕来源模式。 | | serialNumber15+ | string | 是 | 是 | 扩展屏幕的序列号,当前仅2in1设备支持此属性。其他设备暂不支持使用此属性。 | ### setOrientation setOrientation(orientation: Orientation, callback: AsyncCallback<void>): void 设置屏幕方向,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | ---- | ------------------------------------------------------------ | | orientation | [Orientation](#orientation) | 是 | 屏幕方向。orientation值必须来自Orientation枚举方向。 | | callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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> 设置屏幕方向,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | --------------------------- | ---- | ---------- | | orientation | [Orientation](#orientation) | 是 | 屏幕方向。orientation值必须来自Orientation枚举方向。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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 设置屏幕当前显示模式,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------- | ---- | ------------------------------------------------------------ | | modeIndex | number | 是 | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。索引为screen中[ScreenModeInfo](#screenmodeinfo)属性的模式id。 | | callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕当前显示模式成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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> 设置屏幕当前显示模式,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | ---------- | | modeIndex | number | 是 | 模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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; 设置屏幕的像素密度,使用callback异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------- | ---- |------------------------------------------| | densityDpi | number | 是 | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 | | callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕的像素密度成功,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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> 设置屏幕的像素密度,使用Promise异步回调。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------ | ---- |------------------------------------| | densityDpi | number | 是 | 像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[屏幕错误码](errorcode-display.md)。 | 错误码ID | 错误信息 | | ------- | -------------------------------------------- | | 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. | **示例:** ```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 屏幕方向枚举。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 值 | 说明 | | ------------------ | ---- | -------------------------------- | | UNSPECIFIED | 0 | 表示未指定屏幕方向,由系统指定。 | | VERTICAL | 1 | 表示指定屏幕为垂直方向。 | | HORIZONTAL | 2 | 表示指定屏幕为水平方向。 | | REVERSE_VERTICAL | 3 | 表示指定屏幕为反向垂直方向。 | | REVERSE_HORIZONTAL | 4 | 表示指定屏幕为反向水平方向。 | ## ScreenSourceMode10+ 屏幕显示内容来源模式枚举。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 值 | 说明 | | ------------------ | ---- | -------------------------------- | | SCREEN_MAIN | 0 | 表示屏幕为默认主屏。 | | SCREEN_MIRROR | 1 | 表示屏幕内容来自镜像。 | | SCREEN_EXTEND | 2 | 表示屏幕内容来自扩展。 | | SCREEN_ALONE | 3 | 表示屏幕为未指定来源。 | ## ScreenModeInfo 屏幕显示模式信息。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | ----------- | -------- | ---- | ---- | -------------------------------------------------- | | id | number | 否 | 否 | 模式id,所支持的模式由具体设备分辨率和刷新率决定,该参数为整数。 | | width | number | 否 | 否 | 屏幕的宽度,单位为px,该参数为整数。 | | height | number | 否 | 否 | 屏幕的高度,单位为px,该参数为整数。 | | refreshRate | number | 否 | 否 | 屏幕的刷新率,单位为hz,该参数为整数。 | ## Rect19+ 矩形信息。 **系统能力:** SystemCapability.WindowManager.WindowManager.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | ----------- | -------- | ---- | ---- | -------------------------------------------------- | | left | number | 否 | 否 | 矩形左上角顶点的X轴坐标,单位为px,该参数应为整数。 | | top | number | 否 | 否 | 矩形左上角顶点的Y轴坐标,单位为px,该参数应为整数。 | | width | number | 否 | 否 | 矩形的宽度,单位为px,该参数应为整数。 | | height | number | 否 | 否 | 矩形的高度,单位为px,该参数应为整数。 |