鸿蒙5.0&next开辟【设备输入(ArkTS)】相机服务

tsx81428  金牌会员 | 2025-2-21 13:07:28 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 945|帖子 945|积分 2837

设备输入(ArkTS)

相机应用可通过调用和控制相机设备,完成预览、照相和录像等底子操作。
开辟步调


  • 导入camera接口,接口中提供了相机相干的属性和方法,导入方法如下。
    1. import { camera } from '@kit.CameraKit';
    2. import { BusinessError } from '@kit.BasicServicesKit';
    3. ts
    复制代码
  • 通过[cameraManager]类中的[createCameraInput]方法创建相机输入流。
    1. async function createInput(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager): Promise<camera.CameraInput | undefined> {
    2.   // 创建相机输入流
    3.   let cameraInput: camera.CameraInput | undefined = undefined;
    4.   try {
    5.     cameraInput = cameraManager.createCameraInput(cameraDevice);
    6.   } catch (error) {
    7.     let err = error as BusinessError;
    8.     console.error('Failed to createCameraInput errorCode = ' + err.code);
    9.   }
    10.   if (cameraInput === undefined) {
    11.     return undefined;
    12.   }
    13.   // 监听cameraInput错误信息
    14.   cameraInput.on('error', cameraDevice, (error: BusinessError) => {
    15.     console.error(`Camera input error code: ${error.code}`);
    16.   });
    17.   // 打开相机
    18.   await cameraInput.open();
    19.   return cameraInput;
    20. }
    21. ts
    复制代码
  • 通过[getSupportedSceneModes]方法,获取当前相机设备支持的模式列表,列表中存储了相机设备支持的所有模式[SceneMode]
    1. function getSupportedSceneMode(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager): Array<camera.SceneMode> {
    2.   // 获取相机设备支持的模式列表
    3.   let sceneModeArray: Array<camera.SceneMode> = cameraManager.getSupportedSceneModes(cameraDevice);
    4.   if (sceneModeArray != undefined && sceneModeArray.length > 0) {
    5.     for (let index = 0; index < sceneModeArray.length; index++) {
    6.       console.info('Camera SceneMode : ' + sceneModeArray[index]);  
    7.   }
    8.     return sceneModeArray;
    9.   } else {
    10.       console.error("cameraManager.getSupportedSceneModes error");
    11.       return [];
    12.   }
    13. }
    14. ts
    复制代码
  • 通过[getSupportedOutputCapability]方法,获取当前相机设备支持的所有输出流,如预览流、照相流、录像流等。输出流在[CameraOutputCapability]中的各个profile字段中,根据相机设备指定模式[SceneMode]的不同,须要添加不同类型的输出流。
    1. async function getSupportedOutputCapability(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager, sceneMode: camera.SceneMode): Promise<camera.CameraOutputCapability | undefined> {
    2.    // 获取相机设备支持的输出流能力
    3.    let cameraOutputCapability: camera.CameraOutputCapability = cameraManager.getSupportedOutputCapability(cameraDevice, sceneMode);
    4.    if (!cameraOutputCapability) {
    5.      console.error("cameraManager.getSupportedOutputCapability error");
    6.      return undefined;
    7.    }
    8.    console.info("outputCapability: " + JSON.stringify(cameraOutputCapability));
    9.    // 以NORMAL_PHOTO模式为例,需要添加预览流、拍照流
    10.    // previewProfiles属性为获取当前设备支持的预览输出流
    11.    let previewProfilesArray: Array<camera.Profile> = cameraOutputCapability.previewProfiles;
    12.    if (!previewProfilesArray) {
    13.      console.error("createOutput previewProfilesArray == null || undefined");
    14.    }
    15.    //photoProfiles属性为获取当前设备支持的拍照输出流
    16.    let photoProfilesArray: Array<camera.Profile> = cameraOutputCapability.photoProfiles;
    17.    if (!photoProfilesArray) {
    18.      console.error("createOutput photoProfilesArray == null || undefined");
    19.    }
    20.    return cameraOutputCapability;
    21. }
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表