Added check to strip out uninitialized EXIF tags.

Bug: 8552339
Change-Id: Ib6ae4f59f9e393e5f6b46877a4b2c3b2fe1852d3
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
index ae501a5..7ca05f2 100644
--- a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
+++ b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java
@@ -24,6 +24,7 @@
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
+import java.util.ArrayList;
 
 /**
  * This class provides a way to replace the Exif header of a JPEG image.
@@ -212,6 +213,7 @@
         if (DEBUG) {
             Log.v(TAG, "Writing exif data...");
         }
+        ArrayList<ExifTag> nullTags = stripNullValueTags(mExifData);
         createRequiredIfdAndTag();
         int exifSize = calculateAllOffset();
         if (exifSize + 8 > MAX_EXIF_SIZE) {
@@ -233,6 +235,20 @@
         dataOutputStream.writeInt(8);
         writeAllTags(dataOutputStream);
         writeThumbnail(dataOutputStream);
+        for (ExifTag t : nullTags) {
+            mExifData.addTag(t);
+        }
+    }
+
+    private ArrayList<ExifTag> stripNullValueTags(ExifData data) {
+        ArrayList<ExifTag> nullTags = new ArrayList<ExifTag>();
+        for(ExifTag t : data.getAllTags()) {
+            if (t.getValue() == null && !ExifInterface.isOffsetTag(t.getTagId())) {
+                data.removeTag(t.getTagId(), t.getIfd());
+                nullTags.add(t);
+            }
+        }
+        return nullTags;
     }
 
     private void writeThumbnail(OrderedDataOutputStream dataOutputStream) throws IOException {