我想在我的 ImageView 上显示照片的拍摄日期。假设我的 girdview 上有照片。一旦我单击它,它将转到其他活动并显示图像的完整尺寸。现在在那个活动中,我需要显示它的拍摄日期。有任何想法吗?
问问题
20003 次
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 回答