如何获取相册照片的拍摄时间

项目中有要实现类似微信的图片选择器的需求,而且还要将照片按照时间分期显示。我是用RecyclerView实现的。要实现这样的功能主要是得知道照片的拍摄时间,然后使用MultitypeAdapter将数据进行分类处理显示。
怎样获取拍摄时间呢,主要有3种方法。当然方法有很多种,我在项目中试过的简单好用的有如下3种。
**第一种:通过系统的ExifInterface获取照片拍照时间。使用方法也很简单**。
ExifInterface exifInterface = null;
        try {
            exifInterface = new ExifInterface(photoPath);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String dateTime = exifInterface.getAttribute(ExifInterface.TAG_DATETIME);
        你看到可能不明白这是啥啊,不要捉急,将鼠标移到getAttribute方法上,按住ctrl键,你可以看到源码。主要是通过各种stag来得到你想要的属性,比如:ExifInterface.TAG_DATETIME(拍摄时间),ExifInterface.TAG_IMAGE_DESCRIPTION(照片的详细信息),ExifInterface.TAG_IMAGE_LENGTH(照片的长度),ExifInterface.TAG_IMAGE_WIDTH(照片的宽度)等信息

第二种:使用JAVA手段,通过file的lastModified获取
Long fileTime = file.lastModified();
// Date date = new Date(fileTime);
// SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(“MM月dd日”);
通过这种方法获取到的是一个Long类型的时间(以ms计算),然后给它日期格式化一下,就可以得到拍摄时间。

第三种:根据多媒体数据库查询日期获取

Uri imgUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
cursor = getActivity().getContentResolver().query(imgUri, null, null, null, MediaStore.Images.Media.DATE_TAKEN + ” DESC”);
int dateIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_TAKEN);

以上就是获取照片拍摄时间的几种方法,里面有些基础知识点并没有细说,只是告诉大家可以通过这种方法获取到,如果有不明白的可以在下面留言,我一定会详细的告诉大家(PS:本姑娘也是第一次写博客,主要是总结工作中的一些经验和坑,一方面是不要让自己在同一个地方摔倒两次,另一方面也希望能把这些东西分享给大家,可能文章中有些知识表达的不够好,希望大家多多指正,不喜勿喷)

你可能感兴趣的:(工作日志)