title: How to write exif data to image in Android?
body: <p>I'm trying to write a <code>User_Comment</code> and <code>TAG_GPS</code> to a captured image in an Android application using the exif interface, but for some reason the tags don't seem to be appended to the image when I view the image's details in the gallery.</p>
  
  <p>It seems that maybe the tags are not being written to the captured image as the file path may be wrong. I think it could be because I've written the tags to an incorrect image path.</p>
  
  <p>Does anyone know if their is a problem with the way I'm writing the tags to the image?</p>
  
  <p>This is the code that saves the exif data following @Charlie's changes below:</p>
  
  <pre><code>private File getOutputPhotoFile() throws IOException {
            File directory = new File(Environment.getExternalStoragePublicDirectory(
                          Environment.DIRECTORY_PICTURES), getPackageName());
            if (!directory.exists()) {
              if (!directory.mkdirs()) {
                Log.e(TAG, "Failed to create storage directory.");
                return null;
              }
            }
  
  
            String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
  
            File[] files = directory.listFiles();
  
            File exifVar =  new File(directory.getPath(), "IMG_" + timeStamp + ".jpg");
            if(files.length!=0) {
                File newestFile = files[files.length-1];
                exifVar =  new File(directory.getPath() + File.separator + newestFile.getName());
            }
  
            String mString = "Generic Text..";     
            ExifInterface exif = new ExifInterface(exifVar.getAbsolutePath());
            exif.setAttribute("UserComment", mString);
            exif.saveAttributes();
  
  
            exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
              String.valueOf(latituteField.toString()));
  
            exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, 
              String.valueOf(longitudeField.toString()));
  
            exif.saveAttributes();
  
            return exifVar; 
  
  
  
  
      }
  </code></pre>