如何在OpenSLES中获取活动引擎对象

时间:2013-07-31 16:14:27

标签: android opensl

我在Android 2.3上使用OpenSLES时遇到了问题。

当我尝试创建引擎对象时,出现以下错误: slcreateengine而另一个引擎是活跃的

我知道OpenSLES for Android(2.3?因为我在Android 4.x上没有发现这个问题)支持单引擎,但我根本不知道另一个引擎来自哪里。

OpenSLES中是否有任何接口来检查是否已存在活动引擎?

提前感谢任何提示!

1 个答案:

答案 0 :(得分:0)

在大多数情况下应用程序正常运行时,这是令人难以置信的,但我偶尔发现这个错误会导致无法使用的openSL引擎,但我只是在Android 2.3上注意到这一点。

SL_RESULT_RESOURCE_ERROR可能由于各种原因而抛出,例如pthread错误,内存不足等。但这些会返回相应的错误代码。

它更可能归结为应用程序架构,是否存在多个代码来创建引擎对象,或者只有一个入口点?您实际上无法从OpenSL检索活动引擎对象,因此您必须将所有指针/引用存储到您传递给slCreateEngine方法的引擎对象。在运行create engine方法之前检查它们的状态(和关闭引擎)可能是一个好主意,因为它可能会多次触发(例如,您的Activity的onCreate / onPause / onResume方法可能会触发一个新创作)。