145 Star 1.4K Fork 1.7K

OpenHarmony/applications_app_samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

相机和媒体库

介绍

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

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

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

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

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

用户数据管理接口@ohos.filemanagement.userFileManager

公共文件访问与管理@ohos.file.fileAccess

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

弹窗能力接口@ohos.promptAction

效果预览

首页
main

使用说明

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.filemanagement.userFileManager,获取图片与视频音频类型的文件资源,并通过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_IMAGEVIDEO

修改公共目录的图片或视频权限:ohos.permission.WRITE_IMAGEVIDEO

访问公共目录的音频权限:ohos.permission.READ_AUDIO

修改公共目录的音频权限:ohos.permission.WRITE_AUDIO

依赖

不涉及

约束与限制

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

2.本示例为Stage模型,已适配API version 12版本SDK,版本号:5.0.0。

3.本示例需要使用DevEco Studio NEXT Developer Preview1 (Build Version: 4.1.3.500, built on January 20, 2024)及以上版本才可编译运行。

下载

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

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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openharmony/applications_app_samples.git
git@gitee.com:openharmony/applications_app_samples.git
openharmony
applications_app_samples
applications_app_samples
master

搜索帮助