Android之使用VideoView组件播放一个简单的视频

1.在Android开发中,提供了VideoView组件用来播放视频文件。首先,要使用这个组件来播放视频,必须在布局文件下添加VideoView组件,然后再到Activity里获取这个组件,然后调用这个组件的setVideoPath(path)和setVideoURI(uri)方法来加载要播放的视频,其中setVideoPath(path)方法里面的参数path是该视频文件的路径,路径又分相对路径和决定路径,其中由File类的方法中可以获取到,即getAbsolutePath()获得绝对路径,getPath()获得相对路径,最后在调用start()方法播放视频,VideoView组件可以与MediaController组件来一起使用,MediaController组件用于通过控制界面来控制视频的播放,其中VideoView组件也提供了pause()方法和stop方法,用来暂停视频播放和停止视频播放。

2.接下来新建一个安卓项目,项目名为VideoTest,首先进行界面布局,打开项目下res目录的layout目录下的activity_main.xml文件,进行布局,添加VideoView控件

activity_main.xml文件代码如下:



<LinearLayout 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">
    
    <VideoView
        android:id="@+id/video"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_gravity="center" />
    
</LinearLayout>

3.这里,介绍如何把一个文件放入模拟器中,首先,打开Eclipse软件的工具栏,那里有个Window,点击后选择show view—other...然后出现下图界面:

4.这样就可以在下方出现一个File Explorer视图了,点击该视图,接着我们先打开模拟器,模拟器开启完毕后,File Explorer视图里出现好多文件,接着我们打开mnt目录下面有个sdcard文件夹,如下图所示:

接着我们选中mnt下的sdcard,然后点击上方的那个红色指向的箭头,指向它时提示:Push a file onto the device,即放置一个文件到模拟器设备里,点击之后选择我们计算机里的一个文件,我选择的是wf2.mp4文件,之后就等它完成即可:

5.接下来打开项目的src目录下的包的MainActivity.java文件,获取VideoView组件,并写加载视频和开始播放视频的代码

MainActivity.java文件代码如下:

package com.example.videotest;

import java.io.File;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;

public class MainActivity extends Activity {

	private VideoView video;// 声明VideoView对象

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		video = (VideoView) findViewById(R.id.video); // 获取VideoView组件
		File file = new File("/sdcard/wf2.mp4"); // 获取SD卡上要播放的文件
		MediaController mediaController = new MediaController(MainActivity.this);
		if (file.exists()) { // 判断要播放的视频文件是否存在
			video.setVideoPath(file.getAbsolutePath()); // 指定要播放的视频,加载该视频文件
			video.setMediaController(mediaController); // 设置VideoView与MediaController相关联,点击VideoView组件时会在下方弹出MediaController组件,用来控制视频的播放
			video.requestFocus(); // 让VideoView获得焦点
			try {
				video.start(); // 开始播放视频
			} catch (Exception e) {
				e.printStackTrace(); // 输出异常信息
			}

			// 为VideoView添加完成事件监听器
			video.setOnCompletionListener(new OnCompletionListener() {

				@Override
				public void onCompletion(MediaPlayer mediaplayer) {
					// 弹出消息提示框显示播放完毕
					Toast.makeText(MainActivity.this, "视频播放完毕",
							Toast.LENGTH_SHORT).show();
				}

			});
		} else {
			//弹出消息提示框提示文件不存在
			Toast.makeText(MainActivity.this, "你所要播放的视频文件不存在", Toast.LENGTH_SHORT).show();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

6.这样应该可以播放一个简单的视频了,接下来运行这个程序,程序效果如下:

竟然不能播放,点击OK按钮出现下图:

其实视频已经播放完了,由于这个例子是在模拟器上运行的,所以并没有显示视频画面,把这个程序运行到真机里,应该就可以看到视频画面了。

7.如果你不想把文件放入模拟器上,你可以把你的mp4,3gp文件放入你的手机sdcard下,然后在把这个apk文件放入或发布到手机里面,就可以播放视频了,不过如果你的安卓手机不能播放大视频文件,可以把视频转换为3gp文件,就可以播放视频了,记得文件位置要记得,代码里需要该视频文件的路径。

8.以上就是全部内容,我以前写过,经本人安卓手机测试可以播放,不过我播放的文件是3gp格式的,还有,这个程序有两点bug,一个就是当你翻转手机时程序会停止播放视频,另一个就是当你正在播放视频时,点击返回按键时视频还在播放,在点击进去,视频从头播放,声音会交叉,接着就会弹出对话框,无法播放该视频,这里只是达到播放视频的效果,仅供大家学习参考,写得不好,请见谅,如有错误请提出,谢谢!

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值