本文實例講述了Android編程實現播放視頻的方法。分享給大家供大家參考,具體如下:
播放視頻文件其實并不比播放音頻文件復雜,主要是使用 VideoView 類來實現的。這個 類將視頻的顯示和控制集于一身,使得我們僅僅借助它就可以完成一個簡易的視頻播放器。 VideoView 的用法和 MediaPlayer 也比較類似,主要有以下常用方法:
| 方法名 | 功能描述 |
| setVideoPath() | 設置要播放的視頻文件的位置。 |
| start() | 開始或繼續播放視頻。 |
| pause() | 暫停播放視頻。 |
| resume() | 將視頻重頭開始播放。 |
| 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;@Overrideprotected 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()); // 指定視頻文件的路徑}@Overridepublic 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;}}@Overrideprotected void onDestroy() {super.onDestroy();if (videoView != null) {videoView.suspend();}}} 這部分代碼相信你理解起來會很輕松,因為它和前面播放音頻的代碼非常類似。首先在 onCreate()方法中仍然是去獲取一些控件的實例,然后調用了 initVideoPath()方法來設置視頻 文件的路徑,這里我們需要事先在 SD 卡的根目錄下放置一個名為 movie.3gp 的視頻文件。 下面看一下各個按鈕的點擊事件中的代碼。當點擊 Play 按鈕時會進行判斷,如果當前 并沒有正在播放音頻,則調用 start()方法開始播放。當點擊 Pause 按鈕時會判斷,如果當前 視頻正在播放,則調用 pause()方法暫時播放。當點擊 Replay 按鈕時會判斷,如果當前視頻正在播放,則調用 resume()方法重頭播放視頻。最后在 onDestroy()方法中,我們還需要調用一下 suspend()方法,將 VideoView 所占用的 資源釋放掉。
現在將程序運行到手機上,然后點擊一下 Play 按鈕,就可以看到視頻已經開始播放了, 如下圖所示:

點擊 Pause 按鈕可以暫停視頻的播放,點擊 Replay 按鈕可以重頭播放視頻。 這樣的話,你就已經將 VideoView 的基本用法掌握得差不多了。不過,為什么它的用法
和 MediaPlayer 這么相似呢?其實 VideoView 只是幫我們做了一個很好的封裝而已,它的背 后仍然是使用 MediaPlayer 來對視頻文件進行控制的。另外需要注意,VideoView 并不是一 個萬能的視頻播放工具類,它在視頻格式的支持以及播放效率方面都存在著較大的不足。所 以,如果想要僅僅使用 VideoView 就編寫出一個功能非常強大的視頻播放器是不太現實的。 但是如果只是用于播放一些游戲的片頭動畫,或者某個應用的視頻宣傳,使用 VideoView 還 是綽綽有余的。
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答