1# 相机和媒体库 2 3### 介绍 4 5此Demo展示如何在eTS中调用相机拍照和录像,以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。 6 7本示例用到了权限管理能力[@ohos.abilityAccessCtrl](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-abilityAccessCtrl.md ) 8 9相机模块能力接口[@ohos.multimedia.camera](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-camera-kit/js-apis-camera.md ) 10 11图片处理接口[@ohos.multimedia.image](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-image-kit/js-apis-image.md) 12 13音视频相关媒体业务能力接口[@ohos.multimedia.media](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-media-kit/js-apis-media.md ) 14 15媒体库管理接口[@ohos.multimedia.medialibrary](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-media-library-kit/js-apis-medialibrary.md ) 16 17设备信息能力接口[@ohos.deviceInfo](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-device-info.md ) 18 19文件存储管理能力接口[@ohos.fileio](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-fileio.md ) 20 21弹窗能力接口[@ohos.prompt](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-promptAction.md ) 22 23### 效果预览 24|首页| 25|-------| 26|| 27 28使用说明 29 301.启动应用,在权限弹窗中授权后返回应用,首页显示当前设备的相册信息,首页监听相册变化会刷新相册列表。 31 322.点击 **+** 按钮,弹出相机、录音、文本文件三个图标。 33 343.点击**相机**图标,进入相机界面,默认是拍照模式,点击底部拍照按钮可以拍照,拍照完成会在底部左侧显示照片预览图。点击**录像**切换到录像模式,点击底部按钮开始录像,点击结束按钮结束录像,结束录像后底部左侧显示视频图标。点击系统**Back**键或界面顶部**返回**按钮返回首页。 35 364.点击**录音**图标进入录音界面,点击右侧**开始**按钮开始录音,按钮变为暂停按钮,点击可以暂停和继续录音,点击左侧**结束**按钮结束录音返回首页。 37 385.点击**文本**图标进入文本编辑界面,输入文本内容后点击**Save**按钮,会创建并写入文本文件,完成后返回首页。 39 406.点击相册进入文件列表界面,展示相册内的文件,列表中有**删除**和**重命名**按钮,点击可以删除文件和重命名文件。 41 427.安装视频播放VideoPlayer应用后,点击视频文件可以调起视频播放界面播放该视频。 43 44#### 相关概念 45 46媒体库管理:媒体库管理提供接口对公共媒体资源文件进行管理,包括文件的增、删、改、查等。 47相机:相机模块支持相机相关基础功能的开发,主要包括预览、拍照、录像等。 48 49### 工程目录 50``` 51entry/src/main/ets/ 52|---MainAbility 53| |---MainAbility.ts // 主程序入口,应用启动时获取相应权限 54|---pages 55| |---index.ets // 首页 56| |---AlbumPage.ets // 相册页面 57| |---CameraPage.ets // 相机页面 58| |---RecordPage.ets // 录音页面 59| |---DocumentPage.ets // 存储文件页面 60|---model 61| |---CameraService.ts // 相机模块(拍照录像模式) 62| |---DateTimeUtil.ts // 日期工具包 63| |---MediaUtils.ts // 媒体工具模块 64| |---RecordModel.ts // 录音模块(底层能力实现) 65| |---TimeUtils.ts // 时间工具包 66|---view 67| |---BasicDataSource.ets // 初始化媒体服务数组 68| |---MediaItem.ets // 定义具体的某一媒体模块页面 69| |---MediaView.ets // 媒体模块的前置模块(判断是否有展示的媒体内容) 70| |---RenameDialog.ets // 重命名文件模块 71| |---TitleBar.ets // 标题栏 72``` 73 74### 具体实现 75 76* 布局原理:定义@ObjectLink 装饰的数组变量album存放资源文件,使用list()组件中ListItem()循环数组展示,加号Button(),点击后触发 animateTo({ duration: 500, curve: Curve.Ease })控制动画展示,[源码参考](entry/src/main/ets/pages/Index.ets )。 77* 获取资源文件:通过引入媒体库实例(入口)接口@ohos.multimedia.medialibrary,例如通过this.getFileAssetsFromType(mediaLibrary.MediaType.FILE)获取FILE类型的文件资源,并通过albums.push()添加至album数组中。 78* 展示系统资源文件:当album内的值被修改时,只会让用 @ObjectLink 装饰的变量album所在的组件被刷新,当前组件不会刷新。 79* 录音功能:通过引入音视频接口@ohos.multimedia.media,例如通过media.createAudioRecorder()创建音频录制的实例来控制音频的录制,通过this.audioRecorder.on('prepare', () => {this.audioRecorder.start()})异步方式开始音频录制,[源码参考](entry/src/main/ets/model/RecordModel.ts )。 80* 拍照录像功能:通过引入相机模块接口@ohos.multimedia.camera,例如通过this.cameraManager.createCaptureSession()创建相机入口的实例来控制拍照和录像,通过this.captureSession.start()开始会话工作,[源码参考](entry/src/main/ets/model/CameraService.ts )。 81 82 83### 相关权限 84相机权限:[ohos.permission.CAMERA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioncamera ) 85麦克风权限:[ohos.permission.MICROPHONE](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionmicrophone) 86访问媒体文件地理位置信息权限:[ohos.permission.MEDIA_LOCATION](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionmedia_location ) 87读取公共媒体文件权限:[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionread_media ) 88读写公共媒体文件权限:[ohos.permission.WRITE_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionwrite_media ) 89 90### 依赖 91 92不涉及 93 94### 约束与限制 95 961.rk3568底层录像功能有问题,暂不支持录像功能,当前拍照功能仅支持部分机型。 97 982.本示例仅支持标准系统上运行。 99 1003.本示例为Stage模型,已适配API version 9版本SDK,版本号:3.2.11.9; 101 1024.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400, built on April 7, 2023)及以上版本才可编译运行。 103 1045.本示例需要使用系统权限的系统接口。使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考[替换指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/faqs/full-sdk-switch-guide.md)。 105 106### 下载 107 108如需单独下载本工程,执行如下命令: 109 110```` 111git init 112git config core.sparsecheckout true 113echo code/Solutions/Media/MultiMedia/ > .git/info/sparse-checkout 114git remote add origin https://gitee.com/openharmony/applications_app_samples.git 115git pull origin master 116````