我在 Android 2.3 上使用 OpenSLES 时遇到问题。
当我尝试创建引擎对象时,出现以下错误: slcreateengine while another engine is active
我知道 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 方法可能通过触发新创造)。