3
Hy, 我在Android中遇到了媒體播放器的困難。基本上我嘗試播放我的SD卡下載(某種流)的歌曲。所以在下載歌曲(20%)後,歌曲開始播放,如果我將它放在這樣的位置,它會一直工作到結束,但如果我試圖在最後找到(超過20%),顯然它不會工作,因爲我尋求的位置是在EOF文件,所以我的方法在Android媒體播放器中重新加載數據源
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(sFilePath);
mp.prepare();
int offset = (progress * mp.getDuration())/100;
if (sCompleted) return;
sLastSeek = offset;
if (offset > sMediaPlayer.getDuration()) {
sMediaPlayer.reset();
sMediaPlayer.setDataSource(sFilePath);
sMediaPlayer.prepare();
} else {
sMediaPlayer.seekTo(offset);
}
哪裏sMediaPlayer是我的媒體播放器內使這個代碼,sFilePath是文件路徑。理論上,我提出的案例應該被涵蓋,但是當我尋求文件長度時,玩家被重置(如代碼所述),但是不玩,並且這是非常尷尬並且超過了我的力量
如果您有任何想法請分享。在此先感謝
您是否嘗試在seekTo()之前調用start,如果您不調用start(),則播放將不會自動恢復。此外,您應該使用異步方法準備稱爲「prepareAsync」的流應用程序。 – Shiv
是的,玩家已經開始了,並且已經嘗試了prepareAsync(),但結果是一樣的。 – George
一個小的添加,我創建了這個應用程序的Android 4.0,因爲我看到在谷歌論壇上,在Android 2.1有seekTo()方法的問題,所以這裏不是這樣的情況了 – George