Android官方开发文档Training系列课程中文版:调用相机之简单摄像
原文地址:http://android.xsoftlab.net/training/camera/videobasics.html
這節課解釋了如何通過已有的相機應用拍攝視頻。
假設你的程序含有攝像功能,但是它只是程序很小的一部分功能,你并不想在這么小的功能上花費很大的精力。幸運的是,大多數的安卓設備已經內置了一款相機應用,并且它可以拍攝視頻。這節課將會展示如何拍攝視頻。
請求相機權限
為了告知系統程序是基于相機的,需要在清單文件中添加 標簽。
<manifest ... ><uses-feature android:name="android.hardware.camera"android:required="true" />... </manifest>如果程序需要使用,但是為了整個功能而不強制要求相機,那么可以設置android:required為false。這樣做的話,Google Play會允許不帶相機的設備下載你的程序。不過你有責任需要在運行時通過調用hasSystemFeature(PackageManager.FEATURE_CAMERA)方法檢查設備上的相機是否可用。如果相機是不可用的,你應該禁用掉與相機相關的功能。
通過相機APP攝像
Android通過授權的方式讓其他程序通過調用一個Intent來描述你想要做的事情。這個過程包含了三塊:Intent本身,一個啟動外部Activity的調用,以及一些當焦點返回Activity時處理圖像數據的代碼。
下面代碼的功能用于調用一個意圖來捕獲視頻:
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的第一個Activity組件。執行這項檢查是非常重要的,因為如果你調用startActivityForResult()方法所使用的Intent沒有APP可以處理的話,那么你的APP將會崩潰。所以只要結果不是null,那么就意味著可以安全使用這個Intent。
查看視頻
Android的相機應用會通過onActivityResult()方法將視頻返回,視頻位于onActivityResult()方法的回調參數Intent中的Uri所指向的位置。下面的代碼展示了接收這個視頻并且在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);} }總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:调用相机之简单摄像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode】3月21日打卡-Da
- 下一篇: Android官方开发文档Trainin