- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将 OpenSL ES 实现到我的项目中,但在这样做时,我的应用程序崩溃了。当我尝试通过调用它的实现方法来实现 outputMixObject 时发生错误:
// Create OutputMixer.
result = (*engineInstance)->CreateOutputMix(engineInstance, &outputMixObject, 1, NULL, NULL);
assert(result == SL_RESULT_SUCCESS);
// Realize the OutputMixer.
result = (*outputMixObject)->Realize(outputMixObject, SL_BOOLEAN_FALSE);
assert(result == SL_RESULT_SUCCESS);
当我运行应用程序进行测试时,我得到以下日志条目:
05-11 13:20:19.736: INFO/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-11 13:20:19.736: INFO/DEBUG(31): Build fingerprint: 'generic/sdk/generic:2.3.1/GSI11/93351:eng/test-keys'
05-11 13:20:19.736: INFO/DEBUG(31): pid: 631, tid: 631 >>> org.test.opensl <<<
05-11 13:20:19.746: INFO/DEBUG(31): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
05-11 13:20:19.746: INFO/DEBUG(31): r0 00000000 r1 00000000 r2 00000000 r3 00000000
05-11 13:20:19.746: INFO/DEBUG(31): r4 82f01bdc r5 8380af69 r6 00000000 r7 418fccc4
05-11 13:20:19.746: INFO/DEBUG(31): r8 bee5f428 r9 418fccbc 10 418fcca4 fp 42596f38
05-11 13:20:19.746: INFO/DEBUG(31): ip 00000000 sp bee5f410 lr 8380af95 pc 82f009ae cpsr 40000030
05-11 13:20:19.986: INFO/DEBUG(31): #00 pc 000009ae /data/data/org.test.opensl/lib/libSLAudio.so
05-11 13:20:19.986: INFO/DEBUG(31): #01 pc 00017d34 /system/lib/libdvm.so
05-11 13:20:19.996: INFO/DEBUG(31): #02 pc 00048ec0 /system/lib/libdvm.so
05-11 13:20:20.007: INFO/DEBUG(31): #03 pc 00041a6a /system/lib/libdvm.so
05-11 13:20:20.007: INFO/DEBUG(31): #04 pc 0004e5dc /system/lib/libdvm.so
05-11 13:20:20.016: INFO/DEBUG(31): #05 pc 0001cf94 /system/lib/libdvm.so
05-11 13:20:20.016: INFO/DEBUG(31): #06 pc 0002209c /system/lib/libdvm.so
05-11 13:20:20.016: INFO/DEBUG(31): #07 pc 00020f90 /system/lib/libdvm.so
05-11 13:20:20.016: INFO/DEBUG(31): #08 pc 0005f50e /system/lib/libdvm.so
05-11 13:20:20.026: INFO/DEBUG(31): #09 pc 00066ed6 /system/lib/libdvm.so
05-11 13:20:20.026: INFO/DEBUG(31): #10 pc 0001cf94 /system/lib/libdvm.so
05-11 13:20:20.057: INFO/DEBUG(31): #11 pc 0002209c /system/lib/libdvm.so
05-11 13:20:20.057: INFO/DEBUG(31): #12 pc 00020f90 /system/lib/libdvm.so
05-11 13:20:20.057: INFO/DEBUG(31): #13 pc 0005f360 /system/lib/libdvm.so
05-11 13:20:20.066: INFO/DEBUG(31): #14 pc 0004b960 /system/lib/libdvm.so
05-11 13:20:20.066: INFO/DEBUG(31): #15 pc 0003eb64 /system/lib/libdvm.so
05-11 13:20:20.066: INFO/DEBUG(31): #16 pc 0003c15c /system/lib/libandroid_runtime.so
05-11 13:20:20.086: INFO/DEBUG(31): #17 pc 0003cf76 /system/lib/libandroid_runtime.so
05-11 13:20:20.086: INFO/DEBUG(31): #18 pc 00008ca2 /system/bin/app_process
05-11 13:20:20.086: INFO/DEBUG(31): #19 pc 00014db8 /system/lib/libc.so
05-11 13:20:20.097: INFO/DEBUG(31): code around pc:
05-11 13:20:20.106: INFO/DEBUG(31): 82f0098c 68116803 32201c22 479868db 1c216a20
05-11 13:20:20.106: INFO/DEBUG(31): 82f0099c 68032201 31189600 230069dd 69a047a8
05-11 13:20:20.106: INFO/DEBUG(31): 82f009ac 68032100 4798681b bd70b002 00001274
05-11 13:20:20.116: INFO/DEBUG(31): 82f009bc 00001228 0000002c 00000002 00000001
05-11 13:20:20.126: INFO/DEBUG(31): 82f009cc 007a1200 00000010 00000010 00000004
05-11 13:20:20.126: INFO/DEBUG(31): code around lr:
05-11 13:20:20.136: INFO/DEBUG(31): 8380af74 29002602 2000d01e 48106008 fcf8f7fd
05-11 13:20:20.136: INFO/DEBUG(31): 8380af84 9300ab05 9a031c39 1c049b0c fa9af7fe
05-11 13:20:20.136: INFO/DEBUG(31): 8380af94 d10f1e06 99051c20 f7fd9a02 1e04fec3
05-11 13:20:20.136: INFO/DEBUG(31): 8380afa4 2603d101 1c20e006 fa30f7fb f0011c20
05-11 13:20:20.136: INFO/DEBUG(31): 8380afb4 602cf8a3 1c30b007 46c0bdf0 00001009
05-11 13:20:20.136: INFO/DEBUG(31): stack:
05-11 13:20:20.136: INFO/DEBUG(31): bee5f3d0 82f01bf4 /data/data/org.test.opensl/lib/libSLAudio.so
05-11 13:20:20.136: INFO/DEBUG(31): bee5f3d4 00000002
05-11 13:20:20.146: INFO/DEBUG(31): bee5f3d8 00000001
05-11 13:20:20.146: INFO/DEBUG(31): bee5f3dc 8380af95 /system/lib/libOpenSLES.so
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3e0 bee5f3f4
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3e4 838089b9 /system/lib/libOpenSLES.so
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3e8 0029cea4 [heap]
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3ec 00000000
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3f0 00000000
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3f4 82f01bfc /data/data/org.test.opensl/lib/libSLAudio.so
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3f8 000001b4
05-11 13:20:20.156: INFO/DEBUG(31): bee5f3fc 82f01bdc /data/data/org.test.opensl/lib/libSLAudio.so
05-11 13:20:20.167: INFO/DEBUG(31): bee5f400 8380af69 /system/lib/libOpenSLES.so
05-11 13:20:20.167: INFO/DEBUG(31): bee5f404 00000000
05-11 13:20:20.167: INFO/DEBUG(31): bee5f408 df002777
05-11 13:20:20.176: INFO/DEBUG(31): bee5f40c e3a070ad
05-11 13:20:20.176: INFO/DEBUG(31): #00 bee5f410 00000000
05-11 13:20:20.176: INFO/DEBUG(31): bee5f414 00000000
05-11 13:20:20.176: INFO/DEBUG(31): bee5f418 bee5f448
05-11 13:20:20.186: INFO/DEBUG(31): bee5f41c 00000000
05-11 13:20:20.186: INFO/DEBUG(31): bee5f420 43d6e7c3 /data/dalvik-cache/data@app@org.test.opensl-2.apk@classes.dex
05-11 13:20:20.186: INFO/DEBUG(31): bee5f424 81d17d38 /system/lib/libdvm.so
05-11 13:20:20.186: INFO/DEBUG(31): #01 bee5f428 41adab28 /dev/ashmem/dalvik-LinearAlloc (deleted)
05-11 13:20:20.186: INFO/DEBUG(31): bee5f42c 0000ce48 [heap]
05-11 13:20:20.186: INFO/DEBUG(31): bee5f430 43d6e7c3 /data/dalvik-cache/data@app@org.test.opensl-2.apk@classes.dex
05-11 13:20:20.186: INFO/DEBUG(31): bee5f434 bee5f508
05-11 13:20:20.186: INFO/DEBUG(31): bee5f438 81d17f00 /system/lib/libdvm.so
05-11 13:20:20.186: INFO/DEBUG(31): bee5f43c 0000ce48 [heap]
05-11 13:20:20.186: INFO/DEBUG(31): bee5f440 bee5f448
05-11 13:20:20.186: INFO/DEBUG(31): bee5f444 81d48ec3 /system/lib/libdvm.so
检查#00 处的程序计数器,表明地址 000009ae 处的方法导致了崩溃。将地址转换为它在我的源文件中出现的行,为我提供了 Realize(outputMixObject, SL_BOOLEAN_FALSE
方法所在的代码行。
请注意,我通过在这个问题上发布的解决方案转换了地址: How to use addr2line in Android
但是,我似乎无法理解它,这可能是由于我对 NDK 或 C/OpenSL ES 总体上缺乏经验......
我在 Android 2.3.1 模拟器上对此进行了测试。前面指定的代码在一个初始化方法中,它为我的应用程序初始化引擎:
JNIEXPORT void JNICALL Java_org_test_opensl_AudioProcessor_createEngine(JNIEnv *env, jobject thiz){
SLresult result;
// Create engine.
result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);
assert(result == SL_RESULT_SUCCESS);
// Realize the engine.
result = (*engineObject)->Realize(engineObject, SL_BOOLEAN_FALSE);
assert(result == SL_RESULT_SUCCESS);
// Get the engine interface, required for the creation of all the other objects.
result = (*engineObject)->GetInterface(engineObject, SL_IID_ENGINE, &engineInstance);
assert(result == SL_RESULT_SUCCESS);
// Create OutputMixer.
result = (*engineInstance)->CreateOutputMix(engineInstance, &outputMixObject, 1, NULL, NULL);
assert(result == SL_RESULT_SUCCESS);
// Realize the OutputMixer.
result = (*outputMixObject)->Realize(outputMixObject, SL_BOOLEAN_FALSE);
assert(result == SL_RESULT_SUCCESS);
}
如果有人能阐明这一点,我们将不胜感激...
最佳答案
result = (*engineInstance)->CreateOutputMix(engineInstance, &outputMixObject, 1, NULL, NULL);
您提供 1 作为 numInterfaces 参数,并为 pInterfaceIds 参数发送 NULL 指针,这将导致在 opensl 内某处的 0x00000000 处出现段错误。
关于android - 使用 OpenSL ES 在 Android NDK 中实现 outputMixObject 会导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965133/
我正在尝试使用 Spark 从 Cassandra 读取数据。 DataFrame rdf = sqlContext.read().option("keyspace", "readypulse
这是代码: void i_log_ (int error, const char * file, int line, const char * fmt, ...) { /* Get erro
我必须调试一个严重依赖 Gtk 的程序。问题是由于某些原因,在使用 GtkWindow 对象时开始出现许多运行时警告。问题是,即使 Gtk 提示严重错误,它也不会因这些错误而中止。我没有代码库的更改历
我正在尝试从已有效编译和链接的程序中检索二进制文件。我已经通过 GL_PROGRAM_BINARY_LENGTH 收到了它的长度。该文档说有两个实例可能会发生 GL_INVALID_OPERATION
我有一个托管在 Azure 环境中的服务。我正在使用控制台应用程序使用该服务。这样做时,我得到了异常: "The requested service, 'http://xxxx-d.yyyy.be/S
我有以下代码,它被 SEGV 信号杀死。使用调试器表明它被 main() 中的第一个 sem_init() 杀死。如果我注释掉第一个 sem_init() ,第二个会导致同样的问题。我试图弄清楚是什么
目前我正在编写一个应用程序(目标 iOS 6,启用 ARC),它使用 JSON 进行数据传输,使用核心数据进行持久存储。 JSON 数据由 PHP 脚本通过 json_encode 从 MySQL 数
我对 Xamarin.Forms 还是很陌生。我在出现的主页上有一个非常简单的功能 async public Task BaseAppearing() { if (UserID
这是我的代码的简化版本。 public class MainActivity extends ActionBarActivity { private ArrayList entry = new Arr
我想弄明白为什么我的两个 Java 库很难很好地协同工作。这是场景: 库 1 有一个类 A,其构造函数如下: public A(Object obj) { /* boilerplate */ } 在以
如果网站不需要身份验证,我的代码可以正常工作,如果需要,则在打印“已创建凭据”后会立即出现 EXC_BAD_ACCESS 错误。我不会发布任何内容,并且此代码是直接从文档中复制的 - 知道出了什么问题
我在使用 NSArray 填充 UITableView 时遇到问题。我确信我正在做一些愚蠢的事情,但我无法弄清楚。当我尝试进行简单的计数时,我得到了 EXC_BAD_ACCESS,我知道这是因为我试图
我在 UITableViewCell 上有一个 UITextField,在另一个单元格上有一个按钮。 我单击 UITextField(出现键盘)。 UITextField 调用了以下方法: - (BO
我有一个应用程序出现间歇性崩溃。崩溃日志显示了一个堆栈跟踪,这对我来说很难破译,因此希望其他人看到了这一点并能为我指出正确的方向。 基本上,应用程序在启动时执行反向地理编码请求,以在标签中显示用户的位
我开发了一个 CGImage,当程序使用以下命令将其显示在屏幕上时它工作正常: [output_view.layer performSelectorOnMainThread:@selector(set
我正在使用新的 EncryptedSharedPreferences以谷歌推荐的方式上课: private fun securePrefs(context: Context): SharedPrefe
我有一个中继器,里面有一些控件,其中一个是文本框。我正在尝试使用 jquery 获取文本框,我的代码如下所示: $("#").click(function (event) {}); 但我总是得到 nu
在以下场景中观察到 TTS 初始化错误,太随机了。 已安装 TTS 引擎,存在语音集,并且可以从辅助功能选项中播放示例 tts。 TTS 初始化在之前初始化和播放的同一设备上随机失败。 在不同的设备(
maven pom.xml org.openjdk.jol jol-core 0.10 Java 类: public class MyObjectData { pr
在不担心冲突的情况下,可以使用 MD5 作为哈希值,字符串长度最多为多少? 这可能是通过为特定字符集中的每个可能的字符串生成 MD5 哈希来计算的,长度不断增加,直到哈希第二次出现(冲突)。没有冲突的
我是一名优秀的程序员,十分优秀!