#夏日挑战赛#【FFH】HarmonyOS手机遥控Dayu开发板相机(一) 原创 精华

龙眼Litchi
发布于 2022-6-25 14:21
浏览
2收藏

[本文正在参加星光计划3.0-夏日挑战赛]

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

0.效果

  • 调用接口成功
    #夏日挑战赛#【FFH】HarmonyOS手机遥控Dayu开发板相机(一)-鸿蒙开发者社区
    #夏日挑战赛#【FFH】HarmonyOS手机遥控Dayu开发板相机(一)-鸿蒙开发者社区
  • 存在问题
    拍摄的图片实际没有保存到图库。

1.Camera组件

1.1 需要权限

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

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

1.2 支持的事件

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

1.3 支持方法

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

  • CameraTakePhotoOptions
    参数列表
参数 类型 描述
quality string 图片质量:high,normal,low
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数

2. 案例编写

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

2.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.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) {
         
        })
    },

3. 结语

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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
开发板侧UDP+Camera案例.zip 5.26M 58次下载
HarmonyOS.zip 28.93M 42次下载
已于2022-6-25 14:23:43修改
5
收藏 2
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

赞,感谢楼主的分享!

回复
2022-6-27 10:23:24
回复
    相关推荐