HarmonyOS手机遥控Dayu开发板相机(一)

系统 OpenHarmony
关于调用板子的摄像头的方式经研究,主要有两种,一种是camera组件,一种是调用API。先从简单的camera组件开始。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

前几篇博文解决了HarmonyOS和OpenHarmony的通信问题,现在尝试用通信来做一些事情。比如用手机遥控开发板的摄像头,或者开发板遥控手机的摄像头,乃至照片回传。关于调用板子的摄像头的方式经研究,主要有两种,一种是camera组件,一种是调用API。先从简单的camera组件开始。

一、效果

  • 调用接口成功

#夏日挑战赛#【FFH】HarmonyOS手机遥控Dayu开发板相机(一)-开源基础软件社区
#夏日挑战赛#【FFH】HarmonyOS手机遥控Dayu开发板相机(一)-开源基础软件社区

  • 存在问题

拍摄的图片实际没有保存到图库。

二、Camera组件

1、需要权限

相机权限,读写媒体文件的权限。

{
"name": "ohos.permission.CAMERA"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.READ_MEDIA"
}

2、支持的事件

除了通用事件外,还支持error事件,在用户不允许使用摄像头的时候触发。

3、支持方法

仅支持,takePhoto(CameraTakePhotoOptions),拍照设置参数。

  • CameraTakePhotoOptions

参数列表:

参数

类型

描述

quality

string

图片质量:high,normal,low

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数

三、案例编写

关于手机侧,开发板侧的UDP通信请看我的前几篇博文,这里只分享Camera的组件调用。

HarmonyOS与OpenHarmony通信

1、index.css

这里全局就用一个摄像头画面即可。

<camera flash="on" deviceposition="back" @error="cameraError" style="height: 100%;width: 100%;position: absolute;top: 1%;" onclick="takepic"   id="c">
</camera>
  • flash值控制闪光灯的开启。
  • @error就是前文提到的,如果用户不授权就会触发的回调函数。
  • deviceposition的值表示前后摄像头,front表示前置,back表示后置。

2、index.js

这里约定,接受到0的信息表示进行拍照的操作,手机侧沿用之前的功能编写即可。

  • takePhoto(options)
takepic(){
var options= {
"quality":"normal",
"success":this.onSuccess(),
"fail":this.onFailed(),
"complete":this.onCompleted()
}
this.$element("c").takePhoto(options
);
},
onFailed:async function(){
prompt.showToast({
message: "拍摄失败"
});
},
onSuccess:async function(e){
console.info(this.TAG+JSON.stringify(e))
prompt.showToast({
message: "拍摄成功"
});
},
onCompleted:async function(){
prompt.showToast({
message: "拍摄完成"
});
},
cameraError(){
prompt.showToast({
message: "授权失败!"
});
},

这里将takpic()方法绑定到UDPsocket的监听函数上即可,当判断信息为0的时候,执行拍照操作,可通过toast窗口判断拍摄情况。

  • 在config.json中添加读写媒体,相机的权限。
  • 获取用户授权。
grantPermission() {
console.info('Calc[IndexPage] grantPermission')
let context = featureAbility.getContext()
context.requestPermissionsFromUser(['ohos.permission.CAMERA', "ohos.permission.WRITE_MEDIA","ohos.permission.READ_MEDIA"], 666, function (result) {

})
},

四、结语

可见Camera组件能够获取相机的预览和拍照功能,各项回调函数能够进入,但是实际没有保存到图库,可能是该组件还未完善。下次我们继续尝试调用其他api来获取相机预览流和拍照功能。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-03-03 15:47:51

HarmonyOS应用开发物联网

2020-11-05 10:05:25

App

2021-01-08 10:00:53

鸿蒙讯飞平台语音控制

2022-05-19 15:47:24

碰一碰连接设备开发鸿蒙

2021-01-07 11:24:51

鸿蒙HarmonyOS音乐

2020-11-10 10:00:10

HarmonyOS

2020-11-09 11:56:49

HarmonyOS

2020-12-14 13:51:43

HarmonyOS鸿蒙DevEco Stud

2020-12-16 12:30:18

华为鸿蒙HarmonyOS 2全场景

2021-10-26 15:20:53

2021-06-01 14:32:44

鸿蒙HarmonyOS应用

2021-07-05 14:29:28

2020-09-10 23:32:32

Harmony OS开源

2020-10-20 09:30:00

HarmonyOS应用开发

2021-02-03 09:59:02

鸿蒙HarmonyOS应用开发

2020-10-13 09:53:51

HarmonyOS入门下载

2021-02-26 10:16:55

鸿蒙HarmonyOS应用开发

2020-09-28 15:13:04

鸿蒙

2021-01-19 10:09:02

鸿蒙HarmonyOS应用

2020-10-15 09:49:45

HarmonyOS 2设备开发
点赞
收藏

51CTO技术栈公众号