更多开源内容请访问:51CTO开源基础软件社区https://ost.51cto.com博文解决了HarmonyOS和OpenHarmony之间的通信问题,现在尝试做一些通信。比如用手机远程控制开发板的摄像头,或者开发板远程控制手机的摄像头,甚至可以传回照片。经过研究,板卡的摄像头的调用方式主要有两种,一种是摄像头组件,一种是调用API。让我们从一个简单的相机组件开始。1.效果调用接口成功有问题。拍摄的照片实际上并未保存到图库中。二、摄像头组件1、需要摄像头权限和媒体文件读写权限。{"name":"ohos.permission.CAMERA"},{"name":"ohos.permission.WRITE_MEDIA"},{"name":"ohos.permission.READ_MEDIA"}2.支持的事件除了一般事件,还有支持错误事件,当用户不允许使用相机时触发。3、支持的方法只支持,takePhoto(CameraTakePhotoOptions),拍照设置参数。CameraTakePhotoOptions参数列表:参数类型说明qualitystring图像质量:high,normal,lowsuccessFunction接口调用成功回调函数failFunction接口调用失败回调函数completeFunction接口调用结束回调函数3.手机端和开发板端写UDP通信的案例,请看我之前的博文。这里我只分享Camera的组件调用。HarmonyOS与OpenHarmony通信。1.对于index.css,全局使用一个摄像头图像即可。flash值控制闪光灯的开启。@error是用户未授权时触发的回调函数,如前所述。deviceposition的值表示前后摄像头,front表示前置摄像头,back表示后置摄像头。2、index.js这里规定接收到0的信息就是拍照,手机端可以用前面的函数写。takePhoto(options)takepic(){varoptions={"quality":"normal","success":this.onSuccess(),"fail":this.onFailed(),"complete":this.onCompleted()}this.$element("c").takePhoto(选项);},onFailed:asyncfunction(){prompt.showToast({message:"TakePhotofailed"});},onSuccess:asyncfunction(e){控制台。info(this.TAG+JSON.stringify(e))prompt.showToast({message:"拍摄成功"});},onCompleted:asyncfunction(){prompt.showToast({message:"拍摄完成"});},cameraError(){prompt.showToast({message:"授权失败!"});},这里只是将takpic()方法绑定到UDPsocket的监听函数,当判断信息为0时,执行拍照操作,可以通过toast窗口判断拍摄情况。在config.json中添加读写media和camera的权限。获得用户授权。grantPermission(){console.info('Calc[IndexPage]grantPermission')letcontext=featureAbility.getContext()context.requestPermissionsFromUser(['ohos.permission.CAMERA',"ohos.permission.WRITE_MEDIA","ohos.permission.READ_MEDIA"],666,function(result){})},4.结论中我们可以看到Camera组件可以获取相机的预览和相机功能,可以输入各种回调函数,但是是实际上并没有保存到图库中。可能是组件尚未完成。下次我们会继续尝试调用其他的api来获取相机预览流并进行拍照。了解更多开源信息,请访问:51CTO开源基础软件社区https://ost.51cto.com。