我已经设定:
mSeekBar.setMax(mp.getDuration()); // 8480
完成 Audiofile 后,我得到的是:
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer)
{
Log.e("onComplete>>", ""+mediaPlayer.getCurrentPosition());
// mediaPlayer.getCurrentPosition() = 8192
Log.e("getDuration", ""+mediaPlayer.getDuration());
// mediaPlayer.getDuration() = 8480
if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration())
{
// Why never get called???
}
}
});
那么,为什么 MediaPlayer 的当前位置永远不会达到音频文件的总时长?
或者从技术上讲,我们可以这样说:
为什么不?
mediaPlayer.getCurrentPosition()==mediaPlayer.getDuration()
为什么总是
MediaPlayer.getCurrentPosition() < mediaPlayer.getDuration() 在 OnCompletion 监听器中?
例如:
我有一个用于启动播放器的播放符号。现在,当我按下播放符号时,它将转换为暂停符号。
我有一个 Maxduration 的 audiodfile。
现在我想在音频文件完全播放时将暂停符号转换为播放符号。所以我正在做的是检查:
if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration())
{
// Convert Imagview from Pause to Play
// But never get called
}