30

有没有人为 Android 构建过 OpenAL,或者在系统上找到了它的共享库?这似乎是对任何类型游戏的明显需求,但那里没有资源。据我所知,Android java 声音库似乎无法进行音高更改,因此似乎需要 OpenAL。我知道 OpenAL Soft 可以构建在 ALSA 之上,但我不确定是否有人这样做,而且我敢肯定这需要我一个月的时间。

如果在没有 OpenAL 的情况下在 Android 上的声音处理方面有很好的指南,那也很好。只是 OpenAL 是游戏制作者的一种标准,将我的数千行移植到这个系统会很好,在我深入研究之前,我认为这是 NDK 的重点,发现几乎没有系统上的共享库访问。

谢谢.. 我希望我自己可以在不成为 Java 专家的情况下进行移植。到目前为止真的不喜欢NDK!

4

4 回答 4

35

现在有几个选项可用于 NDK 音频:

  1. 它不是 OpenAL,但 OpenSL ES 1.0.1 是 API 级别 9 (2.3) 的 NDK 的官方部分。更多信息在这里

  2. OpenAL Soft在其 git master 中有一个 OpenSL ES 后端(自 1.13 版起未发布)。然而,此时它在 Android 上已损坏,因为它是为 OpenSL ES 1.1 而不是 1.0.1 编写的。请参阅此提交以获取修复。

  3. 如前一个答案中所述,OpenAL Soft 的 JNI 后端链接到此处并在此处描述为 OpenAL 在 2.3 之前的 Android 平台上的唯一选项。然而,这是 OpenAL Soft 的一个过时的分支——我已经将后端更新到了 github repo 上的最新版本以及 OpenSL ES 1.0.1 修复。还包括一个未经测试的可选补丁,声称可以提供更好的性能和更少的延迟。

于 2011-09-21T20:20:21.650 回答
8

就在 Google 宣布 3D 音频将包含在 Android 2.3 中之前,我设法为 Android 编译了 OpenAL,并将其打包为共享对象。

http://pielot.org/2010/12/14/openal-on-android/

如果您想定位 < 2.3 的设备,可能仍然会有所帮助。

干杯。

于 2010-12-16T19:42:04.917 回答
5

OpenSL 计划用于未来的 Android 版本;OpenAL 不可用,低级硬件禁止您在 NDK 中执行任何操作,因此您无法安全地自己构建它。

甚至没有计划支持低延迟音频;这里有一个错误:

http://code.google.com/p/android/issues/detail?id=3434

如果它与您相关,请加注星标;如果得到足够的星星,也许谷歌会听。

编辑:Android 4.0+ 中有低延迟音频,OpenSL 现在可用。请参阅此页面和链接页面: http: //source.android.com/devices/audio/latency.html另请参阅 OpenSL 上的 NDK 指南。

于 2010-10-29T23:34:47.353 回答
-3

您可以使用 NDK 构建 OpenAL 并将其与您的 APK 打包在一起。这样您就可以从本机代码访问它。

于 2010-04-06T18:42:32.543 回答