• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 音频管理(仅对系统应用开放)
2
3### 介绍
4
5此Sample展示
6[空间音频API](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.multimedia.audio.d.ts) 的用法,相关API包括:
71. isSpatializationSupported(): 查询系统是否支持空间音频,
82. isHeadTrackingSupported():查询系统是否支持头动跟踪,
93. isSpatializationSupportedForDevice(deviceDescriptor: AudioDeviceDescriptor):查询设备是否支持空间音频,
104. isHeadTrackingSupportedForDevice(deviceDescriptor: AudioDeviceDescriptor):查询设备是否支持头动跟踪,
115. isSpatializationEnabled():查询空间音频是否开启,
126. isHeadTrackingEnabled(): 查询头动跟踪是否开启,
137. setSpatializationEnabled(enable: boolean):设置空间音频开启状态,
148. setHeadTrackingEnabled(enable: boolean):设置头动跟踪开启状态,
15
16实现效果如下:
17
18### 效果预览
19| 主页                                     | 空间音频界面                                  | 空间音频(支持场景化) |
20|----------------------------------------|-----------------------------------------|----------------------|
21| ![index](screenshot/devices/index.png) | ![main](screenshot/devices/spatial.png) |![scene](screenshot/devices/spatialSceneMode.jpg)|
22
23使用说明
24
251. 启动应用,在主页卡片中选择空间音频卡片,进入空间音频演示
26
272. 在上部的两个音乐播放器分别可以播放2.0和5.1的音源,体现了音频框架对多声道播放的支持
28
293. 下方的空间音频UX,具体的界面会随音频播放的设备而变化:外放及普通耳机只会启用关闭模式;支持空间音频和头动追踪的耳机会使三个按钮全部可选。
30
314. 点击三个按钮,分别会启用”关闭空间音频“,”启用空间音频固定模式“,”启用空间音频头动追踪模式“
32
335. 当前版本,音频管家判断耳机支持空间音频会显示三态按钮UX,否则页面只有关闭模式使能。
34
356. 当空间音频可以使用时,可以通过空间模式卡片选择场景。
36
37### 工程目录
38
39```
40entry/src/main/ets/
41|---pages
42|---|---Index.ets                           //首页
43|---|---SpatialAudio.ets                    //空间音频页面
44```
45
46### 相关权限
47
48蓝牙使用权限:ohos.permission.USE_BLUETOOTH
49音效管理权限:ohos.permission.MANAGE_SYSTEM_AUDIO_EFFECTS
50
51### 具体实现
52
53* 播放立体声多声道音频文件,调用空间音频API查询设置开关状态的内容在[SpatialAudio.ets](entry/src/main/ets/pages/SpatialAudio.ets)
54    * 在createAudioRenderer(options: AudioRendererOptions)入参AudioRendererOptions中增加AudioChannelLayout字段指明音频文件声道布局,以辅助多声道音频文件播放
55    * 使用isSpatializationSupported(), isHeadTrackingSupported(), isSpatializationSupportedForDevice(AudioDeviceDescriptor), isHeadTrackingSupportedForDevice(AudioDeviceDescriptor)四个接口查询系统和设备是否支持空间音频和头动跟踪,根据查询结果设置用户UX界面状态:只有系统和设备全都支持某功能,其按钮状态才不会被置灰。
56    * 使用isSpatializationEnabled(), isHeadTrackingEnabled()在每次UX界面出现时查询当前空间音频和头动跟踪是否开启,同步在其他app对开关状态的改动
57    * 使用setSpatializationEnabled(enable: boolean), setHeadTrackingEnabled(enable: boolean),在点击UX按钮时设置空间音频和头动跟踪状态。
58    * 使用setSpatializationSceneType(spatializationSceneType: AudioSpatializationSceneType),设置空间模式
59    * 使用getSpatializationSceneType(),查询当前的空间模式
60
61### 约束与限制
62
631.本示例仅支持标准系统上运行。
64
652.本示例为Stage模型,仅支持API12版本SDK。
66
673.本示例需要使用DevEco Studio 版本号(3.1.1Release)版本才可编译运行。
68
694.本示例需要使用系统权限的系统接口。使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考[替换指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/faqs/full-sdk-switch-guide.md)70
715.本示例涉及系统接口,需要配置系统应用签名,可以参考[特殊权限配置方法](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/security/hapsigntool-overview.md/) ,把配置文件中的“app-feature”字段信息改为“hos_system_app”,再将“apl”字段信息改为“system_core”。
72
73### 下载
74
75如需单独下载本工程,执行如下命令:
76
77```
78git init
79git config core.sparsecheckout true
80echo code/SystemFeature/Media/Audio/ > .git/info/sparse-checkout
81git remote add origin https://gitee.com/openharmony/applications_app_samples.git
82git pull origin master
83```