README.md
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```