android: 播放视频

播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView 类来实现的。这个 类将视频的显示和控制集于一身,使得咱们仅仅借助它就能够完成一个简易的视频播放器。 VideoView 的用法和 MediaPlayer 也比较相似,主要有如下经常使用方法:android

 

方法名ide

功能描述工具

setVideoPath()布局

设置要播放的视频文件的位置。学习

start()动画

开始或继续播放视频。this

pause()spa

暂停播放视频。视频

resume()xml

将视频重头开始播放。

seekTo()

从指定的位置开始播放视频。

isPlaying()

判断当前是否正在播放视频。

getDuration()

获取载入的视频文件的时长。

 

 

 

那么咱们仍是经过一个实际的例子来学习一下吧,新建 PlayVideoTest 项目,而后修改

activity_main.xml 中的代码,以下所示:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical" >

 

 

<VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="wrap_content" />

 

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" >

 

<Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" />

 

<Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" />

 

<Button android:id="@+id/replay" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Replay" />

</LinearLayout>

 

 

</LinearLayout>

 

 

 

在这个布局文件中,首先是放置了一个 VideoView,稍后的视频就将在这里显示。而后在 VideoView 的下面又放置了三个按钮,分别用于控制视频的播放、暂停和从新播放。 接下来修改 MainActivity 中的代码,以下所示:

 

public class MainActivity extends Activity implements OnClickListener {

 

private VideoView videoView;

 

private Button play; private Button pause; private Button replay;

@Override

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

play = (Button) findViewById(R.id.play);

pause = (Button) findViewById(R.id.pause);

replay = (Button) findViewById(R.id.replay);

videoView = (VideoView) findViewById(R.id.video_view); play.setOnClickListener(this); pause.setOnClickListener(this); replay.setOnClickListener(this);

initVideoPath();

}

 

private void initVideoPath() {

File file = new File(Environment.getExternalStorageDirectory(), "movie.3gp");

videoView.setVideoPath(file.getPath()); // 指定视频文件的路径

}

 

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.play:

if (!videoView.isPlaying()) {

videoView.start(); // 开始播放

}

break;

case R.id.pause:

if (videoView.isPlaying()) {

videoView.pause(); // 暂时播放

}

break;

case R.id.replay:

if (videoView.isPlaying()) {

videoView.resume(); // 从新播放

}

break;

}

}

 

@Override

protected void onDestroy() {

super.onDestroy();

if (videoView != null) {

videoView.suspend();

}

}

 

}

这部分代码相信你理解起来会很轻松,由于它和前面播放音频的代码很是相似。首先在 onCreate()方法中仍然是去获取一些控件的实例,而后调用了 initVideoPath()方法来设置视频 文件的路径,这里咱们须要事先在 SD 卡的根目录下放置一个名为 movie.3gp 的视频文件。 下面看一下各个按钮的点击事件中的代码。当点击 Play 按钮时会进行判断,若是当前 并无正在播放音频,则调用 start()方法开始播放。当点击 Pause 按钮时会判断,若是当前 视频正在播放,则调用 pause()方法暂时播放。当点击 Replay 按钮时会判断,若是当前视频正在播放,则调用 resume()方法重头播放视频。最后在 onDestroy()方法中,咱们还须要调用一下 suspend()方法,将 VideoView 所占用的 资源释放掉。

如今将程序运行到手机上,而后点击一下 Play 按钮,就能够看到视频已经开始播放了, 如图 8.20 所示。

图   8.20

 

点击 Pause 按钮能够暂停视频的播放,点击 Replay 按钮能够重头播放视频。 这样的话,你就已经将 VideoView 的基本用法掌握得差很少了。不过,为何它的用法

和 MediaPlayer 这么类似呢?其实 VideoView 只是帮咱们作了一个很好的封装而已,它的背 后仍然是使用 MediaPlayer 来对视频文件进行控制的。另外须要注意,VideoView 并非一 个万能的视频播放工具类,它在视频格式的支持以及播放效率方面都存在着较大的不足。所 以,若是想要仅仅使用 VideoView 就编写出一个功能很是强大的视频播放器是不太现实的。 可是若是只是用于播放一些游戏的片头动画,或者某个应用的视频宣传,使用 VideoView 还 是绰绰有余的。

相关文章
相关标签/搜索