【发布时间】:2013-08-01 06:52:33
【问题描述】:
我在 Android 2.3 上使用 OpenSLES 时遇到问题。
当我尝试创建引擎对象时,出现以下错误: slcreateengine 而另一个引擎处于活动状态
我知道 OpenSLES for Android(2.3?因为我在 Android 4.x 上没有发现这个问题)支持单个引擎,但我根本不知道另一个引擎来自哪里。
OpenSLES 中是否有任何接口可以检查是否已经存在活动引擎?
提前感谢任何提示!
【问题讨论】:
我在 Android 2.3 上使用 OpenSLES 时遇到问题。
当我尝试创建引擎对象时,出现以下错误: slcreateengine 而另一个引擎处于活动状态
我知道 OpenSLES for Android(2.3?因为我在 Android 4.x 上没有发现这个问题)支持单个引擎,但我根本不知道另一个引擎来自哪里。
OpenSLES 中是否有任何接口可以检查是否已经存在活动引擎?
提前感谢任何提示!
【问题讨论】:
这让我很吃惊,应用程序在大多数情况下都能正常工作,但我时不时会发现这个错误会导致 openSL 引擎无法使用,但我只在 Android 2.3 上注意到了这一点。
SL_RESULT_RESOURCE_ERROR 可能由多种原因引发,例如 pthread 错误、内存不足等。但这些会返回适当的错误代码。
它更可能归结为应用程序架构,是有多个代码位创建引擎对象还是只有一个入口点?您实际上无法从 OpenSL 检索活动引擎对象,因此您必须存储所有指向您传递给 slCreateEngine 方法的引擎对象的指针/引用。在运行 create engine 方法之前检查它们的状态(并关闭引擎)可能是个好主意,因为它可能会触发多次(例如,您的 Activity 的 onCreate / onPause / onResume 方法可能通过触发新创造)。
【讨论】: