145 Star 1.4K Fork 1.7K

OpenHarmony/applications_app_samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

音频管理(仅对系统应用开放)

介绍

此Sample展示 空间音频API 的用法,相关API包括:

  1. isSpatializationSupported(): 查询系统是否支持空间音频,
  2. isHeadTrackingSupported():查询系统是否支持头动跟踪,
  3. isSpatializationSupportedForDevice(deviceDescriptor: AudioDeviceDescriptor):查询设备是否支持空间音频,
  4. isHeadTrackingSupportedForDevice(deviceDescriptor: AudioDeviceDescriptor):查询设备是否支持头动跟踪,
  5. isSpatializationEnabled():查询空间音频是否开启,
  6. isHeadTrackingEnabled(): 查询头动跟踪是否开启,
  7. setSpatializationEnabled(enable: boolean):设置空间音频开启状态,
  8. setHeadTrackingEnabled(enable: boolean):设置头动跟踪开启状态,

实现效果如下:

效果预览

主页 空间音频界面 空间音频(支持场景化)
index main scene

使用说明

  1. 启动应用,在主页卡片中选择空间音频卡片,进入空间音频演示

  2. 在上部的两个音乐播放器分别可以播放2.0和5.1的音源,体现了音频框架对多声道播放的支持

  3. 下方的空间音频UX,具体的界面会随音频播放的设备而变化:外放及普通耳机只会启用关闭模式;支持空间音频和头动追踪的耳机会使三个按钮全部可选。

  4. 点击三个按钮,分别会启用”关闭空间音频“,”启用空间音频固定模式“,”启用空间音频头动追踪模式“

  5. 当前版本,音频管家判断耳机支持空间音频会显示三态按钮UX,否则页面只有关闭模式使能。

  6. 当空间音频可以使用时,可以通过空间模式卡片选择场景。

工程目录

entry/src/main/ets/
|---pages
|---|---Index.ets                           //首页
|---|---SpatialAudio.ets                    //空间音频页面

相关权限

蓝牙使用权限:ohos.permission.USE_BLUETOOTH 音效管理权限:ohos.permission.MANAGE_SYSTEM_AUDIO_EFFECTS

具体实现

  • 播放立体声多声道音频文件,调用空间音频API查询设置开关状态的内容在SpatialAudio.ets
    • 在createAudioRenderer(options: AudioRendererOptions)入参AudioRendererOptions中增加AudioChannelLayout字段指明音频文件声道布局,以辅助多声道音频文件播放
    • 使用isSpatializationSupported(), isHeadTrackingSupported(), isSpatializationSupportedForDevice(AudioDeviceDescriptor), isHeadTrackingSupportedForDevice(AudioDeviceDescriptor)四个接口查询系统和设备是否支持空间音频和头动跟踪,根据查询结果设置用户UX界面状态:只有系统和设备全都支持某功能,其按钮状态才不会被置灰。
    • 使用isSpatializationEnabled(), isHeadTrackingEnabled()在每次UX界面出现时查询当前空间音频和头动跟踪是否开启,同步在其他app对开关状态的改动
    • 使用setSpatializationEnabled(enable: boolean), setHeadTrackingEnabled(enable: boolean),在点击UX按钮时设置空间音频和头动跟踪状态。
    • 使用setSpatializationSceneType(spatializationSceneType: AudioSpatializationSceneType),设置空间模式
    • 使用getSpatializationSceneType(),查询当前的空间模式

约束与限制

1.本示例仅支持标准系统上运行。

2.本示例为Stage模型,仅支持API12版本SDK。

3.本示例需要使用DevEco Studio 版本号(3.1.1Release)版本才可编译运行。

4.本示例需要使用系统权限的系统接口。使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考替换指南

5.本示例涉及系统接口,需要配置系统应用签名,可以参考特殊权限配置方法 ,把配置文件中的“app-feature”字段信息改为“hos_system_app”,再将“apl”字段信息改为“system_core”。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/SystemFeature/Media/Audio/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openharmony/applications_app_samples.git
git@gitee.com:openharmony/applications_app_samples.git
openharmony
applications_app_samples
applications_app_samples
master

搜索帮助