【发布时间】:2013-02-14 19:39:04
【问题描述】:
我目前正在尝试制作一个应用程序,其中有触发音频文件的按钮,但这些音频文件是由用户通过文件浏览器活动选择的。听说 MediaPlayer 有延迟等问题,但 SoundPool 有内存限制?
另外,我可以让用户通过从文件浏览器(所选项目)返回一个字符串来设置音频文件,并将其用作音频 API 的路径,无论它是哪个路径?
【问题讨论】:
标签: java android file audio button
我目前正在尝试制作一个应用程序,其中有触发音频文件的按钮,但这些音频文件是由用户通过文件浏览器活动选择的。听说 MediaPlayer 有延迟等问题,但 SoundPool 有内存限制?
另外,我可以让用户通过从文件浏览器(所选项目)返回一个字符串来设置音频文件,并将其用作音频 API 的路径,无论它是哪个路径?
【问题讨论】:
标签: java android file audio button
SoundPool 如果您尝试播放已加载的文件,速度会更快。因为加载文件需要更多时间,并且文件应该更小以获得更好的性能。
但在您的情况下,用户似乎从FileBrowser 中选择要播放的文件,并且文件大小会有所不同,因此加载时间。改用MediaPlayer。
【讨论】:
SoundPool 确实适用于游戏之类的东西,您可以在其中存储许多压缩在 apk 中的音效,而不必处理加载后的延迟解压问题。 SoundPool 还使您能够更改播放速率,这对音效很好。
OnPreparedListener 添加到您的 MediaPlayer 并在调用时移除进度微调器。
SoundPool 比MediaPlayer 快,但它有其自身的局限性。
SoundPool 用于小声音,例如您可以在 onClick() 方法中使用的声音,以便每次用户单击任何位置时都会发出咔哒声,因为这些文件已预加载在内存中不要让 CPU 为它的行为而受苦,这就是为什么 SoundPool 比 MediaPlayer 快的原因。此外,它还可以管理一次渲染的音频流的数量。
MediaPlayer 用于用户可以访问播放、暂停、查找、开始等播放选项的情况。此外,通常对于长音频MediaPlayer 很好,因为您无法在其中加载长音频事先的记忆。您还可以使用MediaPlayer 在互联网上播放音频(如果您打算在将来的版本中这样做,这将很有用)。
在您的情况下,允许用户从文件浏览器活动中播放音频,我建议您选择MediaPlayer。
【讨论】: