Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓OpenAL?_Android_Audio_Android Ndk_Openal_Alsa - Fatal编程技术网

Android 安卓OpenAL?

Android 安卓OpenAL?,android,audio,android-ndk,openal,alsa,Android,Audio,Android Ndk,Openal,Alsa,有没有人为Android构建了OpenAL,或者在系统上找到了它的共享库?这似乎是对任何类型游戏的明显需求,但却没有资源。据我所知,Android java声音库似乎无法改变音高,因此似乎需要OpenAL。我知道OpenAL软件可以建立在ALSA之上,但我不确定是否有人能做到这一点,我相信这将需要我一个月的时间 如果在没有OpenAL的Android上有关于声音操作的好指南,那也没关系。只是OpenAL是游戏制作者的一种标准,将我的数千行代码移植到这个系统会很好,我认为这是NDK的重点,然后我进

有没有人为Android构建了OpenAL,或者在系统上找到了它的共享库?这似乎是对任何类型游戏的明显需求,但却没有资源。据我所知,Android java声音库似乎无法改变音高,因此似乎需要OpenAL。我知道OpenAL软件可以建立在ALSA之上,但我不确定是否有人能做到这一点,我相信这将需要我一个月的时间

如果在没有OpenAL的Android上有关于声音操作的好指南,那也没关系。只是OpenAL是游戏制作者的一种标准,将我的数千行代码移植到这个系统会很好,我认为这是NDK的重点,然后我进入它,发现系统上几乎没有共享库访问


谢谢。。我希望我自己能够在不成为java专家的情况下进行移植。到目前为止真的不喜欢NDK

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

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

即使是计划中的,也不支持低延迟音频;这里有一个这样的bug:

如果它与你相关,就给它加上星星;如果有足够的明星,谷歌可能会倾听


编辑:Android 4.0+中有低延迟音频,OpenSL现在可用。查看此页面和链接页面:也可以查看OpenSL上的NDK指南。

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

如果您希望将目标设备设置为<2.3,可能仍有帮助


干杯。

NDK音频现在有几个选项:

  • 它不是OpenAL,但OpenSL ES 1.0.1是NDK的官方部分,API级别为9(2.3)。更多信息

  • git主机中有OpenSL ES后端(从1.13版起未发布)。然而,它现在在Android上被破坏了,因为它是为OpenSL ES 1.1编写的,而不是为1.0.1编写的。看看有没有解决办法

  • 正如前面的回答中提到的,OpenAL软件的JNI后端链接到2.3之前的Android平台上,并被描述为OpenAL的唯一选项。然而,这是一个过时的OpenAL软件分支-我已经将后端更新为最新版本以及OpenSL ES 1.0.1修复程序。还包括一个声称提供更好的性能和更少的延迟


  • 您无法从NDK以任何受支持的方式访问低级声音api(ALSA等),因此不,您不能这样做。因此,唯一可以使用的api是一个java:android.media?不,您还可以在java中使用soundpool和audiotrack(低级),以及现在在本机代码中使用opensl es。Woops,很抱歉,我想你是说mediaplayer、soundpool和audiotrack是android.media的一部分。尽管您仍然可以使用opensl es,但前提是您愿意以2.2+为目标。另外,据我所知,如果您愿意使用JNI从java、从您的本机代码调用它,audiotrack确实为您提供了相当低级别的音频访问权限。编辑后,我将+1。这里积极鼓励在老问题上发布(好的)答案,这就是为什么会有。为了扩展Martin的答案,他还提供了一些高级使用示例。