把拍摄的视频文件放在了自定义的路径下,无论是使用发广播的方式还是插入数据库的方式,都是无法更新图库,只能查看文件管理器。各种方法都尝试了下,最后才发现系统根本就无法扫描到自己App自定义的路径,很郁闷啊。所以只能在拍摄视频的时候将视频保存在系统能扫描到的路径中,问题解决,我要哭会儿。
测试了几个机型都能在图库里刷新出来,如果还是有不能在图库显示的机型,请告知,谢谢。
如果道友有好的方法,麻烦请告知一下哈。
具体方法:
public void takeVideoFromCamera() {
SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddHHmmss");
String filename = sdf.format(new Date(System.currentTimeMillis())) +".mp4";
//需要在 Environment.getExternalStorageDirectory().getAbsolutePath() 后边加上 /DCIM/Camera
File cameraFile =new File(
Environment.getExternalStorageDirectory().getAbsolutePath() +"/DCIM/Camera",
filename);
if (!cameraFile.getParentFile().exists()) {
cameraFile.getParentFile().mkdirs();
}
Intent intent =new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
//设置视频录制的最长时间 30分钟
intent.putExtra (MediaStore.EXTRA_DURATION_LIMIT,30*60);
//设置视频的最大大小 1000M
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1000*1024*1024L);
//设置视频录制的画质
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile));
startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO);
}
使用发广播的方式:
public static void saveVideoToGallery(Context context, Filefile){
Uri localUri = Uri.fromFile(file);
Intent localIntent =new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri);
context.sendBroadcast(localIntent);
}
如果视频文件保存在系统能扫描到的路径,则不需要使用插入数据库的方式了。
希望能帮到你