summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2013-09-28 00:05:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-09-28 00:05:44 +0000
commitac5cb2430408f9a1854a4e22e8297733279bf75b (patch)
tree14164d4ae6bb79519aab8ffbab47cb884c156fa9 /src/com/android
parentb7be228d192cb8f91079caaa2f77a884a40b1160 (diff)
parent21a2e9cb07caba660120b7f5eba6e053a6cb3ac3 (diff)
downloadandroid_packages_apps_Snap-ac5cb2430408f9a1854a4e22e8297733279bf75b.tar.gz
android_packages_apps_Snap-ac5cb2430408f9a1854a4e22e8297733279bf75b.tar.bz2
android_packages_apps_Snap-ac5cb2430408f9a1854a4e22e8297733279bf75b.zip
Merge "Add basic EXIF to the tiny planet so that rotate succeeds." into gb-ub-photos-carlsbad
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/camera/data/RotationTask.java1
-rw-r--r--src/com/android/camera/tinyplanet/TinyPlanetFragment.java26
2 files changed, 26 insertions, 1 deletions
diff --git a/src/com/android/camera/data/RotationTask.java b/src/com/android/camera/data/RotationTask.java
index 000444729..66134d44c 100644
--- a/src/com/android/camera/data/RotationTask.java
+++ b/src/com/android/camera/data/RotationTask.java
@@ -103,6 +103,7 @@ public class RotationTask extends AsyncTask<LocalData, Void, LocalData> {
if (tag != null) {
exifInterface.setTag(tag);
try {
+ // Note: This only works if the file already has some EXIF.
exifInterface.forceRewriteExif(filePath);
long fileSize = new File(filePath).length();
values.put(Images.Media.SIZE, fileSize);
diff --git a/src/com/android/camera/tinyplanet/TinyPlanetFragment.java b/src/com/android/camera/tinyplanet/TinyPlanetFragment.java
index c49f77ef0..9cde87b16 100644
--- a/src/com/android/camera/tinyplanet/TinyPlanetFragment.java
+++ b/src/com/android/camera/tinyplanet/TinyPlanetFragment.java
@@ -44,14 +44,18 @@ import com.adobe.xmp.XMPMeta;
import com.android.camera.CameraActivity;
import com.android.camera.MediaSaveService;
import com.android.camera.MediaSaveService.OnMediaSavedListener;
+import com.android.camera.exif.ExifInterface;
import com.android.camera.tinyplanet.TinyPlanetPreview.PreviewSizeListener;
import com.android.camera.util.XmpUtil;
import com.android.camera2.R;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.util.Date;
+import java.util.TimeZone;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -358,7 +362,27 @@ public class TinyPlanetFragment extends DialogFragment implements PreviewSizeLis
ByteArrayOutputStream jpeg = new ByteArrayOutputStream();
resultBitmap.compress(CompressFormat.JPEG, 100, jpeg);
- return new TinyPlanetImage(jpeg.toByteArray(), outputSize);
+ return new TinyPlanetImage(addExif(jpeg.toByteArray()), outputSize);
+ }
+
+ /**
+ * Adds basic EXIF data to the tiny planet image so it an be rewritten
+ * later.
+ *
+ * @param jpeg the JPEG data of the tiny planet.
+ * @return The JPEG data containing basic EXIF.
+ */
+ private byte[] addExif(byte[] jpeg) {
+ ExifInterface exif = new ExifInterface();
+ exif.addDateTimeStampTag(ExifInterface.TAG_DATE_TIME, System.currentTimeMillis(),
+ TimeZone.getDefault());
+ ByteArrayOutputStream jpegOut = new ByteArrayOutputStream();
+ try {
+ exif.writeExif(jpeg, jpegOut);
+ } catch (IOException e) {
+ Log.e(TAG, "Could not write EXIF", e);
+ }
+ return jpegOut.toByteArray();
}
private int getDisplaySize() {