我正在開發媒體播放器,它應該能夠播放來自Internet的音頻。正如我注意到的,在播放遠程內容時,標準MediaPlayer
是相當不穩定的:它經常掉落或停止播放,沒有任何理由。另一方面,我想實現媒體緩存。但我還沒有找到任何方法從MediaPlayer
獲取緩衝內容以將其保存在設備的某個位置。播放媒體文件並在同一時間追加
所以,我想爲自己實施緩衝並使MediaPlayer
只播放本地媒體。我看到的第一種方式是將足夠多的媒體下載到文件中,通過MediaPlayer
開始播放此文件,並繼續下載其餘媒體(當沒有足夠的媒體下載並處理其他事件時暫停)。
問題是:可以播放文件並在同一時間追加它?現在我只叫MediaPlayer
的setDataSource
UPD
IllegalStateException
被無效邏輯時引起有IllegalStateExceptions
。 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);
}
}
可能存在這種情況下有用的其它流類型?
是你在setDataSource方法之前發佈mediaplayer ....因爲文件處於下載模式,所以它可能已經被改變了......這就是爲什麼你得到IllegalstateException – 2013-04-29 08:35:09
謝謝!這是應用程序邏輯問題。沒有發佈,但類似。現在還有另一個問題 – darja 2013-04-29 09:53:49