本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下
1)、SurfaceView
在布局文件中
<&#63;xml version="1.0" encoding="utf-8"&#63;>
在Activity里面和播放内存卡上音乐的代码差不多,只是视频多了个显示内容,关键代码就是这三条
//播放内存上的视频 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4")); //准备(内存卡) mediaPlayer.prepare(); //将媒体播放器捕捉的画面展示在SurfaceView 上 mediaPlayer.setDisplay(sv_media_surface.getHolder());
但是没看前面博客的筒子可能会觉得看不懂,所以还是把完整的代码粘贴出来
public class MediaPlayActivity extends AppCompatActivity { private SeekBar seekBar; private MediaPlayer mediaPlayer; private SurfaceView sv_media_surface; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_media_play); seekBar = (SeekBar) findViewById(R.id.seekBar); sv_media_surface = (SurfaceView) findViewById(R.id.sv_media_surface); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取拖动结束后的位置 int progress=seekBar.getProgress(); //跳转到某个位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){//代表第一次播放音乐 //播放内存卡内的音频 mediaPlayer=new MediaPlayer(); //设置类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音源 try { //播放内存上的视频 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4")); //准备(内存卡) mediaPlayer.prepare(); //将媒体播放器捕捉的画面展示在SurfaceView 上 mediaPlayer.setDisplay(sv_media_surface.getHolder()); //必须在播放前加载音频文件(异步准备) // mediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } mediaPlayer.start(); //把图标改成暂停的图标(这里的暂停图标就是播放时的状态) imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 int duration=mediaPlayer.getDuration(); //设置进度条的最大值为音乐的总时长 seekBar.setMax(duration); new MyThread(); }else if(mediaPlayer.isPlaying()){//正在播放音乐 mediaPlayer.pause(); //把图标改成播放的图标(暂停状态) imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } } class MyThread extends Thread{ @Override public void run() { super.run(); while(seekBar.getProgress()
2)、VideoView,如果在项目中,仅仅只是播放视频的话,这种方式会比较简单,但是如果是要做视频播放器的话,还是使用第一种方法
布局文件
Activity
public class VedioActivity extends AppCompatActivity { private VideoView vv_main_vedio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vedio); vv_main_vedio = (VideoView) findViewById(R.id.vv_main_vedio); //给videoView设置播放来源 vv_main_vedio.setVideoPath("file://mnt/sdcard/Movies/sister.mp4"); //实例化媒体控制器 MediaController mediaCOntroller=new MediaController(this); //给activity_vedio设置控制器 vv_main_vedio.setMediaController(mediaController); mediaController.setMediaPlayer(vv_main_vedio); } }
VideoView通过与MediaController类结合使用,开发者可以不用自己控制播放与暂停。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。