Android輕松錄制視頻

2018-08-02 17:33 更新

編寫:kesenhoo - 原文:http://developer.android.com/training/camera/videobasics.html

這節(jié)課會介紹如何使用已有的相機應用來錄制視頻。

假設(shè)在我們應用的所有功能當中,整合視頻只是其中的一小部分,我們想要以最簡單的方法錄制視頻,而不是重新實現(xiàn)一個攝像機組件。幸運的是,大多數(shù)Android設(shè)備已經(jīng)安裝了一個能錄制視頻的相機應用。在本節(jié)課當中,我們將會讓它為我們完成這一任務。

請求相機權(quán)限

為了讓用戶知道我們的應用依賴照相機,在Manifest清單文件中添加<uses-feature>標簽:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

如果應用使用相機,但相機并不是應用正常運行所必不可少的組件,可以將android:required設(shè)置為"false"。這樣的話,Google Play 也會允許沒有相機的設(shè)備下載該應用。當然我們有必要在使用相機之前通過調(diào)用hasSystemFeature(PackageManager.FEATURE_CAMERA)方法來檢查設(shè)備上是否有相機。如果沒有,那么和相機相關(guān)的功能應該禁用!

使用相機程序來錄制視頻

利用一個描述了執(zhí)行目的的Intent對象,Android可以將某些執(zhí)行任務委托給其他應用。整個過程包含三部分: Intent 本身,一個函數(shù)調(diào)用來啟動外部的 Activity,當焦點返回到Activity時,處理返回圖像數(shù)據(jù)的代碼。

下面的函數(shù)將會發(fā)送一個Intent來錄制視頻

static final int REQUEST_VIDEO_CAPTURE = 1;

private void dispatchTakeVideoIntent() {
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
    }
}

注意在調(diào)用startActivityForResult()方法之前,先調(diào)用resolveActivity(),這個方法會返回能處理該Intent的第一個Activity(譯注:即檢查有沒有能處理這個Intent的Activity)。執(zhí)行這個檢查非常重要,因為如果在調(diào)用startActivityForResult()時,沒有應用能處理你的Intent,應用將會崩潰。所以只要返回結(jié)果不為null,使用該Intent就是安全的。

查看視頻

Android的相機程序會把指向視頻存儲地址的Uri添加到Intent中,并傳送給onActivityResult()方法。下面的代碼獲取該視頻并顯示到一個VideoView當中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        Uri videoUri = intent.getData();
        mVideoView.setVideoURI(videoUri);
    }
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號