本文主要给大家介绍的是关于Android播放视频的四种方法,分享出来供大家参考学习,下面来一起看看详细的介绍:
一、通过intent的方式,调用系统自带的播放器
Uri uri = Uri.parse("/storage/emulated/0/DCIM/Camera/20170521_200117.mp4");//调用系统自带的播放器Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(uri, "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4");startActivity(intent);
二、使用VideoView
布局文件
Activitypublic class VideoPlayByVVActivity extends AppCompatActivity {
private VideoView mVideoView;
@Override protected void onCreate(Bundle savedInstanceState) {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();}
private void init() {
String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4";
Uri uri = Uri.parse(path);
mVideoView.setVideoPath(path);
mVideoView.start();mVideoView.requestFocus();
}}
三、MediaPlayer + SurfaceView
Activitypublic class VideoPlayBySurActivity extends AppCompatActivity implements View.OnClickListener {
private SurfaceView mSurfaceView;private MediaPlayer mMediaPlayer;
@Override protected void onCreate(Bundle savedInstanceState) {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();}
private void init() {mMediaPlayer = new MediaPlayer();
mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {@Override public void surfaceCreated(SurfaceHolder holder) {play();}
@Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override public void surfaceDestroyed(SurfaceHolder holder) {
}});}
@Override public void onClick(View v) {switch (v.getId()){case R.id.stop:stop();break;case R.id.play:if(!mMediaPlayer.isPlaying()){play();}break;case R.id.pasue:pasue();break;
}}
public void stop(){if(mMediaPlayer.isPlaying()){mMediaPlayer.stop();}}
public void pasue(){if(mMediaPlayer.isPlaying()){mMediaPlayer.pause();}else{mMediaPlayer.start();}}
public void play(){
String path = "/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 (IOException e) {e.printStackTrace();}}}
四、 MediaPlayer + TextureView
public class VideoPlayByTextrueViewActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnInfoListener, MediaPlayer.OnBufferingUpdateListener {
private TextureView mTextureView;private ImageView mImageVideo;private Surface mSurface;private MediaPlayer mMediaPlayer;private static String path = "/storage/emulated/0/DCIM/Camera/20170521_200117.mp4";
@Override protected void onCreate(Bundle savedInstanceState) {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();}
private void init() {
mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {@Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {mSurface = new Surface(surfaceTexture);
Log.e("tag", "---- onSurfaceTextureAvailable");
play();}
@Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {Log.e("tag", "---- onSurfaceTextureSizeChanged");}
@Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {mTextureView=null;mSurface=null;mMediaPlayer.stop();mMediaPlayer.release();return false;}
@Override public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}});
}
public void play(){
mMediaPlayer = new MediaPlayer();
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 (IOException e) {e.printStackTrace();}
}
@Override public void onPrepared(MediaPlayer mp) {
mImageVideo.setVisibility(View.GONE);mMediaPlayer.start();}
@Override public boolean onInfo(MediaPlayer mp, int what, int extra) {return false;}
@Override public void onBufferingUpdate(MediaPlayer mp, int percent) {
}}参考文章Android中SurfaceView的使用详解
Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView
Android TextureView简易教程总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:android使用surfaceview+MediaPlayer播放视频Android ViewPager中显示图片与播放视频的填坑记录Android中使用TextureView播放视频Android编程实现播放视频时切换全屏并隐藏状态栏的方法Android仿搜狐视频、微视等列表播放视频功能Android编程实现播放视频的方法示例Android 播放视频常见问题小结Android DragVideo实现播放视频时任意拖拽的方法Android仿新浪微博/QQ空间滑动自动播放视频功能android surfaceView实现播放视频功能
