- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我开始用 C++ 实现我的游戏音频部分,我看到有 2 个可用的音频框架 AAudio ( https://developer.android.com/ndk/guides/audio/aaudio/aaudio.html ) 和 OpenSL ( https://developer.android.com/ndk/guides/audio/opensl/index.html )。
这两者有什么区别?
最佳答案
OpenSL ES
从 Android 2.3 (Gingerbread) 开始的设备都支持 OpenSL。但是,自 Android 4.2(或 4.3?)起就可以使用 OpenSL(高性能音频)的快速混音器,并且并非所有设备都原生支持。
这是什么意思?根据我的观察,当不使用快速混音器时,Java AudioTrack 比 OpenSL 更快(延迟更低)。
当使用快速混音器时,音频延迟实际上很低。为此,您的设备必须支持快速混音器,并且配置参数应该匹配。
另一个需要考虑的问题是 GearVR 上的“crackling”,可能是因为线程优先级改变了。
要使用 OpenSL 实现您的音频,您可能需要引用 NDK 示例,或者在此处更好 https://github.com/Over17/AndroidAudioFastPathSample - 固定为实际使用快速路径。
AAudio
将在今年某个时候发布的 Android 8 Oreo 上得到支持。除非您不希望您的游戏仅与 Android O 兼容,否则您可能不想走这条路。
我还没有太多的实践经验。
双簧管
Oboe 是 Google 开发的一个库,它使用 AAudio 或 OpenSL 作为后端,具体取决于设备支持的内容,并具有包装 API 的 C++ 接口(interface)。使用它而不是直接使用 AAudio 是有意义的。
动机
为什么您真的想要游戏的原生音频部分?如果它不是合成器、专业音频应用程序或 VR 游戏,我真的不会理会原生 C++ 音频而选择 JavaAudioTrack。它可靠、兼容所有设备,并且对于非专业应用程序具有可接受的延迟。
关于android - AAudio 或 OpenSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43754910/
我正在开发一个 Android 应用程序,用于处理基本上是 USB 麦克风的设备。我需要读取输入数据并进行处理。有时,我需要向设备发送数据(4 short * channel 数,通常为 2)并且此数
我开始用 C++ 实现我的游戏音频部分,我看到有 2 个可用的音频框架 AAudio ( https://developer.android.com/ndk/guides/audio/aaudio/a
我对使用 Android Oboe 库访问手机上的两个麦克风很感兴趣。大多数手机都有双麦克风配置,我想同时从两个手机读取数据。我扩展了 Oboe 的“LiveAffect”示例,并尝试了以下操作: 有
由于 Android O 和 AAudio 相对较新,除了 Android NDK API(不如 Android SDK API 好)和 AAudio 的 googlesamples 示例之外,没
我是一名优秀的程序员,十分优秀!