1# 相机和媒体库 2 3### 介绍 4 5此Demo展示如何在ArkTS中调用相机拍照和录像,以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。 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.filemanagement.userFileManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-userFileManager-sys.md ) 16 17公共文件访问与管理[@ohos.file.fileAccess](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-fileAccess-sys.md ) 18 19设备信息能力接口[@ohos.deviceInfo](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-device-info.md ) 20 21弹窗能力接口[@ohos.promptAction](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.安装相机应用[Camera](lib/CameraPage-1.0.0.hap)应用后,点击**相机**图标,进入相机界面,默认是拍照模式,点击底部拍照按钮可以拍照,拍照完成会在底部左侧显示照片预览图。点击**录像**切换到录像模式,点击底部按钮开始录像,点击结束按钮结束录像,结束录像后底部左侧显示视频图标。点击系统**Back**键或界面顶部**返回**按钮返回首页。 35 364.点击**录音**图标进入录音界面,点击右侧**开始**按钮开始录音,按钮变为暂停按钮,点击可以暂停和继续录音,点击左侧**结束**按钮结束录音返回首页。 37 385.点击**文本**图标进入文本编辑界面,输入文本内容后点击**Save**按钮,会创建并写入文本文件,完成后返回首页。 39 406.点击相册进入文件列表界面,展示相册内的文件,列表中有**删除**和**重命名**按钮,点击可以删除文件和重命名文件。 41 427.安装视频播放[VideoPlayer](lib/VideoPlayer.hap)应用后,点击视频文件可以调起视频播放界面播放该视频。 43 44### 工程目录 45``` 46entry/src/main/ets/ 47|---MainAbility 48| |---MainAbility.ts // 主程序入口,应用启动时获取相应权限 49|---pages 50| |---index.ets // 首页 51| |---AlbumPage.ets // 相册页面 52| |---CameraPage.ets // 相机页面 53| |---RecordPage.ets // 录音页面 54| |---DocumentPage.ets // 存储文件页面 55|---model 56| |---CameraService.ts // 相机模块(拍照录像模式) 57| |---DateTimeUtil.ts // 日期工具包 58| |---MediaUtils.ts // 媒体工具模块 59| |---RecordModel.ts // 录音模块(底层能力实现) 60| |---TimeUtils.ts // 时间工具包 61|---view 62| |---BasicDataSource.ets // 初始化媒体服务数组 63| |---MediaItem.ets // 定义具体的某一媒体模块页面 64| |---MediaView.ets // 媒体模块的前置模块(判断是否有展示的媒体内容) 65| |---RenameDialog.ets // 重命名文件模块 66| |---TitleBar.ets // 标题栏 67``` 68 69### 具体实现 70 71* 布局原理:定义@ObjectLink 装饰的数组变量album存放资源文件,使用list()组件中ListItem()循环数组展示,加号Button(),点击后触发 animateTo({ duration: 500, curve: Curve.Ease })控制动画展示,[源码参考](entry/src/main/ets/pages/Index.ets )。 72* 获取资源文件:通过引入用户数据管理接口@ohos.filemanagement.userFileManager,获取图片与视频音频类型的文件资源,并通过albums.push()添加至album数组中。 73* 展示系统资源文件:当album内的值被修改时,只会让用 @ObjectLink 装饰的变量album所在的组件被刷新,当前组件不会刷新。 74* 录音功能:通过引入音视频接口@ohos.multimedia.media,例如通过media.createAudioRecorder()创建音频录制的实例来控制音频的录制,通过this.audioRecorder.on('prepare', () => {this.audioRecorder.start()})异步方式开始音频录制,[源码参考](entry/src/main/ets/model/RecordModel.ts )。 75* 拍照录像功能:通过引入相机模块接口@ohos.multimedia.camera,例如通过this.cameraManager.createCaptureSession()创建相机入口的实例来控制拍照和录像,通过this.captureSession.start()开始会话工作,[源码参考](entry/src/main/ets/model/CameraService.ts )。 76 77 78### 相关权限 79相机权限:[ohos.permission.CAMERA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioncamera ) 80 81麦克风权限:[ohos.permission.MICROPHONE](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionmicrophone ) 82 83访问媒体文件地理位置信息权限:[ohos.permission.MEDIA_LOCATION](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionmedia_location ) 84 85访问公共目录的图片或视频权限:[ohos.permission.READ_IMAGEVIDEO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionread_imagevideo ) 86 87修改公共目录的图片或视频权限:[ohos.permission.WRITE_IMAGEVIDEO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionwrite_imagevideo ) 88 89访问公共目录的音频权限:[ohos.permission.READ_AUDIO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionread_audio ) 90 91修改公共目录的音频权限:[ohos.permission.WRITE_AUDIO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionwrite_audio ) 92 93 94### 依赖 95 96不涉及 97 98### 约束与限制 99 1001.本示例仅支持标准系统上运行。 101 1022.本示例为Stage模型,已适配API version 10版本SDK,版本号:4.0.10.15。 103 1043.本示例需要使用DevEco Studio NEXT Developer Preview1 (Build Version: 4.1.3.500, built on January 20, 2024)及以上版本才可编译运行。 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````