OpenHarmony相机和媒体库-如何在ArkTS中调用相机拍照和录像。

654 篇文章 4 订阅
648 篇文章 6 订阅

介绍

此Demo展示如何在ArkTS中调用相机拍照和录像,以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。

本示例用到了权限管理能力@ohos.abilityAccessCtrl

相机模块能力接口@ohos.multimedia.camera

图片处理接口@ohos.multimedia.image

音视频相关媒体业务能力接口@ohos.multimedia.media

媒体库管理接口@ohos.multimedia.medialibrary

设备信息能力接口@ohos.deviceInfo

文件存储管理能力接口@ohos.fileio

弹窗能力接口@ohos.prompt

效果预览

在这里插入图片描述
使用说明

1.启动应用,在权限弹窗中授权后返回应用,首页显示当前设备的相册信息,首页监听相册变化会刷新相册列表。

2.点击 + 按钮,弹出相机、录音、文本文件三个图标。

3.安装相机应用Camera应用后,点击相机图标,进入相机界面,默认是拍照模式,点击底部拍照按钮可以拍照,拍照完成会在底部左侧显示照片预览图。点击录像切换到录像模式,点击底部按钮开始录像,点击结束按钮结束录像,结束录像后底部左侧显示视频图标。点击系统Back键或界面顶部返回按钮返回首页。

4.点击录音图标进入录音界面,点击右侧开始按钮开始录音,按钮变为暂停按钮,点击可以暂停和继续录音,点击左侧结束按钮结束录音返回首页。

5.点击文本图标进入文本编辑界面,输入文本内容后点击Save按钮,会创建并写入文本文件,完成后返回首页。

6.点击相册进入文件列表界面,展示相册内的文件,列表中有删除和重命名按钮,点击可以删除文件和重命名文件。

7.安装视频播放VideoPlayer应用后,点击视频文件可以调起视频播放界面播放该视频。

相关概念

媒体库管理:媒体库管理提供接口对公共媒体资源文件进行管理,包括文件的增、删、改、查等。 相机:相机模块支持相机相关基础功能的开发,主要包括预览、拍照、录像等。

工程目录

entry/src/main/ets/
|---MainAbility
|   |---MainAbility.ts                      // 主程序入口,应用启动时获取相应权限
|---pages
|   |---index.ets                           // 首页
|   |---AlbumPage.ets                       // 相册页面
|   |---CameraPage.ets                      // 相机页面
|   |---RecordPage.ets                      // 录音页面
|   |---DocumentPage.ets                    // 存储文件页面
|---model                                  
|   |---CameraService.ts                    // 相机模块(拍照录像模式)
|   |---DateTimeUtil.ts                     // 日期工具包
|   |---MediaUtils.ts                       // 媒体工具模块
|   |---RecordModel.ts                      // 录音模块(底层能力实现)
|   |---TimeUtils.ts                        // 时间工具包
|---view                                    
|   |---BasicDataSource.ets                 // 初始化媒体服务数组
|   |---MediaItem.ets                       // 定义具体的某一媒体模块页面 
|   |---MediaView.ets                       // 媒体模块的前置模块(判断是否有展示的媒体内容)
|   |---RenameDialog.ets                    // 重命名文件模块 
|   |---TitleBar.ets                        // 标题栏                                                           

具体实现

  • 布局原理:定义@ObjectLink
    装饰的数组变量album存放资源文件,使用list()组件中ListItem()循环数组展示,加号Button(),点击后触发
    animateTo({ duration: 500, curve: Curve.Ease })控制动画展示。

  • 获取资源文件:通过引入媒体库实例(入口)接口@ohos.multimedia.medialibrary,例如通过this.getFileAssetsFromType(mediaLibrary.MediaType.FILE)获取FILE类型的文件资源,并通过albums.push()添加至album数组中。

  • 展示系统资源文件:当album内的值被修改时,只会让用 @ObjectLink 装饰的变量album所在的组件被刷新,当前组件不会刷新。

  • 录音功能:通过引入音视频接口@ohos.multimedia.media,例如通过media.createAudioRecorder()创建音频录制的实例来控制音频的录制,通过this.audioRecorder.on(‘prepare’,
    () => {this.audioRecorder.start()})异步方式开始音频录制。

  • 拍照录像功能:通过引入相机模块接口@ohos.multimedia.camera,例如通过this.cameraManager.createCaptureSession()创建相机入口的实例来控制拍照和录像,通过this.captureSession.start()开始会话工作

相关权限

相机权限:ohos.permission.CAMERA麦克风权限:ohos.permission.MICROPHONE访问媒体文件地理位置信息权限:ohos.permission.MEDIA_LOCATION读取公共媒体文件权限:ohos.permission.READ_MEDIA读写公共媒体文件权限:ohos.permission.WRITE_MEDIA

依赖

不涉及

约束与限制

1.rk3568底层录像功能有问题,暂不支持录像功能,当前拍照功能仅支持部分机型。

2.本示例仅支持标准系统上运行。

3.本示例为Stage模型,已适配API version 9版本SDK,版本号:3.2.11.9;

4.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400, built on April 7, 2023)及以上版本才可编译运行。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/Solutions/Media/MultiMedia/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→HarmonyOS教学视频:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等…视频教程

在这里插入图片描述
在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF: 获取完整版白皮书方式请点击→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

鸿蒙 (Harmony OS)开发学习手册

一、入门必看

1.应用开发导读(ArkTS)
2………
在这里插入图片描述

二、HarmonyOS 概念

1.系统定义
2.技术架构
3.技术特性
4.系统安全
5…

在这里插入图片描述

三、如何快速入门?《做鸿蒙应用开发到底学习些啥?》https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3…

在这里插入图片描述

四、开发基础知识

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
在这里插入图片描述

五、基于ArkTS 开发

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
在这里插入图片描述

更多了解更多鸿蒙开发的相关知识可以参考:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 JSP 调用相机并显示拍摄的图片,您需要使用 HTML5 的 API,例如 `getUserMedia()`,这是一个在网页访问媒体设备的 API。 以下是一个简单的示例: ``` <!DOCTYPE html> <html> <head> <title>Web Camera</title> </head> <body> <div> <video id="videoElement" width="640" height="480" autoplay></video> </div> <br><br> <div> <button id="capture">Capture</button> </div> <br><br> <div> <img id="capturedImage" width="640" height="480"> </div> <script> const videoElement = document.getElementById("videoElement"); const capturedImage = document.getElementById("capturedImage"); const captureButton = document.getElementById("capture"); const constraints = { video: true }; navigator.mediaDevices .getUserMedia(constraints) .then(function(mediaStream) { videoElement.srcObject = mediaStream; videoElement.onloadedmetadata = function(e) { videoElement.play(); }; }) .catch(function(err) { console.log(err.name + ": " + err.message); }); captureButton.addEventListener("click", function() { const context = capturedImage.getContext("2d"); context.drawImage(videoElement, 0, 0, 640, 480); capturedImage.style.display = "block"; videoElement.style.display = "none"; }); </script> </body> </html> ``` 在此代码,您将使用 `navigator.mediaDevices.getUserMedia()` 方法来请求访问设备的摄像头,并在 `video` 元素显示摄像头的预览。当您单击 "Capture" 按钮时,它将使用 `drawImage()` 方法从 `video` 元素捕获图像,并将其显示在 `img` 元素。 请注意,这只是一个简单的示例,您可以在此基础上进一步扩

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值