如果我需要能够使用 AudioTrack、SoundPool 或 MediaPlayer:
- 播放多个持续时间不同的音频文件,例如 5 到 30 秒。
- 独立设置右/左声道的音量。
- 应用音效,例如混响/失真。
那么,我应该使用哪个 API?
另外,我在 AudioTrack API 上找不到太多文档。
有谁知道我在哪里可以找到示例?
最佳答案
SoundPool实际上是一个混音器。
它只能播放短片,无论它们是编码为“ogg”还是“mp3”还是未压缩。 SoundPool 始终将它们存储在未压缩的内存中,并注意限制为 1 MB。如果您的剪辑在内存中太大,SoundPool 将静音,您将收到以下错误:“AudioFlinger 无法创建音轨。状态:-12”
MediaPlayer 播放流并实时解码。
它可以播放更长的剪辑,但它需要处理器能力。
结论:
声池:
= 更适合短音频效果(点击、爆炸、声音循环)。
= 可以同时播放更多 fragment ,并具有音量和速度控制。它还可以循环播放。
媒体播放器
= 更适合背景音乐
= 无法播放已播放的相同声音 fragment 。它需要完全完成剪辑才能再次播放。
注意:
如果剪辑未完全加载和解码,您将无法播放 SoundPool 中的音乐。所以你必须使用 OnLoadCompleteListener(Android 10 或更高版本)来检查它。如果您在解码之前尝试播放声音,SoundPool 将静音。 MediaPlayer 不会遇到这些问题。
关于android - AudioTrack、SoundPool 或 MediaPlayer,我应该使用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527134/