Android Video Player progress processing and android progress
Add SeekBar in the previous project
<SeekBar android:id="@+id/sb" android:layout_width="match_parent" android:layout_height="wrap_content" />
The related code is as follows:
Public class MainActivity extends Activity implements OnClickListener {private EditText et_path; private Button bt_play, bt_replay, bt_pause, bt_stop; private SurfaceView sv; private SeekBar sb; private MediaPlayer mediaPlayer; private int currentPosition; private Boolean isplaying; @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. Layout. activity_main); sv = (SurfaceView) findViewById (R. id. sv); et_path = (EditText) findViewById (R. id. et_path); bt_play = (Button) findViewById (R. id. bt_play); bt_replay = (Button) findViewById (R. id. bt_replay); bt_pause = (Button) findViewById (R. id. bt_pause); bt_stop = (Button) findViewById (R. id. bt_stop); sb = (SeekBar) findViewById (R. id. sb); sb. setOnSeekBarChangeListener (new OnSeekBarChangeListe Ner () {@ Override public void onStopTrackingTouch (SeekBar seekBar) {int process = seekBar. getProgress (); if (mediaPlayer! = Null & mediaPlayer. isPlaying () {mediaPlayer. seekTo (process); }}@ Override public void onStartTrackingTouch (SeekBar seekBar) {// TODO Auto-generated method stub} @ Override public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser) {// TODO Auto-generated method stub}); bt_pause.setOnClickListener (this); bt_play.setOnClickListener (this); bt_replay.setOnClickListener (th Is); bt_stop.setOnClickListener (this); sv. getHolder (). addCallback (new Callback () {@ Override public void surfaceDestroyed (SurfaceHolder holder) {System. out. println ("holder destroyed"); if (mediaPlayer! = Null & mediaPlayer. isPlaying () {currentPosition = mediaPlayer. getCurrentPosition (); stop () ;}@override public void surfaceCreated (SurfaceHolder holder) {System. out. println ("holder created"); if (currentPosition> 0) {play (currentPosition) ;}@override public void surfaceChanged (SurfaceHolder holder, int format, int width, int height) {System. out. println ("the holder size has changed") ;}}) ;}@ Override p Ublic void onClick (View v) {switch (v. getId () {case R. id. bt_play: play (0); break; case R. id. bt_replay: replay (); break; case R. id. bt_stop: stop (); break; case R. id. bt_pause: pause (); break; default: break;}/*** pause music */private void pause () {if ("continue ". equals (bt_pause.getText (). toString (). trim () {mediaPlayer. start (); bt_pause.setText ("pause"); return;} if (mediaPlayer! = Null & mediaPlayer. isPlaying () {mediaPlayer. pause (); bt_pause.setText ("continue"); return ;}}/*** replay */private void replay () {if (mediaPlayer! = Null & mediaPlayer. isPlaying () {mediaPlayer. seekTo (0); return;} play (0);}/*** stop playing music */private void stop () {if (mediaPlayer! = Null & mediaPlayer. isPlaying () {mediaPlayer. stop (); mediaPlayer. release (); // remember to release the resource mediaPlayer = null; bt_play.setEnabled (true); isplaying = false ;}/ *** play music */private void play (final int currentPosition) {String path = et_path.getText (). toString (). trim (); try {mediaPlayer = new MediaPlayer (); mediaPlayer. setAudioStreamType (AudioManager. STREAM_MUSIC);/* Set Video to SurfaceHolder */ MediaPlayer. setDisplay (sv. getHolder (); mediaPlayer. setDataSource (path); mediaPlayer. prepare (); // might take long! (For buffering, etc) // mediaPlayer. prepareAsync (); mediaPlayer. setOnPreparedListener (new OnPreparedListener () {@ Override public void onPrepared (MediaPlayer mp) {mediaPlayer. start (); int max = mediaPlayer. getDuration (); sb. setMax (max); mediaPlayer. seekTo (currentPosition); new Thread () {public void run () {isplaying = true; while (isplaying) {int position = mediaPlayer. getCurrentPosition (); sb. setProgress (position); try {Thread. sleep (500);} catch (InterruptedException e) {// TODO Auto-generated catch block e. printStackTrace ();}}};}. start () ;}}); mediaPlayer. setOnCompletionListener (new OnCompletionListener () {@ Override public void onCompletion (MediaPlayer mp) {bt_play.setEnabled (true) ;}}); bt_play.setEnabled (false);} catch (Exception e) {Toast. makeText (this, "playback failed", 0 ). show (); e. printStackTrace ();}}}