1. 程式人生 > >Android移動開發-使用VideoView播放視訊的實現

Android移動開發-使用VideoView播放視訊的實現

為了在Android應用中播放視訊,Android提供了VideoView控制元件,它就是一個位於android.widget包下的控制元件,它的作用與ImageView類似,只是ImageView用於顯示圖片,而VideoView用於播放視訊。

使用VideoView播放視訊的步驟如下:
Step1:在介面佈局檔案中定義VideoView控制元件,或在程式中建立VideoView控制元件;
Step2:呼叫VideoView的如下兩個方法來載入指定視訊;
->setVideoPath(String path):載入path檔案所代表的視訊。
->setVideoURI(Uri uri):載入uri所對應的視訊。


Step3:呼叫VideoView的start()、stop()、pause()方法來控制視訊播放。

實際上與VideoView一起結合使用的還有一個MediaController類,它的作用是提供一個友好的圖形控制介面,通過該控制介面來控制視訊的播放。

下面的程式Demo示範瞭如何使用VideoView來控制播放視訊,該程式提供了一個簡單的介面。

  • layout/activity_main.xml介面佈局程式碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android
="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<!-- 定義VideoView播放視訊 --> <VideoView android:id="@+id/video" android:layout_width="match_parent" android:layout_height
="match_parent" />
</LinearLayout>

上面的介面佈局中定義了一個VideoView控制元件,接下來就可以在程式中使用該元件來播放視訊。播放視訊時還結合了MediaController來控制視訊的播放。

  • MainActivity.java邏輯程式碼如下:
package com.fukaimei.videoviewtest;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

import java.io.File;

public class MainActivity extends Activity {

    VideoView videoView;
    MediaController mController;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        setContentView(R.layout.activity_main);
        // 獲取介面上VideoView元件
        videoView = (VideoView) findViewById(R.id.video);
        // 建立MediaController物件
        mController = new MediaController(this);
        File video = new File("/mnt/sdcard/天行九歌 - 霍尊.mp4");
        if (video.exists()) {
            videoView.setVideoPath(video.getAbsolutePath()); // ①
            // 設定videoView和mController建立關聯
            videoView.setMediaController(mController); // ②
            // 設定mController和videoView建立關聯
            mController.setMediaPlayer(videoView); // ③
            // 讓VideoView獲取焦點
            videoView.requestFocus();
        }
    }
}

上面的Demo程式程式碼中的標序號①的程式碼用於讓VideoView載入指定的視訊檔案,接下來該VideoView就可以用於播放該視訊了;接下來標序號②和③的程式碼用於建立VideoView與MediaController之間的關聯,這樣就不需要開發者自己去控制視訊的播放、暫時等等,讓MediaController進行控制即可。

  • 注意:由於該程式需要讀取SD卡上的視訊檔案,因此還需要在清單檔案AndroidManifest.xml檔案中授權該程式讀取外部儲存器的許可權:
<!-- 授予該程式讀取外部儲存器的許可權 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • Demo程式執行效果介面截圖如下:
    這裡寫圖片描述

P.S.截圖所示的介面中的快進鍵、暫停鍵、後退鍵以及播放進度條就是由MediaController所提供的。