我目前正在尝试制作一个应用程序,其中有触发音频文件的按钮,但这些音频文件是由用户通过文件浏览器 Activity 选择的。我听说 MediaPlayer 有延迟等问题,但 SoundPool 有内存限制?
此外,我是否可以让用户通过从文件浏览器(所选项目)返回一个字符串来设置音频文件,并将其用于音频 API 的路径,无论它是哪个?
最佳答案
SoundPool
比 MediaPlayer
快,但它有其自身的局限性。
SoundPool
用于较小的声音,例如您可以在 onClick()
方法中使用的声音,这样它可以在用户每次点击任何地方时发出点击声,因为这些文件预先加载到内存中,不会让 CPU 受到影响,这就是 SoundPool
比 MediaPlayer
快的原因。此外,它还可以管理一次呈现的音频流的数量。
MediaPlayer
用于用户可以访问播放选项(如播放、暂停、搜索、开始等)的情况。此外,通常用于长音频 MediaPlayer
很好,因为您不能事先在内存中加载长音频。您还可以使用 MediaPlayer
通过 Internet 播放音频(如果您计划在未来的版本中这样做,这将很有用)。
在您的情况下,允许用户播放文件浏览器 Activity 中的音频,我建议您使用 MediaPlayer
。
关于java - 在 Android 中选择 SoundPool 还是 MediaPlayer 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882701/