【问题标题】:How can I detect that MediaPlayer object starts playing?如何检测 MediaPlayer 对象开始播放?
【发布时间】:2013-07-23 05:31:05
【问题描述】:

我正在使用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() 来无缝播放mp2 旁边的mp1

mp2 = new MediaPlayer();
mp2.setDataSource(nextItem.getUri());
mp2.setOnCompletionListener(this);
mp2.prepare();
mp1.setNextMediaPlayer(mp2);

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

【问题讨论】:

    标签: android media android-mediaplayer


    【解决方案1】:
    public void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)
    

    这可能对你有用。

    【讨论】:

    • 我最终使用了 VideoView.setOnPreparedListener。这足以解决我的问题(播放按钮可绘制更改为暂停)
    • 感谢您的快速回复。我已经提前准备好下一个 MediaPlayer 对象,请参阅我的附加问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2011-07-17
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多