HarmonyOS NEXT鸿蒙系统相机Camera相关API使用

HarmonyOS下Camera相机相关API使用

准备工作

1. 导入camera接口

import {
    camera } from '@kit.CameraKit';
import {
    BusinessError } from '@kit.BasicServicesKit';
import {
    common } from '@kit.AbilityKit';

2.获取cameraManager对象

getCameraManager(): camera.CameraManager {
   
    let cameraManager: camera.CameraManager = camera.getCameraManager(getContext(this));
    console.error("01 cameraManager."+cameraManager);
    return cameraManager;
  }

3.通过cameraManager类中的getSupportedCameras方法

getCameraDevices(cameraManager: camera.CameraManager): Array<camera.CameraDevice> {
   
    let cameraArray: Array<camera.CameraDevice> = cameraManager.getSupportedCameras();
    this.showContent = ''
    if (cameraArray != undefined && cameraArray.length > 0) {
   
      this.showContent = '支持的相机设备数量:' + cameraArray.length
      for (let index = 0; index < cameraArray.length; index++) {
   
        console.info('cameraId : ' + cameraArray[index].cameraId); // 获取相机ID
        console.info('cameraPosition : ' + cameraArray[index].cameraPosition); // 获取相机位置
        console.info('cameraType : ' + cameraArray[index].cameraType); // 获取相机类型
        console.info('connectionType : ' + cameraArray[index].connectionType); // 获取相机连接类型
        this.showContent = 'cameraId:' + cameraArray[index].cameraId + '|cameraType:' + cameraArray[index].cameraType + '|connectionType:' + cameraArray[index].connectionType

      }
      return cameraArray;
    } else {
   
      console.error("cameraManager.getSupportedCameras error");
      this.errorContent = ' cameraManager.getSupportedCameras error'
      return [];
    }
  }

4.创建相机输入流

createInput(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager): Promise<camera.CameraInput | undefined> {
   
  // 创建相机输入流
  let cameraInput: camera.CameraInput | undefined = undefined;
  try {
   
    cameraInput = cameraManager.createCameraInput(cameraDevice);
  } catch (error) {
   
    let err = error as BusinessError;
    console.error('Failed to createCameraInput errorCode = ' + err.code);
  }
  if (cameraInput === undefined) {
   
    return undefined;
  }
  // 监听cameraInput错误信息
  cameraInput.on('error', cameraDevice, (error: BusinessError) => {
   
    console.error(`Camera input error code: ${
     error.code}`);
  });
  // 打开相机
  await cameraInput.open();
  return cameraInput;
}

5.获取当前相机设备支持的所有输出流

 async getSupportedOutputCapability(cameraDevice: camera.CameraDevice, cameraManager: camera.CameraManager): Promise<camera.CameraOutputCapability | undefined> {
   
    // 创建相机输入流
    let cameraInput: camera.CameraInput | undefined = undefined;
    try {
   
      cameraInput = cameraManager.createCameraInput(cameraDevice);
    } catch (error) {
   
      let err = error as BusinessError;
      console.error('Failed to createCameraInput errorCode = ' + err.code);
    }
    if (cameraInput === undefined) {
   
      return undefined;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值