Android VideoView

分享到:

VideoView控件可实现Android系统的视频播放功能,提供“播放”,“快进”,“暂停”等相关控制通常与MediaController配合使用。开发一个播放器一般需要以下几个步骤:
(1)生成一个VideoView控件,可在XML中布局,或者在java源码中创建
(2)通过路径加载视频资源通常使用两个方法:
setVideoPath(String path),例如:“/sdcard/shipin.mp4”这种格式的路径
setVideoURI(Uri uri),需要先把具体路径用Uri.pasrse()方法进行转换
(3)调用VideoView的start()、stop()、psuse()方法来控制视频的播放

下面通过一个实例了解VideoView控件的基本使用方法
XML布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          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"
          tools:context=".MainActivity" >
         <VideoView
          android:id="@+id/video1"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />
</RelativeLayout>

java代码如下:

package com.my.androidtest;
import java.io.File;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends Activity {
         private VideoView video1;
          MediaController  mediaco;
         @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          video1=(VideoView)findViewById(R.id.video1);
          mediaco=new MediaController(this);
          File file=new File("/mnt/sdcard/通话录音/1.mp4");
          if(file.exists()){
          //VideoView与MediaController进行关联
          video1.setVideoPath(file.getAbsolutePath());
          video1.setMediaController(mediaco);
          mediaco.setMediaPlayer(video1);
          //让VideiView获取焦点
          video1.requestFocus();
          }
  
          }
         @Override
          public boolean onCreateOptionsMenu(Menu menu) {
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
          }
}

从其它书籍看到对VideoView有这样的描述,分享之:

VideoView下在播放的过程中可以随时“回放”,其与MediaPlayer相同,都是通过调用 seekTo()方法指定其重新开始播放,示例如下:

private void resetVideo(){
	if(mVideoView!=null){
		mVideoView.seekTo(0);
	}
}

我们在实际开发过程中会发现播放网络视频时VideoView有时会发出的Toast警告,内容写着不支持影片格式,以致无法播放。这是因为VideoView仅能播放progressive streamable(渐进式流)的网络影片,一般的mp4或3gp若不采用这种格式是无法通过网络被VideoView直接播放的,但存放在手机本地(如SD卡)则不受限制。

VideoView支持的文件格式如下(仅供参考)

文件类型 文件格式 文件扩展名
Video H.263 3GPP(.3gp)
H.264 3GPP(.3gp)
MPEG4 SP 3GPP(.3gp) 或 MPEG-4(.mp4)
昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例