[英]repeat audio in mediaplayer
for repeat audio in mediaplayer write this code but not work correct : 要在Mediaplayer中重复播放音频,请编写以下代码,但不能正常工作:
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
if (b) {
G.mediaPlayer.seekTo(i);
}
if (i >= G.mediaPlayer.getDuration()) {
if (isRepeat) {
G.mediaPlayer.seekTo(0);
G.mediaPlayer.start();
}else {
G.mediaPlayer.seekTo(0);
G.mediaPlayer.pause();
}
}
}
and for play audio do this : 对于播放音频,请执行以下操作:
public void playSongWithIndex(final int songIndex) {
progressBar.setVisibility(View.VISIBLE);
if (music_exist.exists()) {
playMusicOfflineMode();
} else {
try {
G.mediaPlayer.reset();
G.mediaPlayer.setDataSource(songList.get(songIndex).getFile_128());
G.mediaPlayer.prepareAsync();
G.mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
G.mediaPlayer.start();
seekBar.setMax(G.mediaPlayer.getDuration());
progressBar.setVisibility(View.INVISIBLE);
timer = new Timer();
timer.schedule(new MainTimer(), 0, 1000);
}
});
} catch (IllegalArgumentException | IllegalStateException | IOException e) {
e.printStackTrace();
}
}
}
but repeat audio some times work done and sometimes when seekbar well be over stop and do not work . 但是重复音频有时可以完成工作,有时在搜寻杆停顿下来时不起作用。 please help me how to repeat audio ?
请帮助我如何重复音频?
You can set Media player looping to true,use this code: 您可以使用以下代码将Media Player循环设置为true:
G.mediaPlayer.setLooping(true);
And if you want to know when the player has finished you should use OnCompletionListener like this: 如果您想知道播放器何时结束,则应使用OnCompletionListener,如下所示:
G.mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
}
});
ok for help other developer write my correct answer : 可以帮助其他开发人员写我正确的答案:
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
if (isRepeat) {
G.mediaPlayer.start();
} else {
G.mediaPlayer.seekTo(0);
seekBar.setProgress(0);
current_duration_text.setText("" + utils.milliSecondsToTimer(0));
play_music_img.setImageResource(R.drawable.ic_play_arrow_black_24dp);
}
}
I hope to be useful 我希望有用
i am not sure but i think you can use loop ...for example 我不确定,但我认为您可以使用循环...例如
mMediaPlayer.setLooping(true); mMediaPlayer.setLooping(真);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.