1# 音效管理 2 3### 介绍 4 5本示例主要展示了音效管理功能,包括预置音效查询和实时音效设置。 6 7### 效果预览 8 9| 主页 | 预置音效查询页面 | 实时音效设置页面 | 10| -------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------ | 11|  |  |  | 12 13使用说明 14 151. 在主界面点击“音效管理”按钮,进入预置音效查询页面 162. 在预置音效查询页面,选择内容类型和场景后,点击“查询”按钮,预置音效模式会显示在下方查询结果中 173. 在预置音效查询页面,重新修改内容类型和场景,查询结果会重置 184. 在预置音效查询页面,点击右下方”实时音效设置“按钮,进入实时音效设置页面 195. 在实时音效设置页面,选择内容类型和场景后,点击播放按钮,音频流开始播放,同时内容类型和场景选择框被置灰 206. 在实时音效设置页面,点击”查询“按钮,当前音频流音效模式会显示在下方的查询结果中 217. 在实时音效设置页面,点击暂停按钮,音频流暂停,内容类型和场景选择框使能 228. 在实时音效设置页面,修改内容类型与场景选择,查询结果被重置 239. 在实时音效设置页面,再次点击播放按钮,音频流开始播放,点击”查询“按钮,结果显示在查询结果内 2410. 在实时音效设置页面,在”音频流音效模式设置“选择框中选择另一种与上次查询结果不同的音效模式,可以听到音频流出现变化 2511. 在实时音效设置页面,再次点击”查询“按钮,查询结果与上一步设置的模式相同 2612. 在实时音效设置页面,点击左上方返回图标,回到主页 2713. 在实时音效设置页面,点击左下方”预置音效查询“按钮,回到预置音效查询页面 28 29### 工程目录 30 31``` 32entry/src/main/ 33|---ets 34|---|---entryability 35|---|---|---EntryAbility.ets 36|---|---pages 37|---|---|---Index.ets // 首页 38|---|---|---PresetEffect.ets // 音效管理页面-预置音效查询 39|---|---|---RealtimeEffect.ets // 音效管理页面-实时音效设置 40|---resources // 静态资源 41|---ohosTest 42|---|---ets 43|---|---|---tests 44|---|---|---|---Ability.test.ets // 自动化测试用例 45library/ 46|---Logger.ts // 日志打印封装 47``` 48 49### 具体实现 50 51- 预置音效查询功能都封装在PresetEffect, 源码参考:[PresetEffect.ets](entry/src/main/ets/pages/PresetEffect.ets) 52 - 在选择框中的类型和场景映射为数字后, 作为之后调用的getAudioEffectInfoArray(content type:number, stream usage:number)的两个入参 53 - 点击”查询“按钮后, 使用audio.getAudioManager()获取音频管理对象audioManager, 再通过audioManager.getStreamManager()对象获取audioStreamManager 54 - 使用audioStreamManager.getAudioEffectInfoArray()获取当前的预置音效模式, api返回数字, 映射后显示在查询结果一栏 55- 实时音效设置功能都封装在RealtimeEffect, 源码参考:[RealtimeEffect.ets](entry/src/main/ets/pages/RealtimeEffect.ets) 56 - 点击播放调用createAudioRenderer(audioRendererOptions),其中的audioRendererOptions使用了在选择框中的类型和场景映射成的数字 57 - 使用audioRenderer.start()方法和audioRenderer.write()进行音频的播放处理, 写入字节的长度由audioRenderer.getBufferSize()接口来决定 58 - 使用resourceManager.getRawFd()接口加载工程里面的resources\rawfile下面的音频文件资源获取对应的文件描述对象fileDescriptor 59 - 使用audioRenderer.pause()方法暂停音频流, 使用audioRenderer.stop()和audioRenderer.release()方法释放当前audioRenderer 60 - 点击查询按钮, 调用audioRenderer.getAudioEffectMode()方法查询当前音频流的音效模式, 显示在查询结果内 61 - 点击”音频流音效模式设置“选项, 调用audioRenderer.setAudioEffectMode()方法,设置要用的音效模式 62 - 通过三个选择框的更新, audioRenderer的state和播放按钮状态的监视, 来触发UI状态的更新 63 - 调用组件的.enabled(enabled: boolean)方法控制其置灰与使能 64 65### 相关权限 66 67无。 68 69### 依赖 70 71不涉及。 72 73### 约束与限制 74 751. 本示例仅支持标准系统上运行,支持设备:RK3568; 762. 本示例仅支持API12版本SDK,SDK版本号(API Version 12 Release),镜像版本号(5.0Release); 773. 本示例需要使用DevEco Studio 版本号(5.0Release)才可编译运行; 78 79### 下载 80 81如需单独下载本工程,执行如下命令: 82 83``` 84git init 85git config core.sparsecheckout true 86echo code/DocsSample/Media/Audio/AudioEffectManagement > .git/info/sparse-checkout 87git remote add origin https://gitee.com/openharmony/applications_app_samples.git 88git pull origin ***(分支名) 89```