applications_app_samples/code/SystemFeature/Media/Audio
yeyedeshen 7e4186d7d2 修复Gamepuzzle、Audio、ScreenRecord编译报错问题
Signed-off-by: yeyedeshen <yangxin181@huawei.com>
2024-07-16 16:16:30 +08:00
..
AppScope 空间音频2.0支持场景化 2024-04-11 21:18:18 +08:00
entry 防止crash 2024-04-12 15:24:20 +08:00
hvigor 修复Gamepuzzle、Audio、ScreenRecord编译报错问题 2024-07-16 16:16:30 +08:00
screenshot/devices 空间音频2.0支持场景化 2024-04-11 21:18:18 +08:00
.gitignore 【sample】演示空间音频使用 2023-12-06 11:21:18 +08:00
build-profile.json5 添加runtimeOS修复编译报错 2024-07-08 11:59:09 +08:00
hvigorfile.ts 更新证书 2024-01-30 19:27:35 +08:00
hvigorw 【sample】演示空间音频使用 2023-12-06 11:21:18 +08:00
hvigorw.bat 【sample】演示空间音频使用 2023-12-06 11:21:18 +08:00
oh-package.json5 【sample】演示空间音频使用 2023-12-06 11:21:18 +08:00
ohosTest.md 更改相关自动化测试用例 2024-01-29 20:46:55 +08:00
README.md 空间音频2.0支持场景化2 2024-04-11 21:20:46 +08:00

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

介绍

此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