Words do not say much, directly on the code: XML file:
<TextView Android:id= "@+id/file"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:text= "File name"/> <EditText Android:id= "@+id/fileedite"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"/> </LinearLayout> <LinearLayout android:layout_width= "Fill_parent"Android:layout_height= "Wrap_content"android:orientation= "Horizontal" > <Button Android:id= "@+id/play"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:onclick= "Mediaplay"/> <Button Android:id= "@+id/pause"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:onclick= "Mediaplay"/> <Button Android:id= "@+id/reset"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:onclick= "Mediaplay"/> <Button Android:id= "@+id/stop"Android:layout_width= "Wrap_content"Android:layout_height= "Wrap_content"Android:onclick= "Mediaplay" > </Button> </LinearLayout> <Surfaceview android:layout_width= "Fill_parent"Android:layout_height= "240DP"Android:id= "@+id/surfaceview"/>
View Code
Activity
PrivateEditText Nameedit; PrivateMediaPlayer Media; PrivateString Path; PrivateSurfaceview Surfaceview; PrivateBoolean pause=false; Private intposition; @Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_media_play); Media=NewMediaPlayer (); Nameedit=(EditText) Findviewbyid (r.id.fileedite); //send the video footage to the Surfaceview, directly to the screen, not in its own buffersurfaceview=(Surfaceview) Findviewbyid (R.id.surfaceview); Surfaceview.getholder (). SetType (Surfaceholder.surface_type_push_buffers); Surfaceview.getholder (). Setfixedsize (176, 144); Surfaceview.getholder (). Setkeepscreenon (true); Surfaceview.getholder (). Addcallback (Newsurfacecallback ()); } Public Final classSurfacecallbackImplementscallback{ Public voidsurfacecreated (Surfaceholder holder) {//TODO auto-generated Method Stub if(Position>0 && path!=NULL) {play (position); Position=0; } } Public voidSurfacechanged (Surfaceholder holder,intFormatintwidth,intheight) { //TODO auto-generated Method Stub } Public voidsurfacedestroyed (Surfaceholder holder) {//TODO auto-generated Method Stub if(Media.isplaying ()) {position=media.getcurrentposition (); Media.stop (); } } } Private voidMediaplay (View v) {Switch(V.getid ()) { Caser.id.play:string filename=Nameedit.gettext (). toString (); if(Filename.startswith ("http") ) {path=filename; Play (0); }Else{File File=NewFile (environment.getexternalstoragedirectory (), filename); if(File.exists ()) {path=File.getabsolutepath (); Play (0); }Else{Path=NULL; Toast.maketext ( This, "Video file does not exist", 1). Show (); } } Break; CaseR.id.pause:if(Media.isplaying ()) {media.pause (); Pause=true; }Else{ if(pause) {Media.start (); Pause=false; } } Break; CaseR.id.reset:if(Media.isplaying ()) {Media.seekto (0); }Else{ if(path!=NULL) {Play (0); } } Break; CaseR.id.stop:if(Media.isplaying ()) {media.stop (); } Break; default: Break; }} @Overrideprotected voidOnDestroy () {//TODO auto-generated Method Stubmedia.release (); Media=NULL; Super. OnDestroy (); } Private voidPlayintposition) {Media.reset (); Try{media.setdatasource (path); Media.setdisplay (Surfaceview.getholder ()); Media.prepare ();//BufferingMedia.setonpreparedlistener (NewPreparedlistener (position)); } Catch(IllegalArgumentException e) {//TODO auto-generated Catch blockE.printstacktrace (); } Catch(SecurityException e) {//TODO auto-generated Catch blockE.printstacktrace (); } Catch(IllegalStateException e) {//TODO auto-generated Catch blockE.printstacktrace (); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); } } Private Final classPreparedlistenerImplementsonpreparedlistener{Private intposition; PublicPreparedlistener (intposition) { This. position=position; } @Override Public voidonprepared (MediaPlayer MP) {//TODO auto-generated Method StubMedia.start (); if(Position>0 && path!=NULL) {media.seekto (position); } }
View Code
Video Playback Demo