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

您所在的位置:网站首页 小米10保存图片 保存图片到相册时时间显示1970年以及部分手机会保存两张问题

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

2024-07-10 17:33| 来源: 网络整理| 查看: 265

问题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() ) 也将时间正确改为了当前时间,这是为什么呢?


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3