保存图片到相册时时间显示1970年以及部分手机会保存两张问题

问题1:关于时间显示1970年的问题,参看博客Android 图片保存到相册时间显示为1970的问题,它通过一个自定义方法getRealPathFromURI()来获取绝对地址,更新图库来解决这个问题,是有效的,但是仍然没有解决图片重复的问题。
问题2:关于保存两张图片的问题,参看博客Android调用MediaStore.Images.Media.insertImage保存图片时生成两张图片的问题。通过几台机型测试发现,这个覆盖原生API的写法,既能解决问题2,同时解决了问题1,而且要简单很多。API插入方法:
MediaStore.Images.Media.insertImage(getContext().getContentResolver(),path_export, file_export.getName(), file_export.getName());

会在部分机型上自动生成一张缩略图,比如小米8(估计其他小米手机都有这个问题),于是深入inserImage源码:
在这里插入图片描述
发现保存图片的方法就是这个:

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, file_export.getAbsolutePath());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = this.getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

而红框部分生成了缩略图,那么掉图中红框部分代码(生成缩略图功能)即可,以此来直接替换insertImage方法。

那出现1970年的原因是什么呢,参看博客
在这里插入图片描述

解决问题2中的方法应该是直接覆盖了那个图像内部的原始日期域DATE_TAKEN和DATE_ADDED。但是我并没有调用:
//将图片的拍摄时间设置为当前的时间
values.put(MediaStore.Images.ImageColumns.DATE_TAKEN, System.currentTimeMillis() )
values.put(MediaStore.Images.ImageColumns.DATE_ADDED, System.currentTimeMillis() )

也将时间正确改为了当前时间,这是为什么呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值