首页 > 系统 > Android > 正文

Android多媒体播放器之视频播放器

2019-11-08 00:37:46
字体:
来源:转载
供稿:网友

Android视频播放器

这里我们大家分享两种视频播放的方法:

第一种是用MediaPlayer+SeerBar+SurfaceView

MediaPlayer:加载视频文件mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/DCIM/Camera/ddbb.mp4"));SeerBar:显示当前视频播放的的位置,快进、后退视频SurfaceView:显示视频画面

先看效果图: 这里写图片描述

因为MediaPlayer是从SD卡拿视频的,所以要加权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

下面是具体代码:

public class MainActivity extends AppCompatActivity { PRivate SurfaceView sv_main_surface; private SeekBar sb_main_seekBar; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } setContentView(R.layout.activity_main); //获取SurfaceView sv_main_surface = (SurfaceView) findViewById(R.id.sv_main_surface); //获取SeekBar sb_main_seekBar = (SeekBar) findViewById(R.id.sb_main_seekBar); //进度条滑动事件 sb_main_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取seekBar的当前滑动位置 int sb=sb_main_seekBar.getProgress(); //快进视频 mediaPlayer.seekTo(sb); } }); } public void startMediaPlayer(View view){ final ImageView imageView= (ImageView) view; //SD卡播放视频 if (mediaPlayer==null) { mediaPlayer=new MediaPlayer(); try { //设置视频SD卡路径 mediaPlayer.setDataSource(this, Uri.parse("file://storage/sdcard/DCIM/Camera/ddbb.mp4")); //准备 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } imageView.setImageResource(android.R.drawable.ic_media_pause); //将视频展示到sv_main_surface mediaPlayer.setDisplay(sv_main_surface.getHolder()); //进度条最大值 Log.i("test","DDDDDDDDDDD="+mediaPlayer.getDuration()); mediaPlayer.start(); sb_main_seekBar.setMax(mediaPlayer.getDuration()); new myThread().start(); }else if (mediaPlayer.isPlaying()) { //暂停视频 mediaPlayer.pause(); imageView.setImageResource(android.R.drawable.ic_media_play); }else{ //播放视频 mediaPlayer.start(); imageView.setImageResource(android.R.drawable.ic_media_pause); } } //seekbar class myThread extends Thread{ @Override public void run() { super.run(); while(sb_main_seekBar.getProgress()<=sb_main_seekBar.getMax()){ //获取视频当前播放的位置 int position=mediaPlayer.getCurrentPosition(); sb_main_seekBar.setProgress(position); } } };}

第二种视频播放VideoView:

使用VideoView播放视频就比较简单了,不像使用MediaPlayer那么麻烦还是老规矩先看效果图:

这里写图片描述

这两张图片看起效果差不多,其实仔细看这一张是没有进度条的好了废话不多说,直接看代码:

public class VideoviewActivity extends AppCompatActivity { private VideoView vv_videoview_video; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } setContentView(R.layout.activity_videoview); //获取VideoView vv_videoview_video = (VideoView) findViewById(R.id.vv_videoview_video); //设置视频地址 vv_videoview_video.setVideoPath("file://storage/sdcard/DCIM/Camera/ddbb.mp4"); //实例化媒体控制器 MediaController mediaController=new MediaController(this); mediaController.setMediaPlayer(vv_videoview_video); vv_videoview_video.setMediaController(mediaController); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表