当前位置: 首页 > news >正文

事件网站推广杭州平面设计公司

事件网站推广,杭州平面设计公司,中山手机网站建设哪家好,北京做兼职的网站在开发一个相机应用前,需要先通过调用Camera接口获取支持的相机设备列表,然后创建相机设备对象做后续处理。 开发步骤 1、导入camera接口,接口中提供了相机相关的属性和方法,导入方法如下。 import { camera } from kit.Camera…

在开发一个相机应用前,需要先通过调用Camera接口获取支持的相机设备列表,然后创建相机设备对象做后续处理。

开发步骤

1、导入camera接口,接口中提供了相机相关的属性和方法,导入方法如下。

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

2、通过getCameraManager方法,获取相机管理器实例对象。

function getCameraManager(context: common.BaseContext): camera.CameraManager | undefined {let cameraManager: camera.CameraManager | undefined = undefined;try {cameraManager = camera.getCameraManager(context);} catch (error) {let err = error as BusinessError;console.error(`The getCameraManager call failed. error code: ${err.code}`);}return cameraManager;
}

3、通过CameraManager类中的getSupportedCameras方法,可获取当前设备支持的相机列表,列表中存储了所有的相机设备信息,包括相机ID、位置、类型等。若列表不为空,列表中每个相机ID都支持独立创建相机对象;否则,说明当前设备无可用相机,不可继续后续操作。

function getCameraDevices(cameraManager: camera.CameraManager): Array<camera.CameraDevice> {let cameraArray: Array<camera.CameraDevice> = cameraManager.getSupportedCameras();if (cameraArray != undefined && cameraArray.length > 0) {for (let index = 0; index < cameraArray.length; index++) {console.info('cameraId : ' + cameraArray[index].cameraId);  // 获取相机IDconsole.info('cameraPosition : ' + cameraArray[index].cameraPosition);  // 获取相机位置,如前置或后置相机console.info('cameraType : ' + cameraArray[index].cameraType);  // 获取相机类型,如广角或景深相机console.info('connectionType : ' + cameraArray[index].connectionType);  // 获取相机连接类型,如内置、USB连接或远程(分布式)连接相机console.info('cameraOrientation: ' + cameraArray[index].cameraOrientation); // 获取镜头的安装角度,不会随着屏幕旋转而改变,取值范围为0°-360°,API 12新增}return cameraArray;} else {console.error("cameraManager.getSupportedCameras error");return [];}
}

相机状态变化监听

在相机应用开发过程中,通过注册回调函数可以随时监听相机状态变化,包括新相机的出现、相机的移除、相机的可用状态。在回调函数中,通过相机ID、相机状态这两个参数进行监听,如当有新相机出现时,可以将新相机加入到应用的相机列表中通知用户。

通过注册cameraStatus事件,callback返回CameraStatusInfo参数,包括相机的信息CameraDevice和状态CameraStatus

function onCameraStatusChange(err: BusinessError, cameraStatusInfo:camera.CameraStatusInfo): void { if (err !== undefined && err.code !== 0) {console.error(`Callback Error, errorCode: ${err.code}`);return;}// 当插入USB相机设备时,回调函数会返回新的相机出现状态if (cameraStatusInfo.status == camera.CameraStatus.CAMERA_STATUS_APPEAR) {console.info(`New Camera device appear.`);}// 当拔出USB相机设备时,回调函数会返回相机被移除状态if (cameraStatusInfo.status == camera.CameraStatus.CAMERA_STATUS_DISAPPEAR) {console.info(`Camera device has been removed.`);}// 相机被打开时,回调函数会返回相机可用状态if (cameraStatusInfo.status == camera.CameraStatus.CAMERA_STATUS_AVAILABLE) {console.info(`Current Camera is available.`);}// 相机被关闭/占用时,回调函数会返回相机不可用状态if (cameraStatusInfo.status == camera.CameraStatus.CAMERA_STATUS_UNAVAILABLE) {console.info(`Current Camera is unavailable.`);}console.info(`camera: ${cameraStatusInfo.camera.cameraId}`);console.info(`status: ${cameraStatusInfo.status}`);});
}function registerCameraStatus(cameraManager: camera.CameraManager): void {cameraManager.on('cameraStatus', onCameraStatusChange);
}// 注销相机设备状态回调
function unregisterCameraStatus(cameraManager: camera.CameraManager): void {cameraManager.off('cameraStatus');  
}

其他状态变化监听

当前版本还支持开启折叠设备折叠状态变化监听和手电筒状态变化回调。

// 开启折叠设备折叠状态变化的监听,折叠机折叠状态参数包括不可折叠、完全展开、折叠态
function registerFoldStatusChange(cameraManager: camera.CameraManager): void {cameraManager.on('foldStatusChange', (err: BusinessError, foldStatusInfo: camera.FoldStatusInfo) => {if (err !== undefined && err.code !== 0) {console.error('foldStatusChange with errorCode = ' + err.code);return;}console.info(`camera length: ${foldStatusInfo.supportedCameras.length}`);console.info(`foldStatus: ${foldStatusInfo.foldStatus}`);}});
}// 注册手电筒状态变化回调,目前只支持手电筒打开,手电筒关闭,手电筒不可用,手电筒恢复可用会触发该事件并返回对应信息
function registerTorchStatusChange(cameraManager: camera.CameraManager): void {cameraManager.on('torchStatusChange', (err: BusinessError, torchStatusInfo: camera.TorchStatusInfo) => {if (err !== undefined && err.code !== 0) {console.error(`Callback Error, errorCode: ${err.code}`);return;}console.info(`onTorchStatusChange, isTorchAvailable: ${torchStatusInfo.isTorchAvailable}, isTorchActive: ${torchStatusInfo.isTorchActive}, level: ${torchStatusInfo.torchLevel}`);}});
}
http://www.dtcms.com/a/513044.html

相关文章:

  • 粮食网站建设的背景及意义大型网站制作怎么样
  • LangGraph 入门,层级介绍LangGraph
  • 360doc 网站怎么做江西专业网站建设
  • 青岛贸易公司 网站制作济南网站制作定制公司
  • 西部数码网站管理助手 ftp密码重庆市建设工程信息网怎么录项目信息
  • Linux | i.MX6ULL 网络测试方法
  • 网站建设案例收费吗靖江网站定制
  • debug - eclipseCPP + openocd + 引入arm-gcc makefile工程来单步调试
  • 数据结构——十字链表
  • 怎么自己编程做网站北京建设工程主管部门网站
  • 基于文本+视觉混合输入的恶意流量检测方法猜想
  • spark实战:python股票数据分析可视化系统 Flask框架 金融数据分析 Echarts可视化 大数据技术 ✅
  • 连云港网站关键字优化市场自己做网站背景图片
  • wordpress文章加预览图外贸seo推广
  • Java面试精选:如何轻松的拿下offer?
  • 网站前瞻性_新流量机会内容建设分析华为邮箱注册
  • Java-集合(开发的重点)
  • docker技术之container与docker介绍
  • 如何做外贸soho做网站网站开发html5技术
  • 外国人做的甲骨文网站做网站需要切图吗
  • Redis如何解决key冲突?
  • 解决 QML 中使用 Qt Charts 崩溃的三个关键步骤
  • 2025算力行业趋势下的4090云主机租赁方案
  • 一起做网站17沧州网站建设哪家好
  • 如何在百度提交网站莲湖免费做网站
  • 网站统计排名做装修网站价格
  • 基于 Redis 的布隆过滤器:高效的数据存在性检查
  • 【经典书籍】C++ Primer 第9章顺序容器精华讲解
  • 基于MATLAB的光学相干断层扫描图像处理与定量分析算法研究
  • 怎么做发卡网站购买网站app制作