在Android MediaPlayer中使用缓冲来播放mp3

时间:2018-02-08 17:47:33

标签: android stream buffering

我在互联网上有一个mp3文件的网址,想在我的应用程序中播放它。现在我这样做:

private void processPlayRequest(String url) {
    if (mPlayer != null) {
        mPlayer.stop();
        mPlayer.reset();
        mPlayer.release();
    }

    tryToGetAudioFocus();
    if (mAudioFocus == AudioFocus.Focused) {
        mPlayer = MediaPlayer.create(this, Uri.parse(url));
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

        mPlayer.setOnPreparedListener(this);
        mPlayer.setOnCompletionListener(this);
        mPlayer.setOnErrorListener(this);
    }
}

它可以工作,但似乎没有缓冲,即只有在整个mp3文件被下载后才开始播放。我希望在可以提高性能的同时开始播放。所以我需要使用缓冲。有可能实现吗?

1 个答案:

答案 0 :(得分:0)

您需要添加MediaPlayer.OnPreparedListener,然后调用MediaPlayer.prepareAsync(),然后从onPrepared()回调中调用start()。

你正在以不正确的方式调用start,reset,release。如果您要立即重置并释放,为什么还要开始呢?

关于如何在开发人员docs中使用该类,有一些相当不错的文档。