我一直在研究如何使用可用于 Android 2.3 中进行本地音频的 OpenSL ES 库,但似乎头文件和 600 页的规范 pdf 是唯一可用的文档。
我应该在哪里查找示例、教程或简要概述其功能?
我一直在研究如何使用可用于 Android 2.3 中进行本地音频的 OpenSL ES 库,但似乎头文件和 600 页的规范 pdf 是唯一可用的文档。
我应该在哪里查找示例、教程或简要概述其功能?
你还可以查看 Victor Lazzarini 的音频编程博客,其中有一个 Android 部分:http://audioprograming.wordpress.com/category/android/
在那里,你会找到一些可行的示例,它们对我来说非常有用,让我开始使用 OpenSL,并且可以作为开发使用 NDK 的音频应用的基础。
此外,不要忽视规范文档,它并不是很长,前面部分不超过 50 页,可以帮助你了解如何运作,其余部分则供参考使用。注意,Android OpenSL 实现中的某些内容与规范不同:有关更多信息,请查看 your-ndk-directory/docs/opensles/index.html。
经过一番搜索,我找到了更有价值的信息:
如果你只想播放单个音频文件或记录一个短暂的快照(在单个缓冲区中),那么NDK项目就足够了。
我看了一下《Android NDK初学者指南》,它确实没有比示例NDK项目更多的解释。
但是,对于这些应用程序,您可能最好选择其中一个Java API。在我看来,为它们使用OpenSL ES有点过度设计。将会有更多的代码需要编写,而且没有实际收益。
OpenSL的优点在于那些对低延迟(当这些可用时)的音频合成和处理感兴趣的人,并且为此,您可能想要流式传输音频,而不是播放/记录单个缓冲区。该书章节和NDK示例都不会教您如何做到这一点。音频编程博客中的博文对于这些目的来说更有信息量。
Victor Lazzarini的音频编程博客中的Android部分是一个很好的开始。http://audioprograming.wordpress.com/category/android/
而且这篇博客还提供了可直接下载的示例代码,这是最受欢迎的部分。
构建和运行非常简单。对我来说,我需要以下步骤才能构建和运行此示例:
安装SWIG: swig-3.0.2。按照以下三个步骤进行安装:
$ configure $ make $ sudo make install.
$ android update project --name opensl-es-audiotest --target 1 --path ./
然后,您可以将其安装到设备上并进行测试:
$ adb install bin/opensl-es-audiotest-debug.apk