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);
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.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;