Android 安卓10在插入媒体时如何更改当前时间的日期?
我在媒体商店中插入了一段视频,但在插入我的图库后,排序顺序错误,因为所用的日期不是当前时间,系统使用视频元数据中创建的时间。如何将媒体存储或元数据中的日期更改为当前时间 ExiFinInterface可以编辑元数据中创建的日期,但它仅支持JPEG 这是我用来插入视频的代码Android 安卓10在插入媒体时如何更改当前时间的日期?,android,android-10.0,Android,Android 10.0,我在媒体商店中插入了一段视频,但在插入我的图库后,排序顺序错误,因为所用的日期不是当前时间,系统使用视频元数据中创建的时间。如何将媒体存储或元数据中的日期更改为当前时间 ExiFinInterface可以编辑元数据中创建的日期,但它仅支持JPEG 这是我用来插入视频的代码 ContentValues contentvalues = new ContentValues(); contentvalues.put(MediaStore.Video.VideoColumn
ContentValues contentvalues = new ContentValues();
contentvalues.put(MediaStore.Video.VideoColumns.TITLE, title);
contentvalues.put(MediaStore.Video.VideoColumns.DISPLAY_NAME, fileName);
contentvalues.put(MediaStore.Video.VideoColumns.DATE_TAKEN, System.currentTimeMillis());
contentvalues.put(MediaStore.Video.VideoColumns.DATE_ADDED, Long.valueOf(System.currentTimeMillis() / 1000));
contentvalues.put(MediaStore.Video.VideoColumns.DATE_MODIFIED, Long.valueOf(System.currentTimeMillis() / 1000));
contentvalues.put(MediaStore.Video.VideoColumns.MIME_TYPE, MIME_TYPE_VIDEO);
contentvalues.put(MediaStore.Video.VideoColumns.RELATIVE_PATH, EnvironmentWrappper.RELATIVE_PATH_VIDEO);
contentvalues.put(MediaStore.Video.VideoColumns.SIZE, outputFile.length());
long duration = 0;
List<Metadata> metadataList = VideoPreviewMetadataManager.loadMetaDataLite(outputPath);
if (metadataList != null && !metadataList.isEmpty()) {
for (Metadata metadata : metadataList) {
if (ZMediaMetadataRetriever.METADATA_KEY_DURATION.equals(metadata.getKey())) {
duration = Long.parseLong(metadata.getValue().toString());
}
}
}
contentvalues.put(MediaStore.Video.VideoColumns.DURATION, duration);
try {
Uri uri = resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentvalues);
FileLocalUriWrapper file = new FileLocalUriWrapper(outputPath);
OutputStream fos = resolver.openOutputStream(uri);
InputStream inputStream = file.getFileInputStream();
IOUtils.copyStream(inputStream, fos);
fos.close();
inputStream.close();
} catch (Exception ex) {
ex.printStackTrace();
}
ContentValues ContentValues=新ContentValues();
contentvalues.put(MediaStore.Video.VideoColumns.TITLE,TITLE);
contentvalues.put(MediaStore.Video.VideoColumns.DISPLAY\u名称、文件名);
contentvalues.put(MediaStore.Video.VideoColumns.DATE_take,System.currentTimeMillis());
contentvalues.put(添加了MediaStore.Video.VideoColumns.DATE_,Long.valueOf(System.currentTimeMillis()/1000));
contentvalues.put(MediaStore.Video.VideoColumns.DATE_MODIFIED,Long.valueOf(System.currentTimeMillis()/1000));
contentvalues.put(MediaStore.Video.VideoColumns.MIME\u TYPE、MIME\u TYPE\u Video);
contentvalues.put(MediaStore.Video.VideoColumns.RELATIVE\u PATH,EnvironmentWrappper.RELATIVE\u PATH\u Video);
contentvalues.put(MediaStore.Video.VideoColumns.SIZE,outputFile.length());
长持续时间=0;
List metadataList=VideoPreviewMetadataManager.loadMetaDataLite(outputPath);
if(metadataList!=null&&!metadataList.isEmpty()){
for(元数据:metadataList){
if(zmediameTataRetriever.METADATA\u KEY\u DURATION.equals(METADATA.getKey())){
duration=Long.parseLong(metadata.getValue().toString());
}
}
}
contentvalues.put(MediaStore.Video.VideoColumns.DURATION,DURATION);
试一试{
Uri Uri=resolver.insert(MediaStore.Video.Media.EXTERNAL\u CONTENT\u Uri,contentvalues);
FileLocalUriWrapper file=新的FileLocalUriWrapper(outputPath);
OutputStream fos=解析器。openOutputStream(uri);
InputStream InputStream=file.getFileInputStream();
IOUtils.copyStream(输入流,fos);
fos.close();
inputStream.close();
}捕获(例外情况除外){
例如printStackTrace();
}
因为我没有真正的androidQ机器,所以我使用模拟器测试的结果,似乎这个属性的日期在androidQ中没有影响,甚至很多时候它都是空的
所以我在androidQ中根据获取的数据获取时间属性,在androidQ中根据添加日期获取时间属性
当然,这只是我自己的经验,不同的设备,可能从api28升级到29的设备可能会保留在MediaStore中