HarmonyOS实战开发:@ohos.screen (屏幕)

本模块提供管理屏幕的一些基础能力,包括获取屏幕对象,监听屏幕变化,创建和销毁虚拟屏幕等。

说明:

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

本模块接口为系统接口。

导入模块

import screen from '@ohos.screen';

screen.getAllScreens

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

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

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

参数:

参数名类型必填说明
回调AsyncCallback<Array<Screen>>回调函数。返回当前获取的屏幕对象集合。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let screenClass: screen.Screen | null = null;
screen.getAllScreens((err: BusinessError, data: Array<screen.Screen>) => {
  const errCode: number = err.code;
  if (errCode) {
    console.error('Failed to get all screens. Cause:  ' + JSON.stringify(err));
    return;
  }
  console.info('Succeeded in getting all screens. Data:' + JSON.stringify(data));
  screenClass = data[0];
});

screen.getAllScreens

getAllScreens(): Promise<Array<Screen>>

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

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

返回值:

类型说明
Promise<Array<Screen>>Promise对象。返回当前获取的屏幕对象集合。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let screenClass: screen.Screen | null = null;
let promise: Promise<Array<screen.Screen>> = screen.getAllScreens();
promise.then((data: Array<screen.Screen>) => {
  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字符串监听事件。
-eventType为"connect"表示屏幕连接事件。
-eventType为"disconnect"表示断开屏幕连接事件。
-eventType为"change"表示屏幕状态改变事件。
回调Callback<number>回调函数。返回屏幕的id,该参数应为整数。

示例:

try {
  let callback: Callback<number> = (data: number) => {
    console.info('Succeeded in registering the callback for screen changes. Data: ' + JSON.stringify(data))
  };
  screen.on('connect', callback);
} catch (exception) {
  console.error('Failed to register the callback for screen changes. Code: ' + JSON.stringify(exception));
};

screen.off('connect' | 'disconnect' | 'change')

off(eventType: 'connect' | 'disconnect' | 'change', callback?: Callback<number>): void

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

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

参数:

参数名类型必填说明
eventType字符串监听事件。
-eventType为"connect"表示屏幕连接事件。
-eventType为"disconnect"表示断开屏幕连接事件。
-eventType为"change"表示屏幕状态改变事件。
回调Callback<number>回调函数。返回屏幕的id,该参数应为整数。

示例:

try {
  let callback: Callback<number> = (data: number) => {
    console.info('Succeeded in unregistering the callback for screen changes. Data: ' + JSON.stringify(data))
  };
  screen.off('connect', callback);
} catch (exception) {
  console.error('Failed to register the callback for screen changes. Code: ' + JSON.stringify(exception));
};

screen.makeExpand

makeExpand(options:Array<ExpandOption>, callback: AsyncCallback<number>): void

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

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

参数:

参数名类型必填说明
选项Array<ExpandOption>设置扩展屏幕的参数集合。
回调AsyncCallback<number>回调函数。返回扩展屏幕的群组id,其中id应为整数。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

try {
  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:' + JSON.stringify(err));
      return;
    }
    groupId = data;
    console.info('Succeeded in expanding the screen. Data: ' + JSON.stringify(data));
  });
} catch (exception) {
  console.error('Failed to expand the screen. Code: ' + JSON.stringify(exception));
};

screen.makeExpand

makeExpand(options:Array<ExpandOption>): Promise<number>

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

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

参数:

参数名类型必填说明
选项Array<ExpandOption>设置扩展屏幕的参数集合。

返回值:

类型说明
Promise<number>Promise对象。返回扩展屏幕的群组id,其中id应为整数。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

try {
  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:' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to expand the screen. Code: ' + JSON.stringify(exception));
};

screen.stopExpand10+

stopExpand(expandScreen:Array<number>, callback: AsyncCallback<void>): void

停止屏幕的扩展模式,使用callback异步回调。

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

参数:

参数名类型必填说明
expandScreenArray<number>扩展屏幕id集合,其中id应为整数。
回调AsyncCallback<void>回调函数。当停止屏幕扩展模式成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

try {
  let expandScreenIds: Array<number> = [1, 2, 3];
  screen.stopExpand(expandScreenIds, (err: BusinessError) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to stop expand screens. Code:' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in stopping expand screens.');
  });
} catch (exception) {
  console.error('Failed to stop expand screens. Code: ' + JSON.stringify(exception));
};

screen.stopExpand10+

stopExpand(expandScreen:Array<number>): Promise<void>

停止屏幕的扩展模式,使用Promise异步回调。

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

参数:

参数名类型必填说明
expandScreenArray<number>扩展屏幕id集合,其中id应为整数。

返回值:

类型说明
承诺<无效>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

try {
  let expandScreenIds: Array<number> = [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:' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to stop expand screens. Code:' + JSON.stringify(exception));
};

screen.makeMirror

makeMirror(mainScreen:number, mirrorScreen:Array<number>, callback: AsyncCallback<number>): void

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

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

参数:

参数名类型必填说明
mainScreennumber主屏幕id,该参数仅支持整数输入。
mirrorScreenArray<number>镜像屏幕id集合,其中id应为整数。
callbackAsyncCallback<number>回调函数。返回镜像屏幕的群组id,其中id应为整数。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let mainScreenId: number = 0;
let mirrorScreenIds: Array<number> = [1, 2, 3];
try {
  screen.makeMirror(mainScreenId, mirrorScreenIds, (err: BusinessError, data: number) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in setting screen mirroring. Data: ' + JSON.stringify(data));
  });
} catch (exception) {
  console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(exception));
};

screen.makeMirror

makeMirror(mainScreen:number, mirrorScreen:Array<number>): Promise<number>

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

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

参数:

参数名类型必填说明
mainScreen主屏幕id,该参数仅支持整数输入。
mirrorScreenArray<number>镜像屏幕id集合。其中id应为整数。

返回值:

类型说明
Promise<number>Promise对象。返回镜像屏幕的群组id,其中id应为整数。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let mainScreenId: number = 0;
let mirrorScreenIds: Array<number> = [1, 2, 3];
try {
  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: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to set screen mirroring. Code: ' + JSON.stringify(exception));
};

screen.stopMirror10+

stopMirror(mirrorScreen:Array<number>, callback: AsyncCallback<void>): void

停止屏幕的镜像模式,使用callback异步回调。

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

参数:

参数名类型必填说明
mirrorScreenArray<number>镜像屏幕id集合,其中id应为整数。
回调AsyncCallback<void>回调函数。当停止屏幕镜像模式成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

try {
  let mirrorScreenIds: Array<number> = [1, 2, 3];
  screen.stopMirror(mirrorScreenIds, (err: BusinessError) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to stop mirror screens. Code:' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in stopping mirror screens.');
  });
} catch (exception) {
  console.error('Failed to stop mirror screens. Code: ' + JSON.stringify(exception));
};

screen.stopMirror10+

stopMirror(mirrorScreen:Array<number>): Promise<void>

停止屏幕的镜像模式,使用Promise异步回调。

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

参数:

参数名类型必填说明
mirrorScreenArray<number>镜像屏幕id集合,其中id应为整数。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

try {
  let mirrorScreenIds: Array<number> = [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:' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to stop mirror screens. Code:' + JSON.stringify(exception));
};

screen.createVirtualScreen

createVirtualScreen(options:VirtualScreenOption, callback: AsyncCallback<Screen>): void

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

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

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

参数:

参数名类型必填说明
选项VirtualScreenOption用于创建虚拟屏幕的参数。
回调AsyncCallback<Screen>回调函数,返回创建的虚拟屏幕对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let screenClass: screen.Screen | null = null;
try {
  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: ' + JSON.stringify(err));
      return;
    }
    screenClass = data;
    console.info('Succeeded in creating the virtual screen. Data: ' + JSON.stringify(data));
  });
} catch (exception) {
  console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(exception));
};

screen.createVirtualScreen

createVirtualScreen(options:VirtualScreenOption): Promise<Screen>

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

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

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

参数:

参数名类型必填说明
选项VirtualScreenOption用于创建虚拟屏幕的参数。

返回值:

类型说明
Promise<Screen>Promise对象。返回创建的虚拟屏幕对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let screenClass: screen.Screen | null = null;
try {
  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: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(exception));
};

screen.destroyVirtualScreen

destroyVirtualScreen(screenId:number, callback: AsyncCallback<void>): void

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

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

参数:

参数名类型必填说明
screenId屏幕的id,该参数仅支持整数输入。
回调AsyncCallback<void>回调函数。当销毁虚拟屏幕成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400002Unauthorized operation.

示例:

import { BusinessError } from '@ohos.base';

let screenId: number = 1;
try {
  screen.destroyVirtualScreen(screenId, (err: BusinessError) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in destroying the virtual screen.');
  });
} catch (exception) {
  console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(exception));
};

screen.destroyVirtualScreen

destroyVirtualScreen(screenId:number): Promise<void>

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

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

参数:

参数名类型必填说明
screenId屏幕的id,该参数仅支持整数输入。

返回值:

类型说明
承诺<无效>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400002Unauthorized operation.

示例:

import { BusinessError } from '@ohos.base';

let screenId: number = 1;
try {
  screen.destroyVirtualScreen(screenId).then(() => {
    console.info('Succeeded in destroying the virtual screen.');
  }).catch((err: BusinessError) => {
    console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to destroy the virtual screen. Code: ' + JSON.stringify(exception));
};

screen.setVirtualScreenSurface

setVirtualScreenSurface(screenId:number, surfaceId: string, callback: AsyncCallback<void>): void

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

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

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

参数:

参数名类型必填说明
screenId屏幕的id,该参数仅支持整数输入。
surfaceId字符串surface的id。
回调AsyncCallback<void>回调函数。当设置虚拟屏幕surface成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let screenId: number = 1;
let surfaceId: string = '2048';
try {
  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: ' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in setting the surface for the virtual screen.');
  });
} catch (exception) {
  console.error('Failed to set the surface for the virtual screen. Code: ' + JSON.stringify(exception));
};

screen.setVirtualScreenSurface

setVirtualScreenSurface(screenId:number, surfaceId: string): Promise<void>

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

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

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

参数:

参数名类型必填说明
screenId屏幕的id,该参数仅支持整数输入。
surfaceId字符串surface的id。

返回值:

类型说明
承诺<无效>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400001Invalid display or screen.

示例:

import { BusinessError } from '@ohos.base';

let screenId: number = 1;
let surfaceId: string = '2048';
try {
  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: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to set the surface for the virtual screen. Code: ' + JSON.stringify(exception));
};

screen.isScreenRotationLocked

isScreenRotationLocked(): Promise<boolean>

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

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

返回值:

类型说明
Promise<boolean>Promise对象。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。

示例:

import { BusinessError } from '@ohos.base';

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. Cause:' + JSON.stringify(err));
});

screen.isScreenRotationLocked

isScreenRotationLocked(callback: AsyncCallback<boolean>): void

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

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

参数:

参数名类型必填说明
callbackAsyncCallback<boolean>回调函数。返回true表示当前自动转屏处于锁定状态;返回false表示当前自动转屏不处于锁定状态。

示例:

import { BusinessError } from '@ohos.base';

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

screen.setScreenRotationLocked

setScreenRotationLocked(isLocked: boolean): Promise<void>

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

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

参数:

参数名类型必填说明
isLocked布尔自动转屏开关是否锁定。true为锁定,false为未锁定.

返回值:

类型说明
承诺<无效>无返回结果的Promise对象。

示例:

import { BusinessError } from '@ohos.base';

let isLocked: boolean = false;
try {
  screen.setScreenRotationLocked(isLocked).then(() => {
    console.info('Succeeded in unlocking auto rotate');
  }).catch((err: BusinessError) => {
    console.error('Failed to unlock auto rotate. Code: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to unlock auto rotate. Code: ' + JSON.stringify(exception));
};

screen.setScreenRotationLocked

setScreenRotationLocked(isLocked: boolean, callback: AsyncCallback<void>): void

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

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

参数:

参数名类型必填说明
isLocked布尔自动转屏开关是否锁定。true为锁定,false为未锁定.
回调AsyncCallback<void>回调函数。当设置自动转屏是否锁定成功,err为undefined,否则为错误对象。

示例:

import { BusinessError } from '@ohos.base';

let isLocked: boolean = false;
try {
  screen.setScreenRotationLocked(isLocked, (err: BusinessError) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to unlock auto rotate. Cause:' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in unlocking auto rotate.');
  });
} catch (exception) {
  console.error('Failed to unlock auto rotate. Code: ' + JSON.stringify(exception));
};

ExpandOption

扩展屏幕的参数。

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

名称类型可读可写说明
screenId屏幕的id,该参数应为整数。
startX屏幕的起始X轴坐标,该参数应为整数。
startY屏幕的起始Y轴坐标,该参数应为整数。

VirtualScreenOption

创建虚拟屏幕的参数。

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

名称类型可读可写说明
名字字符串指定虚拟屏幕的名称。
宽度指定虚拟屏幕的宽度,单位为像素,该参数应为整数。
height指定虚拟屏幕的高度,单位为像素,该参数应为整数。
density指定虚拟屏幕的密度,该参数为浮点数。
surfaceId字符串指定虚拟屏幕的surfaceId。

Screen

屏幕实例。

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

属性

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

名称类型可读可写说明
同上屏幕的id,该参数应为整数。
parent屏幕所属群组的id,该参数应为整数。
supportedModeInfoArray<ScreenModeInfo>屏幕支持的模式集合。
activeModeIndex当前屏幕所处模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化。该参数应为整数。
orientationOrientation屏幕方向。
sourceMode10+ScreenSourceMode屏幕来源模式。

setOrientation

setOrientation(orientation: Orientation, callback: AsyncCallback<void>): void

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

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

参数名类型必填说明
orientationOrientation屏幕方向。
回调AsyncCallback<void>回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400003This display manager service works abnormally.

示例:

import { BusinessError } from '@ohos.base';

  try {
    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: ' + JSON.stringify(err));
          return;
        }
        console.info('Succeeded in setting the vertical orientation.');
      });
    }).catch((err: BusinessError) => {
      console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
    });
  } catch (exception) {
    console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
  };

setOrientation

setOrientation(orientation: Orientation): Promise<void>

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

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

参数名类型必填说明
orientationOrientation屏幕方向。

返回值:

类型说明
承诺<无效>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400003This display manager service works abnormally.

示例:

import { BusinessError } from '@ohos.base';

  try {
    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<void> = 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. Cause: ' + JSON.stringify(err));
      });
    }).catch((err: BusinessError) => {
      console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
    });
  } catch (exception) {
    console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
  };

setScreenActiveMode

setScreenActiveMode(modeIndex: number, callback: AsyncCallback<void>): void

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

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

参数名类型必填说明
modeIndex模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。
回调AsyncCallback<void>回调函数。当设置屏幕当前显示模式成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400003This display manager service works abnormally.

示例:

import { BusinessError } from '@ohos.base';

try {
  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: ' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in setting the vertical orientation.');
    });
  }).catch((err: BusinessError) => {
    console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
};

setScreenActiveMode

setScreenActiveMode(modeIndex: number): Promise<void>

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

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

参数名类型必填说明
modeIndexnumber模式索引。模式索引的当前值和值的范围,会根据屏幕当前分辨率、刷新率和设备硬件差异产生变化,该参数仅支持整数输入。

返回值:

类型说明
Promise<void>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400003This display manager service works abnormally.

示例:

import { BusinessError } from '@ohos.base';

try {
  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<void> = 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: ' + JSON.stringify(err));
    });
  }).catch((err: BusinessError) => {
    console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
};

setDensityDpi

setDensityDpi(densityDpi: number, callback: AsyncCallback<void>): void;

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

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

参数名类型必填说明
densityDpi像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。
回调AsyncCallback<void>回调函数。当设置屏幕的像素密度成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400003This display manager service works abnormally.

示例:

import { BusinessError } from '@ohos.base';

let densityDpi: number = 320;
try {
  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: ' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in setting the vertical orientation.');
    });
  }).catch((err: BusinessError) => {
    console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
};

setDensityDpi

setDensityDpi(densityDpi: number): Promise<void>

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

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

参数名类型必填说明
densityDpi像素密度。支持的输入范围为[80, 640],该参数仅支持整数输入。

返回值:

类型说明
承诺<无效>无返回结果的Promise对象。

错误码:

以下错误码的详细介绍请参见屏幕错误码

错误码ID错误信息
1400003This display manager service works abnormally.

示例:

import { BusinessError } from '@ohos.base';

let densityDpi: number = 320;
try {
  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<void> = 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: ' + JSON.stringify(err));
    });
  }).catch((err: BusinessError) => {
    console.error('Failed to create the virtual screen. Code: ' + JSON.stringify(err));
  });
} catch (exception) {
  console.error('Failed to set the vertical orientation. Code: ' + JSON.stringify(exception));
};

Orientation

屏幕方向枚举。

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

名称说明
UNSPECIFIED0表示未指定屏幕方向,由系统指定。
VERTICAL1表示指定屏幕为垂直方向。
HORIZONTAL2表示指定屏幕为水平方向。
REVERSE_VERTICAL3表示指定屏幕为反向垂直方向。
REVERSE_HORIZONTAL4表示指定屏幕为反向水平方向。

ScreenSourceMode10+

屏幕显示内容来源模式枚举。

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

名称说明
SCREEN_MAIN0表示屏幕为默认主屏。
SCREEN_MIRROR1表示屏幕内容来自镜像。
SCREEN_EXTEND2表示屏幕内容来自扩展。
SCREEN_ALONE3表示屏幕为未指定来源。

ScreenModeInfo

屏幕显示模式信息。

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

名称类型可读可写说明
同上模式id,所支持的模式由具体设备分辨率和刷新率决定,该参数应为整数。
宽度屏幕的宽度,单位为像素,该参数应为整数。
height屏幕的高度,单位为像素,该参数应为整数。
refreshRate屏幕的刷新率,该参数应为整数,该参数应为整数。

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值