Sag*_*hah 7 android media-player android-mediaplayer android-seekbar
我已经设定:
mSeekBar.setMax(mp.getDuration()); // 8480
Run Code Online (Sandbox Code Playgroud)
完成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???
}
}
});
Run Code Online (Sandbox Code Playgroud)
那么,为什么MediaPlayer的当前位置永远不会达到音频文件的总持续时间?
或者在技术上我们可以说:
为什么不?
mediaPlayer.getCurrentPosition()==mediaPlayer.getDuration()
Run Code Online (Sandbox Code Playgroud)
为什么总是
OnCompletion侦听器中的mediaPlayer.getCurrentPosition()<mediaPlayer.getDuration()?
例如:
我有一个播放符号来启动播放器.现在,当我按下播放符号时,它将转换为暂停符号.
我有一个audiodfile的Maxduration.
现在我想在完全播放音频文件时将暂停符号转换为播放符号.所以我正在做的是检查:
if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration())
{
// Convert Imagview from Pause to Play
// But never get called
}
Run Code Online (Sandbox Code Playgroud)
如果您需要通过检查currentPoision持续时间来完成某些任务,您可以执行以下技巧:
if(mediaPlayer.getDuration()-mediaPlayer.getCurrentPosition()<1000){//milliseconds
new Handler().postDelayed(
new Runnable() {
@Override
public void run() {
// Convert Imageview from Pause to Play
}
},1000);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |