鸿蒙开发教程w3c,鸿蒙OS 相机设备开发指导

相机开发流程

相机模块主要工作是给相机应用开发者提供基本的相机API接口,用于使用相机系统的功能,进行相机硬件的访问、操作和新功能开发。相机的开发流程如图所示:

图1 相机开发流程

a08a64a599c3ab72e4f393f941a19871.png

接口说明

相机模块为相机应用开发者提供了3个包的内容,包括方法、枚举、以及常量/变量,方便开发者更容易地实现相机功能。详情请查阅对应开发场景。

包名

功能

ohos.media.camera.CameraKit

相机功能入口类。获取当前支持的相机列表及其静态能力信息,创建相机对象。

ohos.media.camera.device

相机设备操作类。提供相机能力查询、相机配置、相机帧捕获、相机状态回调等功能。

ohos.media.camera.params

相机参数类。提供相机属性、参数和操作结果的定义。

相机权限申请

在使用相机之前,需要申请相机的相关权限,保证应用拥有相机硬件及其他功能权限,应用权限的介绍请参考 权限章节,相机涉及权限如下表。

权限名称

权限属性值

是否必选

相机权限

ohos.permission.CAMERA

必选

录音权限

ohos.permission.MICROPHONE

可选(需要录像时申请)

存储权限

ohos.permission.WRITE_USER_STORAGE

可选(需要保存图像及视频到设备的外部存储时申请)

位置权限

ohos.permission.LOCATION

可选(需要保存图像及视频位置信息时申请)

相机设备创建

CameraKit 类是相机的入口 API 类,用于获取相机设备特性、打开相机,其接口如下表。

接口名

描述

createCamera(String cameraId, CameraStateCallback callback, EventHandler handler)

创建相机对象。

getCameraAbility(String cameraId)

获取指定逻辑相机或物理相机的静态能力。

getCameraIds()

获取当前逻辑相机列表。

getCameraInfo(String cameraId)

获取指定逻辑相机的信息。

getInstance(Context context)

获取CameraKit实例。

registerCameraDeviceCallback(CameraDeviceCallback callback, EventHandler handler)

注册相机使用状态回调。

unregisterCameraDeviceCallback(CameraDeviceCallback callback)

注销相机使用状态回调。

基于 HarmonyOS 实现一个相机应用,无论将来想应用到哪个或者哪些设备上,都必须先创建一个独立的相机设备,然后才能继续相机的其他操作。相机设备创建的建议步骤如下:

通过 CameraKit.getInstance(Context context) 方法获取唯一的 CameraKit 对象是创建新的相机应用的第一步操作。

private void openCamera(){

// 获取CameraKit对象

CameraKit cameraKit = CameraKit.getInstance(context);

if (cameraKit == null) {

// 处理cameraKit获取失败的情况

}

}

如果此步骤操作失败,相机可能被占用或无法使用。如果被占用,必须等到相机释放后才能重新获取CameraKit对象。

通过getCameraIds()方法,获取当前使用的设备支持的逻辑相机列表。逻辑相机列表中存储了当前设备拥有的所有逻辑相机ID,如果列表不为空,则列表中的每个ID都支持独立创建相机对象;否则,说明正在使用的设备无可用的相机,不能继续后续的操作。

try {

// 获取当前设备的逻辑相机列表

String[] cameraIds = cameraKit.getCameraIds();

if (cameraIds.length <= 0) {

HiLog.error("cameraIds size is 0");

}

} catch (IllegalStateException e) {

// 处理异常

}

还可以继续查询指定相机ID的静态信息:

调用getDeviceLinkType(String physicalId)方法获取物理相机连接方式;

调用getCameraInfo(String cameraId)方法查询相机硬件朝向等信息;

调用getCameraAbility(String cameraId)方法查询相机能力信息(比如支持的分辨率列表等)。

接口名

描述

getDeviceLinkType(String physicalId)

获取物理相机连接方式。

getFacingType()

获取相机朝向信息。

getLogicalId()

获取逻辑相机ID。

getPhysicalIdList()

获取对应的物理相机ID列表。

接口名

描述

getSupportedSizes(int format)

根据格式查询输出图像的分辨率列表。

getSupportedSizes(Class clazz)

根据 Class 类型查询分辨率列表。

getParameterRange(ParameterKey.Key parameter)

获取指定参数能够设置的值范围。

getPropertyValue(PropertyKey.Key property)

获取指定属性对应的值。

getSupportedAeMode()

获取当前相机支持的自动曝光模式。

getSupportedAfMode()

获取当前相机支持的自动对焦模式。

getSupportedFaceDetection()

获取相机支持的人脸检测类型范围。

getSupportedFlashMode()

当前相机支持的闪光灯取值范围。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值