Android 是否有更好的方法使用MediaPlayer保存流文件?

Android 是否有更好的方法使用MediaPlayer保存流文件?,android,streaming,save,media-player,Android,Streaming,Save,Media Player,我正在尝试构建一个mediaplayer应用程序,允许用户在线播放mp3文件,并在下载完成后保存文件 看起来MediaPlayer没有提供任何方法来实现这一点,因此现有的解决方案有点不成熟,可以下载到单独的缓冲区,并在缓冲区更新时反复停止/启动MediaPlayer。就我所见,这意味着每次交换缓冲区时音频都会有小的暂停,这不是很好 有人能提出更好的方法吗?你的应用程序是否能与Icecast streams一起工作,还是只播放在线网站上的mp3文件?没有,只是普通的mp3。事实上,我在groove

我正在尝试构建一个mediaplayer应用程序,允许用户在线播放mp3文件,并在下载完成后保存文件

看起来MediaPlayer没有提供任何方法来实现这一点,因此现有的解决方案有点不成熟,可以下载到单独的缓冲区,并在缓冲区更新时反复停止/启动MediaPlayer。就我所见,这意味着每次交换缓冲区时音频都会有小的暂停,这不是很好


有人能提出更好的方法吗?

你的应用程序是否能与Icecast streams一起工作,还是只播放在线网站上的mp3文件?没有,只是普通的mp3。事实上,我在grooveshark开发者的博客中发现了一条相当令人沮丧的帖子:你看过NPR的android应用程序吗?他们使用代理服务器来传输icecast流。现在,我知道你正在寻找普通的香草MP3,但你应该能够应用相同的概念。事实上,它与您在文章中提到的解决方案非常相似,但在实现方面,它没有音频暂停。@Windsurfer-是的,我认为这似乎是最好的解决方案。然而,我真的无法理解icecast NPR代码中发生了什么。看起来它可能真的很简单——类似于,但是有一个额外的步骤,下载的数据被写入文件?我能看到的唯一问题是它取决于MediaPlayer内部缓冲的工作方式:我猜它不会线性下载文件?是的,有很多事情要做,但幸运的是,并不是所有的事情都与MediaPlayer部分有关。它的jist位于StreamProxy.java和PlayBackService.java(修订版121第294行)中。代理服务器实际上先将数据流式传输到缓冲区,然后再将其传送到mediaplayer。您可以在StreamProxy.java(processRequest例程中的修订版121)中看到这一点。说到你的问题,它实际上是按顺序下载的,所以如果你在数据从服务器上出来时保存数据,你就可以保存它了。我希望这有帮助。