安卓中使用VideoView来播放视频

时间:2020-12-20 09:22:52

今天写了一个关于视频播放的小程序,使用的是VideoView这个API,该API内容简单,易于代码的书写。

我用了两种不同路径下的方式来播放一段视频。

(1) 该视频文件位于raw目录下,通过setVideoURI()方法来设置路径,通过给VideoView设置setMediaController()方法来让 VideoView 和 MediaController 建立关联,通过start()方法开始播放视频。

resume()和seekTo(0)这两种方法可以设置视频的重新播放,setOnCompletionListener这个监听器用来处理视频播放完成以后的逻辑,比如隐藏视频,setVisibility(View.INVISIBLE)这个方法可以控制视频的显示和隐藏


(2)当视频路径位于sd卡下时,通过setVideoPath()方法来设置视频路径,其它方法与第一种情况类似

public class MainActivity extends Activity {

private VideoView videoView;
private MediaController mediaController;
private Button button2, button3;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

videoView = (VideoView) findViewById(R.id.videoView);
mediaController = new MediaController(this);

button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);


/**
* 方式一 加载raw目录下的视频文件
*/

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.pm);
videoView.setVideoURI(uri);
videoView.setMediaController(mediaController); // 让 videoView 和 // mediaController 建立关联
mediaController.setMediaPlayer(videoView); // 让 mediaController 和 // videoView 建立关联
videoView.requestFocus(); // 获取焦点
videoView.start(); // 开始播放

button3.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
videoView.setVisibility(View.VISIBLE);
if (videoView.isPlaying()) { // 视频正在播放
videoView.resume(); // 让视频重新播放的第1种方法
// videoView.seekTo(0); // 让视频重新播放的第2种方法
} else { // 视频没有开始播放
videoView.start();
}
Toast.makeText(MainActivity.this, "开始播放按钮被点击了",
Toast.LENGTH_SHORT).show();
}
});

// 该方法用来处理视频播放完成以后的逻辑,比如隐藏视频
videoView.setOnCompletionListener(new OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer mp) {
videoView.setVisibility(View.INVISIBLE); // 让视频隐藏

}
});

button2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
videoView.setVisibility(View.VISIBLE);
videoView.start();
}
});


/**
* 方式二 加载sd卡下的视频文件 ( 不要忘记加上sd卡读取的权限 )
*/

File video = new File("/mnt/sdcard/pm.mp4"); //得到视频的路径
videoView.setVideoPath(video.getAbsolutePath()); //设置视频(绝对)路径
videoView.setMediaController(mediaController); // 让 videoView 和 mediaController 建立关联
mediaController.setMediaPlayer(videoView); // 让mediaController 和 videoView 建立关联
videoView.requestFocus(); // 获取焦点
videoView.start(); // 开始播放

}
通过以上代码就可以实现一个简单的视频播放功能,但是功能较简单。