注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。
原文鏈接: http://developer.android.com/training/camera/videobasics.html
這節課將展示如何利用現有的相機應用來錄制視頻。
假設你的應用有一個巨大的任務,而集成視頻是它的一部分。你希望盡可能簡單地錄制視頻,并且不要因此而重新構建一個攝像的程序。幸好,Android設備上已經有了一個可以錄制視頻的相機應用,在這節課中,你將會讓它來為你的應用服務。
一). 請求相機權限?
要聲明你的應用需要依賴攝像頭,在清單文件中加入 <uses-feature> 標簽:
< manifest ... > < uses-feature android:name ="android.hardware.camera" android:required ="true" /> ... </ manifest >
如果你的應用使用,但并不依賴一個相機來執行功能,那么將“ android:required ”設置為“ false ”。這樣的話,那么Google Play將會允許沒有相機的設備下載你的應用。那么接下來就是你的責任負責相機是否可用了,在運行時如果調用了需要用相機的函數時,通過調用 hasSystemFeature(PackageManager.FEATURE_CAMERA) 檢查是否可以獲取相機。如果相機無法獲取,那么你就應該禁止你的相關功能特性。
二). 通過一個相機應用錄制視頻
在Android中向其它應用分發意圖是通過激活一個描述你的意圖的 Intent 。這一過程分為三步: Intent 自身,調用外部 Activity ,當焦點回到你的activity中處理視頻數據的一些代碼。
下面的例子是激活一個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); } }
注意這里
startActivityForResult()
方法被一個前提所保護,那就是通過調用
resolveActivity()
,返回第一個可以處理該intent的組件。執行這個檢查時很重要的因為如果你調用了
startActivityForResult()
并使用一個沒有一個應用可以處理的intent,你的應用將會崩潰。所以只要結果不是null,那么使用這個intent是安全的。
三). 查看視頻
Android相機應用會在 onActivityResult() 方法中將視頻以一個指向視頻存儲位置的 Uri 的形式,放置在 Intent 中,并將其返回。下面的代碼即獲取這個視頻并且在 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); } }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
