虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android多媒体之VideoView视频播放器

Android多媒体之VideoView视频播放器
类别:Android编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了Android多媒体之VideoView视频播放器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下

1)、SurfaceView
在布局文件中

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_media_play" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.zking.android_contentresolve.MediaPlayActivity"> <SurfaceView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/sv_media_surface" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <SeekBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/seekBar" android:layout_weight="1" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="isPlayOrPause" /> </LinearLayout></LinearLayout>

在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()<seekBar.getMax()){
    //获取当前音乐播放的位置 int currentPosition=mediaPlayer.getCurrentPosition();
    //让进度条跟着时间走 seekBar.setProgress(currentPosition);
    }
    }
    }
    }

2)、VideoView,如果在项目中,仅仅只是播放视频的话,这种方式会比较简单,但是如果是要做视频播放器的话,还是使用第一种方法

布局文件

    <VideoView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vv_main_vedio" />

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类结合使用,开发者可以不用自己控制播放与暂停。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关热词搜索: Android VideoView 视频播放器