Пытаюсь обновлять seekBar при проигрывание , мелодии беру из массива, все воспроизводиться и работает корректно, не могу обновлять seekBar,т.е при перемещении бара мелодия повторяется заново и секкбар не перемещается.
Вызываю в:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootViewB = inflater.inflate(R.layout.fragment2, container, false);
seekBar = (SeekBar)rootViewB.findViewById(R.id.sbar);
View rootView = inflater.inflate(R.layout.fragment, container, false);
startMediaPlayer();
setSeekBar();
public void startMediaPlayer(){
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
/////////////
mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()
{
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
seekBar.setMax(mp.getDuration());
seekBar.setSecondaryProgress(mp.getDuration() / 100*percent);
seekBar.setProgress(mp.getCurrentPosition());
* }
});
}
Ответ
Вообщем, не знаю насколько это правильно с точки зрения программирования,все работает:
private Runnable onEverySecond=new Runnable() {
@Override
public void run() {
if(seekBar != null) {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
}
if(mediaPlayer.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
public void startMediaPlayer(){
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(mp.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
mediaPlayer.start();
}
});
}
public void setSeekBar(){
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBars, int progress, boolean fromUser) {
if(mediaPlayer != null && fromUser){
mediaPlayer.seekTo(progress);
}
}
});
}
Комментариев нет:
Отправить комментарий