如何检测MediaPlayer对象何时开始播放?

8
我正在使用setNextMediaPlayer()方法制作无间隙播放音乐播放器。 setNextMediaPlayer()是一种非常好的方法,可以实现无间隙播放,但是我在刷新下一首歌曲信息到布局时遇到了问题。当我使用setNextMediaPlayer()方法时,我不需要使用start()方法开始播放,因此没有办法精确捕获播放开始的时间。 相反,我将我的信息刷新方法放在了onCompletion中,但它有一定限制。
public void onCompletion(MediaPlayer mp) {
    Log.d(TAG, "onCompletion():");
    displayInfoSingle(nextItem);//refresh albumart and song info.
}

有没有监听器可以检测MediaPlayer对象何时开始播放? Tarun Varshney回答后添加: 我正在使用以下方式使用setNextMediaPlayer(),以便在mp1无缝播放完毕后立即播放mp2
mp2 = new MediaPlayer();
mp2.setDataSource(nextItem.getUri());
mp2.setOnCompletionListener(this);
mp2.prepare();
mp1.setNextMediaPlayer(mp2);

mp2 可能已经在播放之前被准备好了,因为使用了 **mp2.prepare();**。所以我想要的时机 onPreparedListener 不会被调用。 有没有其他方法将 mp2 设置为 mp1.setNextMediaPlayer 的参数呢?

1个回答

4
public void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)

这可能对你有帮助。


我最终使用了VideoView.setOnPreparedListener。这足以解决我的问题(播放按钮可绘制更改为暂停)。 - Jay
感谢您的快速回复。我已经提前准备好了下一个MediaPlayer对象,请查看我的附加问题。 - Aerok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接