2

我正在开发媒体播放器,它应该能够播放来自互联网的音频。正如我所注意到的,MediaPlayer播放远程内容时标准非常不稳定:它经常会无缘无故地摔倒或停止播放。另一方面,我想实现媒体缓存。但是我还没有找到任何方法来获取缓冲内容MediaPlayer以将其保存在设备上的某个位置。

所以,我想为自己实现缓冲并MediaPlayer只播放本地媒体。我看到的第一种方法是将足够的媒体下载到文件中,开始播放此文件MediaPlayer并继续下载其余媒体(当没有足够的媒体下载时暂停并处理类似的其他事件)。

问题是:可以同时播放文件并附加它吗?现在我只有IllegalStateExceptions在打电话时MediaPlayersetDataSource

UPD

IllegalStateException是由无效逻辑引起的。MediaPlayer 正在播放。

但另一个问题出现了。

因此,首先下载 5% 的曲目,MediaPlayer 开始播放,播放这 5% 然后停止。是一种继续玩的方法吗?

开始播放很简单:

private void startPlayback(final File file) {
    try {
        FileInputStream fs = new FileInputStream(file);
        mPlayer.setDataSource(fs.getFD());
        mPlayer.prepare();
        mPlayer.start();

    } catch (IOException e) {
        Log.e(e);
    }
}

可能还有其他对这种情况有用的流类型吗?

4

1 回答 1

0

同时追加和播放文件在某些​​设备上有效,而在其他设备上无效。所以,这不是一个解决方案。我尝试了许多方法来实现自己的缓冲和播放(请参阅音频流的最佳实践)并决定使用 JellyBean Media API(因为我正在为 JB-device 开发)。对于 pre-JB 设备,这个问题仍然悬而未决

于 2013-05-16T07:54:42.307 回答