【问题标题】:How to get active engine object in OpenSLES如何在 OpenSLES 中获取活动引擎对象
【发布时间】:2013-08-01 06:52:33
【问题描述】:

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

当我尝试创建引擎对象时,出现以下错误: slcreateengine 而另一个引擎处于活动状态

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

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

提前感谢任何提示!

【问题讨论】:

    标签: android opensl


    【解决方案1】:

    这让我很吃惊,应用程序在大多数情况下都能正常工作,但我时不时会发现这个错误会导致 openSL 引擎无法使用,但我只在 Android 2.3 上注意到了这一点。

    SL_RESULT_RESOURCE_ERROR 可能由多种原因引发,例如 pthread 错误、内存不足等。但这些会返回适当的错误代码。

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

    【讨论】:

    • 我通过为引擎对象使用静态变量解决了这个问题,因此只要有一个活动引擎,就不会创建新引擎...
    猜你喜欢
    • 2010-12-19
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2018-07-15
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多