概念产品设计网站,网络维护公司排名,优秀的网络搜索引擎营销案例,开发电商网站要多少钱 ArkUI调用相机和调用相册其实是一个思路#xff0c;只用修改一个地方。
我们继续来说相机调用#xff0c;ArkUI没办法自己获取相机#xff0c;所以得依靠一下ohos.multimedia.camera
相机开发指导
介绍
本指导主要展示了调用相机的调用过程#xff0c;以及调用相机的… ArkUI调用相机和调用相册其实是一个思路只用修改一个地方。
我们继续来说相机调用ArkUI没办法自己获取相机所以得依靠一下ohos.multimedia.camera
相机开发指导
介绍
本指导主要展示了调用相机的调用过程以及调用相机的权限准备;
本指导对比了两种设计方案优劣并给出推荐方案
本指导使用的sample链接Camera
使用了如下接口 ohos.abilityAccessCtrl ohos.multimedia.camera
开发设计
注意事项请确保已经获取权限后再调用相关接口否则无法调用成功也不会提示开发者会浪费时间在检查自己代码上。具体分析如下
如果像如下流程直接调用接口可能会导致接口不能调用的问题 所以我们建议开发者使用如下设计 检查相机授权状态检查授权状态主动请求查相机授权主动请求授权打开相机调用需要授权的接口调用拍照接口
开发步骤
导入头文件
import type { Permissions } from ohos.abilityAccessCtrl;查询相机授权状态
let atManager abilityAccessCtrl.createAtManager();
let tokenID 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
try {atManager.checkAccessToken(tokenID, ohos.permission.GRANT_SENSITIVE_PERMISSIONS).then((data) {console.log(checkAccessToken success, data-${JSON.stringify(data)});}).catch((err) {console.log(checkAccessToken fail, err-${JSON.stringify(err)});});
} catch(err) {console.log(catch err-${JSON.stringify(err)});
}获取相机权限
相关完整代码链接 PermissionUtils.ets
关键代码如下
let atManager abilityAccessCtrl.createAtManager();
try {atManager.requestPermissionsFromUser(this.context, [ohos.permission.CAMERA], (err, data){console.info(data: JSON.stringify(data));console.info(data permissions: data.permissions);console.info(data authResults: data.authResults);});
} catch(err) {console.log(catch err-${JSON.stringify(err)});
}定义一个相机对象
相关完整代码链接 CameraModel.ts
关键代码如下
export default class CameraService {private photoOutPut: camera.PhotoOutput undefined;
}调用拍照接口
相关完整代码链接 Camera.ets
关键代码如下
Image(this.getCameraIcon()).size({ width: 64, height: 64 }).margin({ left: 10 }).id(camera).onClick(() {Logger.info(TAG, takePicture begin);prompt.showToast({ message: 拍照中..., duration: 200 });this.cameraModel.takePicture();})总结
由于相机强关联硬件设备在开发前要确保硬件设备完整性。其次相机开发主要关注权限问题避免因权限问题延长调试时间。此外还因关注不同设备差异性产生的接口不兼容问题需要测试覆盖完整。
本指导使用的sample链接Camera