Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Не работает SeekBar в mediplayer

Пытаюсь обновлять 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); }
} }); }

Комментариев нет:

Отправить комментарий