package org.witness.informacam.app.screens.editors; import org.witness.informacam.app.utils.Constants.App; import org.witness.informacam.models.media.IVideoRegion; import org.witness.informacam.app.R; import com.efor18.rangeseekbar.RangeSeekBar; import android.content.Context; import android.media.MediaPlayer; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener;; public class VideoSeekBar extends SeekBar implements OnSeekBarChangeListener { MediaPlayer mp; int thumbInactive = R.drawable.ic_videol_mark_un; int thumbActive = R.drawable.ic_videol_mark_selected; public boolean isEditing = false; RangeSeekBar<Integer> endpointBar; Context context; private final static String LOG = App.TAG; private boolean keepRunning = true; private Runnable progressRunnable = new Runnable() { @Override public void run() { try { if (keepRunning && mp != null) { if (mp.isPlaying()) { setProgress(mp.getCurrentPosition()); } postDelayed(progressRunnable, 1000L); } } catch (IllegalStateException ise) { Log.d(LOG,"player not in proper state",ise); } } }; public VideoSeekBar(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; } public RangeSeekBar<Integer> init(MediaPlayer mp) { this.mp = mp; setMax(mp.getDuration()); post(progressRunnable); setOnSeekBarChangeListener(this); endpointBar = new RangeSeekBar<Integer>(0, mp.getDuration(), context); return endpointBar; } public void update() { if (mp.isPlaying()) { setProgress(mp.getCurrentPosition()); } } public void play() { hideEndpoints(); } public void disable () { keepRunning = false; } public void pause() { } public void showEndpoints(IVideoRegion region) { endpointBar.setVisibility(View.VISIBLE); setVisibility(View.GONE); endpointBar.setSelectedMinValue((int) region.bounds.startTime); endpointBar.setSelectedMaxValue((int) region.bounds.endTime); } public void hideEndpoints() { setVisibility(View.VISIBLE); endpointBar.setVisibility(View.GONE); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if(fromUser) { mp.seekTo(progress); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }