1

我想在我的 ImageView 上显示照片的拍摄日期。假设我的 girdview 上有照片。一旦我单击它,它将转到其他活动并显示图像的完整尺寸。现在在那个活动中,我需要显示它的拍摄日期。有任何想法吗?

4

3 回答 3

7

我可以看到在 Android 上执行此操作的两种可能方式。第一个是文件修改日期,可以这样实现:

String pathToFile = "Your file path";
File file = new File(pathToFile);
if(file.exists()) {
    long date = file.lastModified();
    /* Do your modified date stuff here */
}

另一种方法是检查图像上的 EXIF 数据以获取照片的拍摄日期(如果该信息可用):

ExifInterface intf = null;
try {
    intf = new ExifInterface(path);
} catch(IOException e) {
    e.printStackTrace();
}

if(intf == null) {
    /* File doesn't exist or isn't an image */
}

String dateString = intf.getAttribute(ExifInterface.TAG_DATETIME);
/* Do your date/time stuff here */

请注意,图像的 Exif 数据可能不包含日期。大多数手机相机和商用相机都会添加日期/时间 Exif 条目,但在计算机上创建的图像不太可能包含 Exif 数据。此外,Exif 日期/时间的格式不是很好。Exif 日期/时间字符串示例:(2012:06:02 14:33:46取自我用 Nexus S 拍摄的图像)

于 2012-09-18T17:06:38.327 回答
2

如果您只是简单地将每个图像从外部存储中读取为File,则File调用一个方法lastModified()来获取文件的修改日期。虽然这不一定是文件的创建日期,但对于像图像这样的不可变文件来说,它很可能是创建日期。

for (File file : files) {
    //This is the date the file was modified/created
    long date = file.lastModified();
    //You can even convert it to a Date if you want
    Date fileData = new Date(date);
}

如果您的应用程序是在外部存储上创建图像的应用程序,并且您绝对只需要文件的初始创建日期,那么您最好在创建图像时自己将该信息存储在本地数据库中。这就是MediaStore框架的作用。

于 2012-09-18T16:36:53.797 回答
0

您可以使用 aRelativeLayout将 theImageView和 aTextView与日期结合起来,检查这个答案

于 2012-09-18T14:31:48.187 回答