7

以前有人问过这个问题,但现在有了较新版本的 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.

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

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

那么,在不丢弃数据的情况下,存储和同时流式传输来自远程服务器的传入音频数据(MP3 或 OGG)的最佳方法是什么?最好使用 Android 2.2 及更高版本,但对任何可用 API 的输入将不胜感激。

4

1 回答 1

3

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

于 2013-09-05T05:20:15.657 回答