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,一个就是当你翻转手机时程序会停止播放视频,另一个就是当你正在播放视频时,点击返回按键时视频还在播放,在点击进去,视频从头播放,声音会交叉,接着就会弹出对话框,无法播放该视频,这里只是达到播放视频的效果,仅供大家学习参考,写得不好,请见谅,如有错误请提出,谢谢!