本文将教你如何创建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>