什么原因在Android中使用OpenSL ES而不是AudioTrack?

Ale*_*tin 9 android android-ndk opensl audiotrack

目前我正在使用AudioTrack传递来自本机层的音频数据来播放.

我似乎可以在本机层使用OpenSL ES而不是Java中的AudioTrack.与AudioTrack相比,OpenSL ES提供了哪些优势?

cod*_*ger 8

OpenSL ES:

好处:

  1. Android中的低级音频API
  2. 设备独立于Android手机
  3. 适合游戏

缺点:

  1. 仅支持2.3+操作系统

AudioTrack:

好处:

  1. 高级API

缺点:

  1. 适用于Java层和Native代码必须调用javalayer来播放音频.

  • 由于OpenSL ES是本机C API,因此调用OpenSL ES的非Dalvik应用程序线程没有与Dalvik相关的开销,例如垃圾收集暂停.但是,除此之外,使用OpenSL ES没有额外的性能优势.特别地,使用OpenSL ES不会导致比平台通常提供的更低的音频延迟,更高的调度优先级等.来自:http://mobilepearls.com/labs/native-android-api/opensles/index.html (2认同)