首页 编程 软件学院 查看内容

Android 三种播放视频的方式

2016-7-21 12:12 1426 0

摘要: 在Android中,我们有三种方式来实现视频的播放: 1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。 2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对 ...

在Android中,我们有三种方式来实现视频的播放:

1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。

2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。

3、使用MediaPlayer类和SurfaceView来实现,这种方式很灵活。


1、调用其自带的播放器:

2、使用VideoView来实现:

3、使用MediaPlayer:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package demo.camera;    
import java.io.IOException;    
import android.app.Activity;    
import android.media.MediaPlayer;    
import android.media.MediaPlayer.OnCompletionListener;    
import android.media.MediaPlayer.OnErrorListener;    
import android.media.MediaPlayer.OnInfoListener;    
import android.media.MediaPlayer.OnPreparedListener;    
import android.media.MediaPlayer.OnSeekCompleteListener;    
import android.media.MediaPlayer.OnVideoSizeChangedListener;    
import android.os.Bundle;    
import android.os.Environment;    
import android.util.Log;    
import android.view.Display;    
import android.view.SurfaceHolder;    
import android.view.SurfaceView;    
import android.widget.LinearLayout;    
/**  
* 该实例中使用MediaPlayer完成播放,同时界面使用SurfaceView来实现  
*  
* 这里我们实现MediaPlayer中很多状态变化时的监听器  
*  
* 使用Mediaplayer时,也可以使用MediaController类,但是需要实现MediaController.mediaController接口  
* 实现一些控制方法。  
*  
* 然后,设置controller.setMediaPlayer(),setAnchorView(),setEnabled(),show()就可以了,这里不再实现  
* @author Administrator  
*  
*/    
public class VideoSurfaceDemo extends Activity implements OnCompletionListener,OnErrorListener,OnInfoListener,    
    OnPreparedListener, OnSeekCompleteListener,OnVideoSizeChangedListener,SurfaceHolder.Callback{    
    private Display currDisplay;    
    private SurfaceView surfaceView;    
    private SurfaceHolder holder;    
    private MediaPlayer player;    
    private int vWidth,vHeight;    
    //private boolean readyToPlay = false;    
            
    public void onCreate(Bundle savedInstanceState){    
        super.onCreate(savedInstanceState);    
        this.setContentView(R.layout.video_surface);    
                    
        surfaceView = (SurfaceView)this.findViewById(R.id.video_surface);    
        //给SurfaceView添加CallBack监听    
        holder = surfaceView.getHolder();    
        holder.addCallback(this);    
        //为了可以播放视频或者使用Camera预览,我们需要指定其Buffer类型    
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);    
            
        //下面开始实例化MediaPlayer对象    
        player = new MediaPlayer();    
        player.setOnCompletionListener(this);    
        player.setOnErrorListener(this);    
        player.setOnInfoListener(this);    
        player.setOnPreparedListener(this);    
        player.setOnSeekCompleteListener(this);    
        player.setOnVideoSizeChangedListener(this);    
        Log.v("Begin:::", "surfaceDestroyed called");    
        //然后指定需要播放文件的路径,初始化MediaPlayer    
        String dataPath = Environment.getExternalStorageDirectory().getPath()+"/Test_Movie.m4v";    
        try {    
            player.setDataSource(dataPath);    
            Log.v("Next:::", "surfaceDestroyed called");    
        } catch (IllegalArgumentException e) {    
            e.printStackTrace();    
        } catch (IllegalStateException e) {    
            e.printStackTrace();    
        } catch (IOException e) {    
            e.printStackTrace();    
        }    
        //然后,我们取得当前Display对象    
        currDisplay = this
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论