androide:Inserisci GPSTimeStamp nei tag EXIF jpg
Domanda
Sto provando a impostare "GPSTimeStamp" nei tag EXIF di un jpg tramite Android.La documentazione è piuttosto scarsa su questo:
http://developer.android.com/reference/android/media/ExifInterface.html#TAG_GPS_TIMESTAMPIl tipo è String.Valore costante:"GPSTimeStamp".Ma qual è il formato esatto?
Guardando qui:http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/GPS.html
GPSTimeStamp:razionale64u[3] (durante la scrittura, la data viene rimossa se presente e l'ora viene adattata a UTC se include un fuso orario)
Quindi ho bisogno di un valore lungo per un array di 3 celle?Non sono sicuro di cosa inserire.Ho ottenuto un "tempo UTC di questa soluzione, in millisecondi dal 1 ° gennaio 1970." tramite location.getTime ().
http://developer.android.com/reference/android/location/Location.html#getTime%28%29
Se scrivo il valore lungo come stringa nel Timestamp e controllo i tag EXIF tramite "exif" su Linux, ottengo l'errore "denominatore previsto".Tutti gli esperimenti con hh:mm:ss o altri formati sono falliti.Essere un po' perso qui.
Soluzione
Formato corretto per GPSTimeStamp
attributo per il tempo di campionamento 14:22:32
È
"14/1,22/1,32/1"
Puoi utilizzare il seguente codice:
Location location = ...; // TODO - Set location properly.
long locationTome = location.getTime();
ExifInterface imageExif = new ExifInterface("absolute_path_to_image");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(locationTome);
int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
String exifGPSTimestamp = hourOfDay + "/1," + minutes + "/1," + seconds + "/1";
imageExif.setAttribute("GPSTimeStamp", exifGPSTimestamp);
imageExif.saveAttributes();
Ha un formato simile a GPSLatitude
E GPSLongitude
attributi.Una spiegazione utile per tale formato può essere trovata anche qui: http://www.ridgesolutions.ie/index.php/2015/03/05/geotag-exif-gps-latitude-field-format/