Android呼叫攝像頭拍照
應用程式可以呼叫攝像頭進行拍照並將圖片儲存在SD卡上,具體步驟如下:
1.建立File物件
File物件用於儲存拍照後的照片,具體程式碼如下:
File outputImage = new File(getExternalCacheDir(),"output_image.jpg");
outputImage.createNewFile();
由於從Android6.0開始,讀寫SD卡被列為危險許可權,將圖片儲存在SD卡需要進行執行時許可權處理,而使用應用關聯快取目錄則不需要,應用關聯快取目錄是專門用於存放當前應用快取資料的。通過呼叫getExternalCacheDir()方法可以得到應用關聯快取目錄,並且指定圖片的名字為output_image.jpg。
2.將File物件轉換成Uri物件
Uri物件標識著output_image.jpg這張圖片的本地真實路徑,由於從Android7.0開始直接使用本地真實路徑的Uri被認為是不安全的,會丟擲異常,因此獲取圖片Uri物件的方法分兩種情況考慮:
(1)若裝置的系統版本低於Android7.0
直接呼叫Uri的fromFile()方法,程式碼如下:
imageUri = Uri.fromFile(outputImage);
(2)若裝置的系統版本高於等於Android7.0
通過呼叫FileProvider類的getUriForFile()方法將File物件轉換為一個封裝過的Uri物件,程式碼如下:
if(Build.VERSION.SDK_INT >=24){
imageUri = FileProvider.getUriForFile(MainActivity.this,String,outputImage);
}
FileProvider是一個內容提供器。getUriForFile()方法有3個引數,第一個是Context,第二個是任意的唯一的字串,第三個是File物件。
3.啟動相機拍照
建立一個Intent啟動相機,程式碼如下:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivity(intent);
intent物件指定action為啟動相機動作,並通過putExtra()方法傳入圖片的儲存路徑imageUri,最後啟動該活動。啟動相機拍照後,照片就會儲存在該路徑上。
注意:倘若上面轉換Uri物件的時候使用了FileProvider內容提供器,需要在AndroidManifest.xml檔案內對內容提供器進行註冊,程式碼如下:
<provider
android:name = "android.support.v4.content.FileProvider"
android:authorities = String
android:exported = "false"
android:grantUriPermission = "true">
</provider>
其中的authorities欄位填入的String字串是在呼叫getUriForFile(MainActivity.this,String,outputImage)方法時填入的第二個引數。
相關文章
- Android 呼叫攝像頭拍照Android
- 安卓呼叫攝像頭拍照安卓
- 照片系列之android呼叫攝像頭拍照Android
- Android開發之呼叫攝像頭拍照Android
- Android呼叫攝像頭拍照並顯示照片Android
- Android 呼叫攝像頭功能【拍照與視訊】Android
- C#實現攝像頭呼叫、拍照C#
- Android提供的攝像頭拍照Android
- Android呼叫攝像頭Android
- html5呼叫攝像頭實現拍照HTML
- 在Android中呼叫攝像頭拍照並顯示出來Android
- Android如何呼叫攝像頭Android
- 瀏覽器呼叫攝像頭進行拍照程式瀏覽器
- C# 使用AForge呼叫筆記本攝像頭拍照C#筆記
- android studio呼叫攝像頭拍照及具體步驟演示程式碼Android
- web呼叫攝像頭拍照並上傳到伺服器Web伺服器
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- 純JavaScript實現的呼叫裝置攝像頭並拍照的功能JavaScript
- Android多媒體應用開發-控制攝像頭拍照Android
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- jQuery webcam plugin呼叫攝像頭jQueryWebPlugin
- html5呼叫攝像頭功能HTML
- 安卓開發之呼叫攝像頭安卓
- AngularJS中使用HTML5攝像頭拍照AngularJSHTML
- android opencv 前置攝像頭AndroidOpenCV
- android 開啟攝像頭Android
- 修正Android攝像頭APIAndroidAPI
- html5呼叫攝像頭截圖HTML
- 教你如何利用python呼叫攝像頭Python
- html5呼叫手機攝像頭HTML
- iPhone XS/iPhone XS Max攝像頭拍照解析:蘋果也玩起了AI拍照iPhone蘋果AI
- html5中呼叫攝像頭拍照並上傳(附繞過https的想法)HTMLHTTP
- [譯]Android的多攝像頭支援Android
- [譯] Android 的多攝像頭支援Android
- android studio之簡單呼叫攝像頭並且獲取其照片Android
- python版opencv:如何用筆記本攝像頭拍照儲存PythonOpenCV筆記
- 如何使用HTML5實現利用攝像頭拍照上傳功能HTML
- Android 攝像頭預覽懸浮窗Android