The logic of a video playback under Android

Source: Internet
Author: User

The logic of a video playback under Android is just part of the activity logic source


Demoactivity:



public class Demoactivity extends Activity implements Onclicklistener {

EditText Et_path;
Button Bt_start;
Button Bt_pause;
Button Bt_restart;
Button Bt_stop;
Surfaceview SV;
Surfaceholder Holder;
MediaPlayer player;

@Override
protected void OnCreate (Bundle savedinstancestate) {
Super.oncreate (savedinstancestate);
Setcontentview (R.layout.main);

Et_path = (EditText) This.findviewbyid (R.id.et_path);
Bt_start = (Button) This.findviewbyid (R.id.bt_start);
Bt_pause = (Button) This.findviewbyid (r.id.bt_pause);
Bt_restart = (Button) This.findviewbyid (R.id.bt_restart);
Bt_stop = (Button) This.findviewbyid (r.id.bt_stop);
SV = (Surfaceview) This.findviewbyid (R.ID.SV);

Bt_start.setonclicklistener (this);
Bt_pause.setonclicklistener (this);
Bt_restart.setonclicklistener (this);
Bt_stop.setonclicklistener (this);

Holder = Sv.getholder ();

Sets the way the contents of the buffer are pushed to holder
Holder.settype (surfaceholder.surface_type_push_buffers);
Holder.addcallback (New Myholdercallback ());

}

/**
* Statement period for surface
* @author Administrator
*
*/
Private class Myholdercallback implements surfaceholder.callback{

@Override
public void surfacechanged (Surfaceholder arg0, int arg1, int arg2,
int Arg3) {
TODO auto-generated Method Stub

}

@Override
public void surfacecreated (Surfaceholder arg0) {
TODO auto-generated Method Stub

}

@Override
public void surfacedestroyed (Surfaceholder arg0) {
TODO auto-generated Method Stub

}

}

@Override
public void OnClick (View v) {
String path = Et_path.gettext (). toString (). Trim ();

Switch (V.getid ()) {
Case R.id.bt_start:
Player = new MediaPlayer ();
Player.setaudiostreamtype (Audiomanager.stream_music);
Player.setdisplay (holder);
if ("". Equals (path)) {//If the input link is empty
Toast.maketext (This, "file is empty, please enter a link to the file", Toast.length_short). Show ();
Return
}
try {
Player.setdatasource (path);
Player.prepare ();
} catch (Exception e) {
Toast.maketext (This, "File access error", Toast.length_short). Show ();
E.printstacktrace ();
}

Player.setoncompletionlistener (New Oncompletionlistener () {//listener if media playback is complete

@Override
public void Oncompletion (MediaPlayer MP) {
Toast.maketext (Demoactivity.this, "Play Done", 0). Show ();
Player.release ();//When the playback is complete, release the resources
Player = null;
Bt_start.setenabled (TRUE);
}

});

Player.setonerrorlistener (New Onerrorlistener () {

@Override
public Boolean onError (MediaPlayer MP, int. what, int extra) {
Toast.maketext (Demoactivity.this, "Playback complete error", 0). Show ();
Player.release ();//To release resources when an error occurs
Player = null;
Bt_start.setenabled (TRUE);
return false;
}

});

Player.start ();

Bt_start.setenabled (FALSE);
Break
Case R.id.bt_pause:
if (player! = null && player.isplaying ()) {//If the media is playing
Player.pause ();
Bt_pause.settext (">>");
Return
}

if (player! = null && ">>". Equals (Bt_pause.gettext ())) {
Player.start ();
Bt_pause.settext ("| |");
Return
}
Break
Case R.id.bt_restart:

if (player = null && player.isplaying ()) {//media is playing
Player.seekto (0);
}else{
Toast.maketext (Demoactivity.this, "need to re-bo where", Toast.length_short). Show ();
}

Break
Case R.id.bt_stop:
if (player = null && player.isplaying ()) {//media is playing
Player.stop ();//If you stop playing a piece of media, you must stop it before releasing the resource
Player.release ();
Player = null;
Bt_start.setenabled (TRUE);//Set Start button to be clickable

} else{
Player.release ();
Player = null;
Bt_start.setenabled (TRUE);//Set Start button to be clickable
Bt_start.setclickable (TRUE);
}
Break
}

}
}


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.