我已经设定:
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监听器?
例如:
我有一个播放符号来启动播放器。现在,当我按播放符号时,它将转换为暂停符号。
我有一个audiodfile的Maxduration。
现在我想在完全播放音频文件时将暂停符号转换为播放符号。 所以我正在做的是检查:
if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration())
{
// Convert Imagview from Pause to Play
// But never get called
}
答案 0 :(得分:0)
如果您需要通过检查currentPoision
到持续时间来完成某项任务,您可以执行以下操作:
if(mediaPlayer.getDuration()-mediaPlayer.getCurrentPosition()<1000){//milliseconds
new Handler().postDelayed(
new Runnable() {
@Override
public void run() {
// Convert Imageview from Pause to Play
}
},1000);
}