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
}
}
}