版本

menu_open
目标平台:
Wwise SDK 2023.1.9
有关 OpenHarmony 的特定信息

此页面包含有关如何将 Wwise SDK 用于 OpenHarmony 平台的特定信息。

授权要求

在下载 OpenHarmony SDK 之前,必须先注册项目(详见注册项目)以获取授权。在项目通过审批后,Audiokinetic Launcher 的 Deployment Platforms 列表中会显示 OpenHarmony 选项。

平台要求

若要结合 OpenHarmony 平台使用 Wwise SDK,必须安装 HarmonyOS NEXT SDK。如需了解所需的版本,请参阅相应版本的 OpenHarmony 版本说明

若要在 OpenHarmony 上构建示例插件,需在 HarmonyOS NEXT SDK 中包含 CMake 工具。

OpenHarmony ABI

Wwise SDK 预编译库采用以下方式编译:

  • arm64-v8a

后续可添加针对其他 ABI 的预编译支持。

部署和加载 SoundBank

您可以通过两种方式在 OpenHarmony 上部署和加载 SoundBank。

将 SoundBank 作为 OpenHarmony 应用程序包 (HAP) 的一部分进行部署

在构建 HAP 前,将 SoundBank 和媒体文件放在运行声音引擎的 OpenHarmony 模块的 src/main/resources/rawfile 子文件夹中。此位置的文件会在构建时打包到 HAP 中。

在此之后,应用程序必须在原生代码中执行以下操作:

  1. 使用 OpenHarmony 原生 API 创建 NativeResourceManager 对象。
  2. SDK/samples/SoundEngine/OpenHarmony 目录下的示例 Low-Level I/O 挂钩 CAkDefaultIOHookDeferred 实例化。
  3. 调用 CAkDefaultIOHookDeferred::UseResourceManager() 并传递步骤 1 中创建的资源管理器对象。
  4. 调用 CAkDefaultIOHookDeferred::AddBasePath() 并传递相对于 rawfile 目录的路径(前缀 rawfile://)。比如,若将 SoundBank 放在了 src/main/resources/rawfile/StreamingAssets/Wwise 中,则指定基本路径 rawfile://StreamingAssets/Wwise

备注: 若不使用 Wwise SDK 中包含的示例 Low-Level I/O 挂钩,则须自行实现 I/O 挂钩以便使用 OpenHarmony 的 rawfile API 读取打包的文件。

因为 OpenHarmony 的 rawfile API 是只读的,所以带 rawfile:// 前缀的基本路径也是只读的。示例 Low-Level I/O 挂钩不会尝试在写入模式下打开这些位置的文件。

直接将 SoundBank 部署到 OpenHarmony POSIX 文件系统

SoundBank 可部署到设备文件系统中的任何位置。您可以通过 CAkDefaultIOHookDeferred::AddBasePath() 添加任意数量的目录。所有带 rawfile:// 前缀的基本路径都会被解释为标准 POSIX 文件系统路径。相应的文件使用标准 POSIX 文件 I/O 函数读写。对于必须在写入模式下打开的文件,只能使用这些路径。

I/O 系统会按照相反顺序搜索给定路径下的文件(从最近添加的路径开始)。

有关如何实现 Low-Level I/O 子模块的说明,请参阅 Low-Level I/O 章节。

Handling application lifecycle events

Audio interruptions

Wwise handles audio interruptions (such as incoming calls or alarms) automatically. Wwise suspends the sound engine during an interruption and reactivates it when the interruption ends.

Transitions to background

By default, Wwise keeps playing back audio even when the app loses focus and is hidden from view. To stop playback when the app is out of focus, call AK::SoundEngine::Suspend when the app is hidden, and AK::SoundEngine::WakeupFromSuspend when the app is shown. You can register Event listeners for these transitions from ArkTS through the Window module, or from C/C++ using the Xcomponent module.

Refer to Integration Demo 示例 for an example of how to handle Xcomponent's SurfaceHide and SurfaceShow callbacks to suspend and resume the sound engine.

在 OpenHarmony 设备上使用 Communications 模块

为了保证成功初始化 Communications 模块,请确保应用程序模块请求获取 ohos.permission.INTERNET 权限。在操作系统授予此权限后,Communications 模块便可打开相应的 TCP 和 UDP 端口以允许与 Wwise Profiler 进行通信。

有关如何初始化 Communications 模块的信息,请参阅 通信初始化 章节。

在 OpenHarmony 设备上使用 Wwise Motion

为了保证 Wwise Motion 能够正常工作,请确保应用程序模块请求获取 ohos.permission.VIBRATE 权限。在操作系统授予此权限后,Wwise Motion 便可触发设备发出相应的振动效果。

注意,OpenHarmony 设备的振动功能不怎么精细,所以无法提供精妙的高分辨率触觉反馈。在此平台上,最好将 Wwise Motion 用于固定强度的振动效果和短促的 UI 触觉反馈脉冲。

OpenHarmony 版本说明


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅