Sto provando a scrivere lat-long e altri dati sull'intestazione Exif di un jpeg nella mia app per telecamera personalizzata. In genere Android popola automaticamente l'intestazione con dati quali apertura, ISO, velocità dell'otturatore ecc. Tuttavia, quando aggiungo manualmente creare un'istanza , impostare la posizione GPS con SetAttributes()
e chiamare SaveAttributes()
; tutti gli altri dati della fotocamera scompaiono.Android ExifInterface saveAttributes() Senza sovrascrivere i dati precedenti?
È questo dovrebbe succedere? Come posso semplicemente aggiungere un tag senza sovrascrivere tutto il resto?
Ho visto un esempio altrove di creare due ExifInterfaces, un vecchio (dalla foto) e una nuova, e copiare ogni valore popolato dal vecchio al nuovo insieme a qualsiasi altro dato. Questo, tuttavia, è fastidioso e lungo. Mi piacerebbe trovare una soluzione migliore.
Ecco il mio codice:
try{
ExifInterface exif = new ExifInterface(pictureFile.getAbsolutePath());
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, mGpsLocation.getLatDms());
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, mGpsLocation.getLonDms());
exif.setAttribute(ExifInterface.TAG_GPS_ALTITUDE, mGpsLocation.getAltDms());
exif.saveAttributes();
} catch(IOException e){
e.printStackTrace();
}
Grazie
Non sono sicuro del motivo per cui questo sta accadendo con voi. Ho provato lo stesso metodo che hai menzionato e nessuno dei miei dati EXIF è stato sovrascritto. Solo la mia posizione GPS viene modificata dopo aver salvato gli attributi. Testato sui seguenti dispositivi, Nexus Prime - 4.2.1 Motorola Moto E - 4.4.4 –