HarmonyOS NEXT鸿蒙体系相机Camera相干API使用

[复制链接]
发表于 2025-12-20 03:44:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
HarmonyOS下Camera相机相干API使用

预备工作

1. 导入camera接口

  1. import {
  2.    
  3.     camera } from '@kit.CameraKit';
  4. import {
  5.    
  6.     BusinessError } from '@kit.BasicServicesKit';
  7. import {
  8.    
  9.     common } from '@kit.AbilityKit';
复制代码
2.获取cameraManager对象

  1. getCameraManager(): camera.CameraManager {
  2.    
  3.    
  4.     let cameraManager: camera.CameraManager = camera.getCameraManager(getContext(this));
  5.     console.error("01 cameraManager."+cameraManager);
  6.     return cameraManager;
  7.   }
复制代码
3.通过cameraManager类中的getSupportedCameras方法

  1. getCameraDevices(cameraManager: camera.CameraManager): Array<camera.CameraDevice> {
  2.    
  3.    
  4.     let cameraArray: Array<camera.CameraDevice> = cameraManager.getSupportedCameras();
  5.     this.showContent = ''
  6.     if (cameraArray != undefined && cameraArray.length > 0) {
  7.    
  8.    
  9.       this.showContent = '支持的相机设备数量:' + cameraArray.length
  10.       for (let index = 0; index < cameraArray.length; index++) {
  11.    
  12.    
  13.         console.info('cameraId : ' + cameraArray[index].cameraId); // 获取相机ID
  14.         console.info('cameraPosition : ' + cameraArray[index].cameraPosition); // 获取相机位置
  15.         console.info('cameraType : ' + cameraArray[index].cameraType); // 获取相机类型
  16.         console.info('connectionType : ' + cameraArray[index].connectionType); // 获取相机连接类型
  17.         this.showContent = 'cameraId:' + cameraArray[index].cameraId + '|cameraType:' + cameraArray[index].cameraType + '|connectionType:' + cameraArray[index].connectionType
  18.       }
  19.       return cameraArray;
  20.     } else {
  21.    
  22.    
  23.       console.error("cameraManager.getSupportedCameras error");
  24.       this.errorContent = ' cameraManager.getSupportedCameras error'
  25.       return [];
  26.     }
  27.   }
复制代码
4.创建相机输入流

  1. createInput(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager): Promise<camera.CameraInput | undefined> {
  2.    
  3.    
  4.   // 创建相机输入流
  5.   let cameraInput: camera.CameraInput | undefined = undefined;
  6.   try {
  7.    
  8.    
  9.     cameraInput = cameraManager.createCameraInput(cameraDevice);
  10.   } catch (error) {
  11.    
  12.    
  13.     let err = error as BusinessError;
  14.     console.error('Failed to createCameraInput errorCode = ' + err.code);
  15.   }
  16.   if (cameraInput === undefined) {
  17.    
  18.    
  19.     return undefined;
  20.   }
  21.   // 监听cameraInput错误信息
  22.   cameraInput.on('error', cameraDevice, (error: BusinessError) => {
  23.    
  24.    
  25.     console.error(`Camera input error code: ${
  26.      
  27.      error.code}`);
  28.   });
  29.   // 打开相机
  30.   await cameraInput.open();
  31.   return cameraInput;
  32. }
复制代码
5.获取当前相机装备支持的全部输出流

  1. async getSupportedOutputCapability(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager): Promise<camera.CameraOutputCapability | undefined> {
  2.    
  3.    
  4.     // 创建相机输入流
  5.     let cameraInput: camera.CameraInput | undefined = undefined;
  6.     try {
  7.    
  8.    
  9.       cameraInput = cameraManager.createCameraInput(cameraDevice);
  10.     } catch (error) {
  11.    
  12.    
  13.       let err = error as BusinessError;
  14.       console.error('Failed to createCameraInput errorCode = ' + err.code);
  15.     }
  16.     if (cameraInput === undefined) {
  17.    
  18.    
  19.       return undefined;
  20.     }
  21.     // 监听cameraInput错误信息
  22.     cameraInput
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表