2017-08-08 5 views
0

J'essaie d'aller chercher l'emplacement de l'image capturée de la caméra. Quand j'ai essayé une interface Exif mais revenir encore une valeur nulle de quelqu'un photos.Please aider ...Comment chercher l'emplacement actuel de l'image prise de l'appareil photo dans Android

Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
          startActivityForResult(i, 100); 
    @Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 100 && resultCode == RESULT_OK && data != null) { 
     // Let's read picked image data - its URI 
     Uri pickedImage = data.getData(); 
     // Let's read picked image path using content resolver 
     String[] filePath = {MediaStore.Images.Media.DATA}; 
     Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null); 
     cursor.moveToFirst(); 
     img1 = cursor.getString(cursor.getColumnIndex(filePath[0])); 


     ExifInterface exif = null; 
     try { 
      exif = new ExifInterface(img1); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     String lat = ExifInterface.TAG_GPS_LATITUDE; 
      String lat_data = exif.getAttribute(lat); 
      Log.e("MYDATA", lat_data); 
      cursor.close(); 
      Toast.makeText(this, "Image Uploaded", Toast.LENGTH_SHORT).show(); 

    } 
+0

partagez votre code ce que vous avez essayé – sumit

+0

Vérifiez que votre fichier contient vraiment des données de localisation, la plupart du temps les appareils android ont la fonction désactivée par défaut dans l'application appareil photo. – smora

+0

En fait, j'active la géolocalisation dans un appareil Android. –

Répondre

0

Utilisez résolveur contenu pour construire ExifInterface avec fluxEntrée

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     super.onActivityResult(requestCode, resultCode, intent); 
     if (resultCode != Activity.RESULT_OK) { 
      return; 
     } 
     final Uri originalUri = intent.getData(); 

     try { 
      final InputStream inputStream = getContext().getContentResolver().openInputStream(originalUri); 
      final android.support.media.ExifInterface exif = new android.support.media.ExifInterface(inputStream); 
      final double[] latLong = exif.getLatLong(); 
      Log.v(LOG_TAG, "Image selected at position: " + latLong[0] + " : " + latLong[1]); 

     } catch (IOException e) { 
      Log.w(LOG_TAG, "Error when getting location from image", e); 
     } 
    } 

import lib Soutien

compile 'com.android.support:exifinterface:x.x.x' 
+0

final double [] latLong = exif.getLatLong (????); Ce qui s'applique dans cet argument –

+0

vérifier la documentation api, la méthode a changé dans la version différente de l'API. Utilisez la version de support import android.support.media.ExifInterface; – smora

+0

ExifInterface exif = null; try { exif = nouvelle ExifInterface (img1); } catch (IOException e) { e.printStackTrace(); } Chaîne lat = ExifInterface.TAG_GPS_LATITUDE; Chaîne lat_data = exif.getAttribute (lat); Log.e ("MYDATA", lat_data); Chaîne log = ExifInterface.TAG_GPS_LONGITUDE; Chaîne log_data = exif.getAttribute (log); Log.e ("MYDATA1", log_data); Merci d'avoir obtenu la solution en utilisant ce code –