本文將教你如何創建file對象存儲音頻視頻等媒體信息,以及如何獲取file對象的uri地址
創建File文件
...MainActivity extends ....
private Uri imageUri;
public static final int TAKE_PHOTO = 1;
...onClick(view v)...
File outputXXX = new File(參數1,參數2);//創建file文件
try{
? ? if(outputXXX.exist()){
? ? ? ? outputXXX.delete();
????}
outputXXX.createNewFile();
}catche(IOException e){
? ? e.printStackTrace();
}
參數1:數據存儲的位置(例如getExternalCacheDir(),將數據存在應用關聯緩存目錄下)
參數2:存儲文件名(例如“image.jpg”,數據將以.jpg文件儲存)
獲取本地真實路徑
...onClick(view v)...
if(Build.VERSION.SDK_INT >= 24){
? ? imageUri = FileProvider.getUriForFile(參數3,參數4,參數5);//轉換成一個封裝過的Uri對象
}else{
? ? imageUri = Uri.fromFile(參數5);
}
參數3:關聯的activity(例如Mainactivity.this),填傳入的context對象
參數4:任意唯一字符串(如"com.example.xxx.fileprovider"? 我的程序名為test,則填"com.example.test.fileprovider")
參數5:剛剛創建的file對象(outputXXX)
啟動相機程序
...onClick(view v)...
Intent intent =new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent,TAKE_PHOTO);
注冊內容提供器
在獲取本地真實路徑的時候使用了內容提供器,因此在AndroidManifest.xml中注冊
<application
? ? ....
? ? ....
<provider
? ? ? ? android:authorities="com.example.test.fileprovider"
? ? ? ? android:name="android.support.v4.content.FileProvider"
? ? ? ? android:exported="false"
? ? ? ? android:grantUriPermissions="true">
????<meta-data
? ? ? ? ? ? android:name="android.support.FILE_PROVIDER_PATHS"
? ? ? ? ? ? android:resource="@xml/file_paths"/>
</provider>
</application>