Android VideoView

这两天公司要让做一个播放视频的小Demo,于是网上学习了下VideoView的使用方法。

先看布局文件,很简单 就是一个VideoView和两个ImageView

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     tools:context="${relativePackage}.${activityClass}" >
 6 
 7     <VideoView
 8         android:id="@+id/videoView1"
 9         android:layout_width="match_parent"
10         android:layout_height="500dp"
11         android:layout_alignParentLeft="true"
12         android:layout_alignParentTop="true" />
13 
14     <ImageView
15         android:id="@+id/image1"
16         android:layout_width="160dp"
17         android:layout_height="140dp"
18         android:layout_below="@id/videoView1"
19         android:src="@drawable/ic_launcher" />
20 
21     <ImageView
22         android:layout_width="160dp"
23         android:layout_height="140dp"
24         android:layout_below="@id/videoView1"
25         android:layout_toRightOf="@id/image1"
26         android:src="@drawable/ic_launcher" />
27 
28 </RelativeLayout>

然后是MainActivity

这里面有一个搜索内存文件的方法

 1 package com.nick.videodemo;
 2 
 3 import java.io.File;
 4 
 5 import android.app.Activity;
 6 import android.media.MediaPlayer;
 7 import android.media.MediaPlayer.OnCompletionListener;
 8 import android.media.MediaPlayer.OnPreparedListener;
 9 import android.os.Bundle;
10 import android.os.Environment;
11 import android.widget.MediaController;
12 import android.widget.VideoView;
13 
14 public class MainActivity extends Activity {
15 
16     private VideoView mVideoView;
17     MediaController mediaController;
18     private File file;
19     private String key = "test.mp4"; // 关键字
20     private File file1;
21     private String pathString;
22 
23     @Override
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_main);
27         mVideoView = (VideoView) findViewById(R.id.videoView1);
28         mediaController = new MediaController(this);
29         mVideoView.setMediaController(mediaController);
30         file = new File(Environment.getExternalStorageDirectory().getPath());
31         toSearchFiles(file);
32         file1 = new File(pathString);
33         if (file1.exists()) {
34             mVideoView.setVideoPath(file1.getAbsolutePath());
35             mediaController.setMediaPlayer(mVideoView);
36             mVideoView.requestFocus();
37             mVideoView.start();
38             mVideoView.setOnPreparedListener(new OnPreparedListener() {
39 
40                 @Override
41                 public void onPrepared(MediaPlayer mp) {
42                     mp.start();
43                     mp.setLooping(true);
44                 }
45             });
46             mVideoView.setOnCompletionListener(new OnCompletionListener() {
47 
48                 @Override
49                 public void onCompletion(MediaPlayer mp) {
50                     mVideoView.setVideoPath(file1.getAbsolutePath());
51                     mVideoView.start();
52                 }
53             });
54         }
55     }
56 
57     /**
58      * 遍历 Files
59      * 
60      * @param file
61      */
62     public void toSearchFiles(File file) {
63         File[] files = file.listFiles();
64         for (File tf : files) {
65             if (tf.isDirectory()) {
66                 toSearchFiles(tf);
67             } else {
68                 try {
69                     if (tf.getName().indexOf(key) > -1) {
70                         pathString = tf.getPath();
71                     }
72                 } catch (Exception e) {
73                 }
74             }
75         }
76     }
77 }
mediaController = new MediaController(this); 是设置播放时候的控制器,比如快进暂停等。
这里面最主要的代码还是
34         mVideoView.setVideoPath(file1.getAbsolutePath());
35             mediaController.setMediaPlayer(mVideoView);
36             mVideoView.requestFocus();
37             mVideoView.start();
这个是把文件的路径赋给VideoView然后让mediacontroller控制这个VideoView,后面使其多的焦点并播放。
循环播放:
46             mVideoView.setOnCompletionListener(new OnCompletionListener() {
47 
48                 @Override
49                 public void onCompletion(MediaPlayer mp) {
50                     mVideoView.setVideoPath(file1.getAbsolutePath());
51                     mVideoView.start();
52                 }
53             });
54         }
这个是给VideoView设置播放完成后的监听器,如果播放完成则重新开始。

上面就是简单地VideoView的使用方法,记录下方便以后学习和使用。
 
posted @ 2015-11-15 20:39  风起云涌,勿忘本心  阅读(1058)  评论(0编辑  收藏  举报