Android多媒体教程之播放视频的四种方法
本文主要给大家介绍的是关于Android播放视频的四种方法,分享出来供大家参考学习,下面来一起看看详细的介绍:
一、通过intent的方式,调用系统自带的播放器
Uriuri=Uri.parse("/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"); //调用系统自带的播放器 Intentintent=newIntent(Intent.ACTION_VIEW); intent.setDataAndType(uri,"/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"); startActivity(intent);
二、使用VideoView
布局文件
Activity
publicclassVideoPlayByVVActivityextendsAppCompatActivity{ privateVideoViewmVideoView; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉title //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置全屏 //getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//设置屏幕常亮 setContentView(R.layout.activity_video_play_by_vv); mVideoView=(VideoView)findViewById(R.id.video_view); init(); } privatevoidinit(){ Stringpath="/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"; Uriuri=Uri.parse(path); mVideoView.setVideoPath(path); mVideoView.start(); mVideoView.requestFocus(); } }
三、MediaPlayer+SurfaceView
Activity
publicclassVideoPlayBySurActivityextendsAppCompatActivityimplementsView.OnClickListener{ privateSurfaceViewmSurfaceView; privateMediaPlayermMediaPlayer; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play_by_sur); mSurfaceView=(SurfaceView)findViewById(R.id.surface_view); findViewById(R.id.stop).setOnClickListener(this); findViewById(R.id.pasue).setOnClickListener(this); findViewById(R.id.play).setOnClickListener(this); init(); } privatevoidinit(){ mMediaPlayer=newMediaPlayer(); mSurfaceView.getHolder().addCallback(newSurfaceHolder.Callback(){ @Override publicvoidsurfaceCreated(SurfaceHolderholder){ play(); } @Override publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,intheight){ } @Override publicvoidsurfaceDestroyed(SurfaceHolderholder){ } }); } @Override publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.stop: stop(); break; caseR.id.play: if(!mMediaPlayer.isPlaying()){ play(); } break; caseR.id.pasue: pasue(); break; } } publicvoidstop(){ if(mMediaPlayer.isPlaying()){ mMediaPlayer.stop(); } } publicvoidpasue(){ if(mMediaPlayer.isPlaying()){ mMediaPlayer.pause(); }else{ mMediaPlayer.start(); } } publicvoidplay(){ Stringpath="/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"; try{ mMediaPlayer.reset(); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置需要播放的视频 mMediaPlayer.setDataSource(this,Uri.parse(path)); //把视频画面输出到SurfaceView mMediaPlayer.setDisplay(mSurfaceView.getHolder()); mMediaPlayer.prepare(); mMediaPlayer.start(); }catch(IOExceptione){ e.printStackTrace(); } } }
四、MediaPlayer+TextureView
Activity
publicclassVideoPlayByTextrueViewActivityextendsAppCompatActivityimplementsMediaPlayer.OnPreparedListener,MediaPlayer.OnInfoListener,MediaPlayer.OnBufferingUpdateListener{ privateTextureViewmTextureView; privateImageViewmImageVideo; privateSurfacemSurface; privateMediaPlayermMediaPlayer; privatestaticStringpath="/storage/emulated/0/DCIM/Camera/20170521_200117.mp4"; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play_by_textrue_view); mTextureView=(TextureView)findViewById(R.id.texture_view); mImageVideo=(ImageView)findViewById(R.id.video_image); init(); } privatevoidinit(){ mTextureView.setSurfaceTextureListener(newTextureView.SurfaceTextureListener(){ @Override publicvoidonSurfaceTextureAvailable(SurfaceTexturesurfaceTexture,intwidth,intheight){ mSurface=newSurface(surfaceTexture); Log.e("tag","----onSurfaceTextureAvailable"); play(); } @Override publicvoidonSurfaceTextureSizeChanged(SurfaceTexturesurface,intwidth,intheight){ Log.e("tag","----onSurfaceTextureSizeChanged"); } @Override publicbooleanonSurfaceTextureDestroyed(SurfaceTexturesurface){ mTextureView=null; mSurface=null; mMediaPlayer.stop(); mMediaPlayer.release(); returnfalse; } @Override publicvoidonSurfaceTextureUpdated(SurfaceTexturesurface){ } }); } publicvoidplay(){ mMediaPlayer=newMediaPlayer(); try{ mMediaPlayer.setDataSource(getApplicationContext(),Uri.parse(path)); mMediaPlayer.setSurface(mSurface); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnInfoListener(this); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.prepareAsync(); }catch(IOExceptione){ e.printStackTrace(); } } @Override publicvoidonPrepared(MediaPlayermp){ mImageVideo.setVisibility(View.GONE); mMediaPlayer.start(); } @Override publicbooleanonInfo(MediaPlayermp,intwhat,intextra){ returnfalse; } @Override publicvoidonBufferingUpdate(MediaPlayermp,intpercent){ } }
参考文章
Android中SurfaceView的使用详解
Android5.0(Lollipop)中的SurfaceTexture,TextureView,SurfaceView和GLSurfaceView
AndroidTextureView简易教程
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。