我花了很多時間試圖解決這個問題:MediaPlayer OnCompletion爲何第一次播放媒體?
當MediaPlayer第一次被加載並啓動時,它的OnCompletion被調用。這是一個問題,因爲我有一些代碼在上一個軌道完成時跳到下一個軌道。
我已經在OnCompletion監聽器中使用了一個標誌來解決它,但爲什麼會這樣呢?
這個片段是在我服務的play()方法:
mp.setDataSource(mCurrentMediaFile);
mp.prepare();
mDuration = mp.getDuration();
int seek = mDuration * position/1000;
mp.seekTo(seek);
mp.start();
出於某種原因,onCompletion從播放()返回即使它是後正在播放的第一首曲目方法後立即叫服務已創建。
嗨,你發現這裏有什麼問題嗎?我有類似的問題。 OnComletion在mp.reset()之後調用 – vandzi
@vandzi:不,不是。我在onCompletion處理程序中使用了一個解決方法。您也可以檢查時間,以便如果在啓動(或重置)後500毫秒內調用處理程序,則代碼將被跳過。 – marlar