问题:保存视频文件到相册视频的时长为0:
代码:
String fileName = FileManagerUtil.getFileName(filePath);
String mimeType = MimeTypesTools.getMimeType(context, fileName);
String title = fileName;
Uri storageUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
ContentValues values = new ContentValues(7);
values.put(MediaStore.Video.Media.TITLE, title);
values.put(MediaStore.Video.Media.DISPLAY_NAME, file.getName());
values.put(MediaStore.Video.Media.DATE_MODIFIED, file.lastModified() / 1000);
values.put(MediaStore.Video.Media.MIME_TYPE, mimeType);
values.put(MediaStore.Video.Media.DATA, filePath);
values.put(MediaStore.Video.Media.SIZE, file.length());
context.getContentResolver().insert(storageUri, values);
问题原因:
这种方式保存到相册时没有设置 MediaStore.Video.Media.DURATION导致的,应该设置这个的值,那么视频的时长怎样获得呢:
static long getDurationOfVideo(String filePath) {
if (!FileManagerUtil.fileExist(filePath)) {
return 0;
}
if (Build.VERSION.SDK_INT >= 10) {
try {
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(filePath);
String duration = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION);
long dur = Long.valueOf(duration);
return dur;
} catch (Exception e) {
return 0;
}
}
return 0;
}