Android scrivere EXIF ​​GPS Latitude e Longitude su JPEG non riuscito

Vorrei aggiungere i dati GPS come la longitudine e la latitudine nella foto jpeg. La foto viene catturata visualizzando la scheda (NFC) Nel registro possono essere visualizzati i valori corretti ma questi valori non possono essere scritti nel file di foto jpg!

Sotto è il mio codice: è utilizzato per salvare i file jpg salvati e call il metodo sotto Il metodo viene utilizzato per aggiungere parametri EXIF ​​GPS nel jpg I parametri GPS come la longitudine e la latitudine sono già stati presi in un'altra attività.

  • Come compilare la più recente libreria FFmpeg per Android?
  • Mismatch del Jar! Correggere le dependencies
  • 'Condividi via' un'applicazione che viene eseguita senza una vista
  • Come sapere se un dispositivo Android dispone di chiavi dure
  • La forza di applicazione Android si chiude durante un'altra attività
  • Cambiare locale in modo programmato non funzionante in alcuni dispositivi
  • Utilizzo EXIF ​​Viewer in Firefox per vedere il risultato.

    La questione per l'exception IO è importnte?

    Di seguito è riportto il log importnte del gatto log che può rendere l'errore: 07-26 11: 48: 30.386: D / NativeNfcTag (195): tag perso, riavvio del ciclo di polling

    public static void writeFile (File photo, double latitude, double longitude) throws IOException{ ExifInterface exif = null; try{ Log.v("latiDouble", ""+latitude); Log.v("longiDouble", ""+longitude); exif = new ExifInterface(photo.getCanonicalPath()); if (exif != null) { double latitu = latitude; double longitu = longitude; double alat = Math.abs(latitu); double along = Math.abs(longitu); String stringLati = convertDoubleIntoDegree(alat); String stringLongi = convertDoubleIntoDegree(along); exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, stringLati); exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, stringLongi); Log.v("latiString", ""+ stringLati); Log.v("longiString", ""+ stringLongi); exif.saveAttributes(); String lati = exif.getAttribute (ExifInterface.TAG_GPS_LATITUDE); String longi = exif.getAttribute (ExifInterface.TAG_GPS_LONGITUDE); Log.v("latiResult", ""+ lati); Log.v("longiResult", ""+ longi); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

    Il seguente è la posizione per call il metodo …

      Cursor locationCursor = dbHandler.fetchGpsLocationTypeByAttendInfoID(attendInfoId); if (locationCursor.getCount()>0) { double latitude = dbHandler.fetchDoubleItem(locationCursor,"LATITUDE"); double longitude = dbHandler.fetchDoubleItem(locationCursor,"LONGITUDE"); Log.v("latitude",""+latitude); Log.v("latitude",""+longitude); try { GpsUtils.writeFile(photoFile, latitude, longitude); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } dbHandler.close(); cameraHandler.startPreview(); 

  • I dati dell'adattatore RecycleView risultano errati quando si scorre troppo velocemente
  • Applicazione che invoca l'utilizzo del bluetooth
  • Ricezione di SMS su Android App
  • Riordina gli elementi di ListView trascinando
  • come mantenere l'applicazione in esecuzione in background? continuare a raccogliere i dati?
  • Errore di recupero dati di descrizione di lettore di Android RSS
  • One Solution collect form web for “Android scrivere EXIF ​​GPS Latitude e Longitude su JPEG non riuscito”

    Ok, ho lottato con questo per lungo tempo ma finalmente lo ho trovato. L'ultima volta che ho usato questo codice ha funzionato:

     ExifInterface exif = new ExifInterface(imgFile.getCanonicalPath()); //String latitudeStr = "90/1,12/1,30/1"; double lat = location.getLatitude(); double alat = Math.abs(lat); String dms = Location.convert(alat, Location.FORMAT_SECONDS); String[] splits = dms.split(":"); String[] secnds = (splits[2]).split("\\."); String seconds; if(secnds.length==0) { seconds = splits[2]; } else { seconds = secnds[0]; } String latitudeStr = splits[0] + "/1," + splits[1] + "/1," + seconds + "/1"; exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, latitudeStr); exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, lat>0?"N":"S"); double lon = location.getLongitude(); double alon = Math.abs(lon); dms = Location.convert(alon, Location.FORMAT_SECONDS); splits = dms.split(":"); secnds = (splits[2]).split("\\."); if(secnds.length==0) { seconds = splits[2]; } else { seconds = secnds[0]; } String longitudeStr = splits[0] + "/1," + splits[1] + "/1," + seconds + "/1"; exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, longitudeStr); exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, lon>0?"E":"W"); exif.saveAttributes(); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.