android实现视频播放器

android实现视频播放器

上午我们用mediaplayer实例了音乐播放器,现在我们在用mediaplayer实现视频播放,同样的也有两种实现方式:

  • SurfaceView
  • VideoView

先来看两张图片
android实现视频播放器_第1张图片
android实现视频播放器_第2张图片
其实答大体操作还是一样的,只是多了两部:
1、xml布局,使用了SurfaceView的控件
2、代码中将步骤到的画面surfaceView放入到了mediaplayer中

下面我就把详细代码贴出来:
首先是布局的:


      <SurfaceView
          android:layout_width="match_parent"
          android:layout_height="300dp"
          android:id="@+id/sf_view"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <SeekBar
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:id="@+id/sb_main_bar"
            />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_media_play"
            android:onClick="isPlayOrPause"
            />


    LinearLayout>

最后贴出关键的java代码,其他都和前面音乐器的步骤一样,不同明白的的同行者可以先去看看前篇:

   final ImageButton imageButton=(ImageButton) view;//视图的button
        if (mediaPlayer==null){
            mediaPlayer=new MediaPlayer();
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            try {
                //播放内存卡中的图片
                  mediaPlayer.setDataSource(this,Uri.parse("file://mnt/sdcard/Movies/advideo.mp4"));
                  mediaPlayer.prepare();
            } catch (IOException e) {
                e.printStackTrace();
            }
                   //将捕捉到的画面放到surfaceview中
                   mediaPlayer.setDisplay(surfaceView.getHolder());
                    mediaPlayer.start();
                    imageButton.setImageResource(android.R.drawable.ic_media_pause);
                    //获取音乐总时长
                    int duration= mediaPlayer.getDuration();
                    //设置音乐最大值
                    sb_main_bar.setMax(duration);
                   new mythread().start();

        }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);
        }

这个的变化就只是在准备播放前加了一句捕捉画面的代码,就可以啦。

第二种vedioVew用起来相对于简单,布局文件我就不贴了,即是一个VideoView的控件。java代码也是很简单的,

   videoView = (VideoView) findViewById(R.id.vv_vedio);
        //设置来源
        videoView.setVideoPath("file://mnt/sdcard/Movies/advideo.mp4");
        //实例媒体控制器
        MediaController mediaController=new MediaController(this);
        mediaController.setMediaPlayer(videoView);
        videoView.setMediaController(mediaController);
    }

视频播放挺简单的,就这样就完了。

你可能感兴趣的:(android技术篇)