android - 无法在 Android 中使用 ExifInterface 设置拍摄日期/日期时间标签

标签 android datetime format exif

我已经研究并尝试了很多选项来尝试让它工作,但不幸的是我没有得到任何结果。

我想做的是在 Android 应用程序中的 JPEG Exif 数据中设置拍摄日期标签 (Tag_DateTime)。我已经有了设置纬度和经度标签的工作代码,但我这辈子都无法设置拍摄日期标签。

代码如下:

SimpleDateFormat fmt_Exif = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
try {
    ExifInterface exif = new ExifInterface(filePhoto.getPath());

    // Set and save the GPS and time data
    exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, strLat);
    exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, strLong);
    exif.setAttribute(ExifInterface.TAG_DATETIME, fmt_Exif.format(locLatestLocation.getTime()));
    exif.saveAttributes();

} catch (IOException e) {
    e.printStackTrace();
}
  • locLatestLocation - 用于获取以毫秒为单位的时间的位置。
  • fmt_Exif - SimpleDateFormat 用于将毫秒时间格式化为 TAG_DateTime Exif 标记的正确格式。
  • strLat 和 strLong - 以正确的格式填充到其他地方以设置纬度和经度标签。

我在某处的帖子上看到标签需要以毫秒格式写入,所以也试过无济于事。 为了用实际存储的内容确认我的格式,我从一个带有 Date Taken 标签的 jpeg 文件中读取并输出了未格式化的标签,但输出的格式与我写入标签的格式完全相同,而且它仍然不工作。

可能还值得一提的是,我正在研究 Sanselan 类来执行此操作,并且由于复杂性和缺乏示例,我宁愿尝试让我现有的解决方案正常工作,然后再更改为完全不同的解决方案。

有没有人设法做到这一点,如果是的话,我做错了什么??

最佳答案

Android 的 ExifInterface 恼人地默默地丢弃它认为无效的任何数据。更糟糕的是,文档甚至没有提及可能的有效值。

我还发现,如果您指定了一个 Android 无法识别的 EXIF 属性(即:它不是 ExifInterface 的 TAG_ 常量之一),它也会完全忽略它,并且也会静默失败。

关于android - 无法在 Android 中使用 ExifInterface 设置拍摄日期/日期时间标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004462/

相关文章:

android - 接收 RTP 流 - AudioStream, AudioGroup

java - 如何强制弹出 Android 键盘?

java - 如何确定文件格式? DOS/Unix/MAC

android - 我们如何在不更改 TextView 和布局的情况下更改问题和选项

android - 如何在我的 Galaxy S3 Android 设备上的 Chrome 中执行检查元素?

PHP 日期时间() : Display a length of time greater than 24 hours but not as days if greater than 24 hours

ruby - 如何使用 DateTime.now.strftime ("%Y-%m-%d"将日期时间设置为 1 个月前)?

c# - 如何检查日期格式是否正确,即 yyyy-mmm-dd?

linux - 如何在 Linux 中将终端命令输出( float )转换为整数?

c - Peg Puzzle 格式化输出