Come get la latitudine e la longitudine di un'image in sdcard alla mia applicazione?

Dalla mia applicazione posso aprire galleria. C'è un modo per get la latitudine e la longitudine di qualsiasi image selezionata in galleria alla mia applicazione. Qualche idea mi prega di aiutarmi. Grazie in anticipo

  • Cosa fa LayoutInflater in Android?
  • Volley lento e causando perdite di memory
  • come fare la tastiera a scorrimento come app
  • Collegamenti in TextView
  • query getContentResolver causa l'avviso CursorWrapperInner
  • Ruota il layout Frame che contiene i pulsanti dinamici
  • Come determinare se le coordinate long lat sono in una strada con Google Maps API v2
  • Come sostituire un frammento sul clic del button di quel frammento?
  • Caricare l'IMMAGINE dall'URL di JSON in listview
  • Emulazione di scheda basata su host con ID di scheda fissa
  • la conversione di String al calendario. Qual è il modo più semplice?
  • Accesso di Android al database SQL remoto
  • 2 Solutions collect form web for “Come get la latitudine e la longitudine di un'image in sdcard alla mia applicazione?”

    Dovresti andare con la class ExifInterface per leggere i vari metadati EXIF ​​da Immagini:

    Esempio :

    ExifInterface exif = new ExifInterface(filepath); exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); 

    Modificato :

    Ora qui si otterrà lat-long come sotto il formato.

    lat = 30 / 1,12 / 1,34 / 1, lunghezza = 81 / 1,22 / 1,41 / 1

    Per convertire questo in valori reali questo blog mi ha aiutato.

    dobbiamo fare la conversione dal grado, dal minuto e dalla seconda forma alla forma di GeoPoint.

    Da sotto puoi farlo.

      String LATITUDE = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); String LATITUDE_REF = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); String LONGITUDE = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); String LONGITUDE_REF = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); // your Final lat Long Values Float Latitude, Longitude; if((LATITUDE !=null) && (LATITUDE_REF !=null) && (LONGITUDE != null) && (LONGITUDE_REF !=null)) { if(LATITUDE_REF.equals("N")){ Latitude = convertToDegree(LATITUDE); } else{ Latitude = 0 - convertToDegree(LATITUDE); } if(LONGITUDE_REF.equals("E")){ Longitude = convertToDegree(LONGITUDE); } else{ Longitude = 0 - convertToDegree(LONGITUDE); } } private Float convertToDegree(String stringDMS){ Float result = null; String[] DMS = stringDMS.split(",", 3); String[] stringD = DMS[0].split("/", 2); Double D0 = new Double(stringD[0]); Double D1 = new Double(stringD[1]); Double FloatD = D0/D1; String[] stringM = DMS[1].split("/", 2); Double M0 = new Double(stringM[0]); Double M1 = new Double(stringM[1]); Double FloatM = M0/M1; String[] stringS = DMS[2].split("/", 2); Double S0 = new Double(stringS[0]); Double S1 = new Double(stringS[1]); Double FloatS = S0/S1; result = new Float(FloatD + (FloatM/60) + (FloatS/3600)); return result; }; @Override public String toString() { // TODO Auto-generated method stub return (String.valueOf(Latitude) + ", " + String.valueOf(Longitude)); } public int getLatitudeE6(){ return (int)(Latitude*1000000); } public int getLongitudeE6(){ return (int)(Longitude*1000000); } 

    In realtà è ansible utilizzare una function "buildin":

     ExifInterface exif = new ExifInterface(path); float[] latLong = new float[2]; boolean hasLatLong = exif.getLatLong(latLong) if (hasLatLong) { System.out.println("Latitude: " + latLong[0]); System.out.println("Longitude: " + latLong[1]); } 

    Forse è qualcosa di nuovo, ma credo sia molto più conveniente della risposta accettata.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.