Cant set Date Taken/DateTime tag using the ExifInterface in Android

Я исследовал и пробовал множество вариантов, чтобы попытаться заставить это работать, но, к сожалению, у меня ничего не получается.

Я пытаюсь установить тег Date Taken (Tag_DateTime) в Exif-данных JPEG из приложения Android. У меня уже есть рабочий код для установки тегов широты и долготы, но я никак не могу добиться установки тега даты съемки.

Вот код:

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 используется для форматирования миллисекундного времени в правильный формат для Exif-тега TAG_DateTime.
  • strLat & strLong - Заполняется в другом месте в правильном формате для установки тегов Latitude и Longitude.

Я где-то читал, что тег должен быть записан в формате миллисекунд, так что попробовал и это, но безрезультатно. Чтобы подтвердить соответствие моего форматирования с тем, что хранится на самом деле, я прочитал и вывел неформатированный тег из jpeg-файла, который имеет тег Date Taken, но он имеет точно такой же формат, как и тот, что я записываю в тег, и он по-прежнему не работает.

Возможно, стоит упомянуть, что я рассматривал класс Sanselan, чтобы сделать это, но из-за сложности и отсутствия примеров я бы предпочел попытаться заставить работать мое существующее решение, прежде чем переходить на совершенно другое.

Удалось ли кому-нибудь сделать это, и если да, то что я делаю не так?

6
задан JohnHenry 25 January 2012 в 14:38
поделиться