android7.0以上手机摄像头,SD卡 访问
1、 在AndroidManifest.xml 设置 provider
<provider>
android:name="android.support.v4.content.FileProvider"
android:authorities="com.wondersgroup.smartcampus.teacher.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
2、在res文件夹下的xml文件夹下添加file_paths文件
<paths>
<!--第一个参数随便写,第二个参数是 对那个目录下面的文件进行分装呢,如果什么都不写就代表是sd 卡下面-->
<external-path name="my_images" path="smartCampus/images"/>
</paths>
3、使用
录制视频
captureMediaFile 保存地址
limit_time 录制时间
fileprovider 包名+“.fileprovider”
public static IntentcreateCaptureMediaIntent(File captureMediaFile, long limit_time, Context context, String fileprovider) {
Uri uri =null;
// 7.0 中的处理
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//FileProvider 将文件进行分装, 然后供外部应用(相机)访问提高了当前应用的安全性
uri = FileProvider.getUriForFile(context, fileprovider, captureMediaFile);//通过FileProvider 来获取本地图片文件
}else {
uri = Uri.fromFile(captureMediaFile);
}
Intent intent =new Intent();
intent.setAction("android.media.action.VIDEO_CAPTURE");
intent.addCategory("android.intent.category.DEFAULT");
// 保存录像到指定的路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, limit_time);
return intent;
}
拍照
public static IntentcreateCaptureImageIntent(File captureImageFile, Context context, String fileprovider) {
Uri uri =null;
// 7.0 中的处理
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//FileProvider 将文件进行分装, 然后供外部应用(相机)访问提高了当前应用的安全性
uri = FileProvider.getUriForFile(context, fileprovider, captureImageFile);//通过FileProvider 来获取本地图片文件
}else {
uri = Uri.fromFile(captureImageFile);
}
Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
return intent;
}