适用于Android的OpenSL ES指南-开始使用OpenS

2018-11-09  本文已影响258人  月下溪明

翻译自Getting-Started

本节提供了开始使用OpenSL ES api所需的信息。

将OpenSL ES添加到应用程序中

您可以从C和c++代码中调用OpenSL ES。要将核心的OpenSL ES特性集添加到您的应用程序中,请包括 OpenSLES.h头文件:

#include <SLES/OpenSLES.h>

为了添加OpenSL ES Android扩展,还包括OpenSLES_Android.h头文件:

#include <SLES/OpenSLES_Android.h>

当包括OpenSLES_Android.h头文件时,以下头文件会自动包含:

#include <SLES/OpenSLES_AndroidConfiguration.h>
#include <SLES/OpenSLES_AndroidMetadata.h>

注意:这些头文件不是必需的,但是作为学习API的辅助显示。

构建和调试 build and debug

通过在Android中指定OpenSL ES,您可以在NDK构建系统的makefile之一的Android.mk文件中指定它将其合并到构建中。向Android.mk添加下面一行代码:

LOCAL_LDLIBS += -lOpenSLES

对于健壮的调试,我们建议您检查大多数OpenSL ES api返回的SLresult值。可以使用断言或更高级的错误处理逻辑进行调试;这两种方法都没有提供与OpenSL ES一起工作的优势,尽管其中一种可能更适合于给定的用例。

我们在示例中使用断言,因为它们有助于捕获表明编码错误的不符合实际的条件。对于工程中更可能发生的其他情况,我们使用了显式错误处理。

除了非零结果代码之外,许多API错误会生成日志条目。这样的日志条目可以提供额外的细节,对于Engine::CreateAudioPlayer等相对复杂的api特别有用。

您可以从命令行或Android Studio查看日志。要从命令行检查日志,输入以下命令:

$ adb logcat

要查看来自Android Studio的日志,请选择View >工具Windows > Logcat。有关更多信息,请参阅使用Logcat编写和查看日志

示例代码

我们建议使用支持的和经过测试的示例代码,这些代码可以用作您自己的代码的模型,这些代码位于android-ndk GitHub存储库的audio-echonative-audio文件夹中。

注意:OpenSL ES 1.0.1规范在附录中包含了示例代码(有关详细信息,请参阅Khronos OpenSL ES注册表)。但是,附录B中的示例代码和附录C中的示例代码使用了Android不支持的特性。一些示例还包含印刷错误,或者api可能会更改。提及这些问题时要小心行事;虽然代码可能有助于理解完整的OpenSL ES标准,但它不应在Android中使用。

音频内容

以下是为您的应用程序打包音频内容的几种方法:

注意:为您的应用程序查找或创建有用的音频内容超出了本文的范围。您可以使用web搜索术语,如交互式音频、游戏音频、声音设计和音频编程来定位更多信息。

注意:您有责任确保您可以合法地播放或录制内容。录制内容可能需要考虑隐私问题。

代码示例

这些示例应用程序可以在我们的GitHub页面上找到:

OpenSL ES的Android NDK实现在许多方面不同于OpenSL ES 1.0.1的参考规范。这些差异是您直接从OpenSL ES参考规范复制的示例代码可能无法在Android应用程序中工作的一个重要原因。


有关参考规范和Android实现之间差异的更多信息,请看下一篇 适用于android的OpenSL ES指南-面向Android的OpenSL ES

上一篇 下一篇

猜你喜欢

热点阅读