我想编写一个应用程序,通过标准的Android mediaplayer
从远程http源播放逐渐下载的音频,但我也希望将音频文件的副本保存到SD卡。事实证明这是一个难题:
1)我们将uri
传递给媒体播放器,然后在播放期间“切断循环”,因为mediaplayer
直接与遥控器对话,因此无法访问正在播放的字节
2)Android似乎没有选择将下载的位写入磁盘,也没有用于访问下载数据的回调
3)虽然可以将网络服务器嵌入到我们的应用中(请参阅nanohttpd
),然后将localhost
uri传递到mediaplayer
,这似乎是一个可怕的kludge
我错过了一个更简单的方法吗?这必须是一个解决的问题?!
编辑:也许是一个更简单的问题:如果内存中包含音乐的缓冲区,我可以播放吗?我必须将它写入磁盘或使用Web服务器让mediaplayer
来播放它似乎很荒谬。
答案 0 :(得分:1)
是的,有办法做到这一点。创建本地代理服务器并将MediaPlayer连接到该服务器。有关详细信息,请参阅我的回答here。
编辑:在我的电脑而不是手机上查看此内容后,我注意到您提到在您的应用中嵌入服务器。如果操作得当,它重量轻,直观。它将使您可以访问原始数据。我认为它根本不是一个“kludge”。