2

インターネットからオーディオを再生できるメディアプレーヤーを開発しています。私が気付いたように、MediaPlayerリモート コンテンツを再生するとき、標準は非常に不安定です。多くの場合、理由もなく再生が停止したり停止したりします。一方で、メディア キャッシングを実装したいと考えています。MediaPlayerしかし、バッファリングされたコンテンツを取得してデバイスのどこかに保存する方法が見つかりませんでした。

そこで、自分でバッファリングを実装して、MediaPlayerローカル メディアのみを再生できるようにしたいと思います。私が最初に目にする方法は、十分なメディアをファイルにダウンロードし、このファイルを介して再生を開始しMediaPlayer、残りのメディアのダウンロードを続行することです (十分なメディアがダウンロードされていない場合は一時停止し、そのような他のイベントを処理します)。

問題は、ファイルの再生と追加を同時に行うことができるかどうかです。今、私は'sIllegalStateExceptionsを呼び出すときだけ持っています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