Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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 如何仅在可用时使用OpenSL ES_Android - Fatal编程技术网

Android 如何仅在可用时使用OpenSL ES

Android 如何仅在可用时使用OpenSL ES,android,Android,我只想在可用时使用OpenSL`ES,即Android版本>=2.3时 目前我在Android.mk中有 LOCAL_LDLIBS += -lOpenSLES 但如果Android版本=2.3时,我才能动态加载Open SL库吗?可能使用System.loadLibrary?在加载库之前检查API版本,如果低于API 9,则不要加载 例如: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { Sys

我只想在可用时使用OpenSL`ES,即Android版本>=2.3时

目前我在Android.mk中有

LOCAL_LDLIBS    += -lOpenSLES
但如果Android版本<2.3,这将不起作用

只有当Android版本>=2.3时,我才能动态加载Open SL库吗?可能使用
System.loadLibrary

在加载库之前检查API版本,如果低于API 9,则不要加载

例如:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
    System.loadLibrary("xyz");
}
[编辑]


或者,如果希望有一个本机库,动态加载OpenSL ES,可以使用
dlopen
。您可以在stackoverflow上找到一个示例:

但是哪个库适合OpenSL ES?如果您将您的库与OpenSLES链接,没有它就无法工作。因此,您必须构建两个库,一个用于OpenSLES,另一个不支持OpenSLES。但在这种情况下,您最好构建两个独立的APK用于发布。否则,您将提供两个库,其中一个永远不会使用。编辑:您可以通过在AndroidManifest.xml中使用单独的版本代码来实现这一点。看看: