Android MediaPlayer - 同时重新访问下载和流媒体

aja*_*n81 7 android android-2.2-froyo android-mediaplayer

之前已经问过这个问题,但是现在有了更新版本的Android(直到Jelly Bean),我想知道是否在同时下载和流式传输文件方面取得了任何进展.从API来看,它本身看起来并不可能,因为这些是可用的setDataSource方法:

void    setDataSource(String path)
Sets the data source (file-path or http/rtsp URL) to use.
void    setDataSource(Context context, Uri uri, Map<String, String> headers)
Sets the data source as a content Uri.
void    setDataSource(Context context, Uri uri)
Sets the data source as a content Uri.
void    setDataSource(FileDescriptor fd, long offset, long length)
Sets the data source (FileDescriptor) to use.
void    setDataSource(FileDescriptor fd)
Sets the data source (FileDescriptor) to use.
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不接受任何类型的InputStream.有些示例使用旧的NPR代理代码在Android应用程序中打开本地Web服务器,远程下载内容,并将请求的数据输出到任何侦听套接字,但该代码已超过2年,仍然用作标准完成这项任务(即使很多人报告存在口吃问题等).

我已经查看了MediaPlayer类并想扩展它以允许这种行为,但是很多实现是通过本机代码完成的,而且从我读过的,不同的设备制造商以不同的方式实现本机音频功能(如果是这样的话) ,我不想碰它!:)).

那么,不丢弃数据的情况下,从远程服务器存储和并发流式传输音频数据(MP3或OGG)的最佳方法是什么?最好是安装Android 2.2及以上版本,但对任何可用API的输入将不胜感激.

Dav*_*ave 3

构建本地代理是您最好的选择。我没有看过 NPR 的例子,但我也做过类似的事情。在这里查看我的答案。