diff options
4 files changed, 14 insertions, 5 deletions
diff --git a/src/com/android/camera/one/v2/OneCameraImpl.java b/src/com/android/camera/one/v2/OneCameraImpl.java index 294e74c35..4415859eb 100644 --- a/src/com/android/camera/one/v2/OneCameraImpl.java +++ b/src/com/android/camera/one/v2/OneCameraImpl.java @@ -32,6 +32,7 @@ import android.hardware.camera2.DngCreator; import android.hardware.camera2.TotalCaptureResult; import android.hardware.camera2.params.MeteringRectangle; import android.hardware.camera2.params.StreamConfigurationMap; +import android.location.Location; import android.media.Image; import android.media.ImageReader; import android.net.Uri; @@ -490,7 +491,7 @@ public class OneCameraImpl extends AbstractOneCamera { exif.setTag(directionTag); } new ExifUtil(exif).populateExif(Optional.<TaskImageContainer.TaskImage>absent(), - Optional.of(new CaptureResultProxy(result))); + Optional.of(new CaptureResultProxy(result)), Optional.<Location>absent()); } catch (IOException e) { Log.w(TAG, "Could not read exif from gcam jpeg", e); exif = null; diff --git a/src/com/android/camera/one/v2/OneCameraZslImpl.java b/src/com/android/camera/one/v2/OneCameraZslImpl.java index 275eec910..b5cc7363d 100644 --- a/src/com/android/camera/one/v2/OneCameraZslImpl.java +++ b/src/com/android/camera/one/v2/OneCameraZslImpl.java @@ -29,6 +29,7 @@ import android.hardware.camera2.CaptureResult.Key; import android.hardware.camera2.TotalCaptureResult; import android.hardware.camera2.params.MeteringRectangle; import android.hardware.camera2.params.StreamConfigurationMap; +import android.location.Location; import android.media.CameraProfile; import android.media.Image; import android.media.ImageReader; @@ -630,7 +631,7 @@ public class OneCameraZslImpl extends AbstractOneCamera { exif.setTag(directionTag); } new ExifUtil(exif).populateExif(Optional.<TaskImageContainer.TaskImage>absent(), - Optional.of(new CaptureResultProxy(result))); + Optional.of(new CaptureResultProxy(result)), Optional.<Location>absent()); session.saveAndFinish(acquireJpegBytes(image, degrees), size.getWidth(), size.getHeight(), 0, exif, new OnMediaSavedListener() { @Override diff --git a/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java b/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java index 7cbf024ec..e5d8b3f93 100644 --- a/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java +++ b/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java @@ -18,6 +18,7 @@ package com.android.camera.processing.imagebackend; import android.graphics.ImageFormat; import android.graphics.Rect; +import android.location.Location; import android.media.CameraProfile; import android.net.Uri; @@ -262,13 +263,14 @@ public class TaskCompressImageToJpeg extends TaskJpegEncode { protected ExifInterface createExif(TaskImage image, ListenableFuture<TotalCaptureResultProxy> totalCaptureResultProxyFuture) { ExifInterface exif = new ExifInterface(); + Optional<Location> location = Optional.fromNullable(mSession.getLocation()); try { new ExifUtil(exif).populateExif(Optional.of(image), - Optional.<CaptureResultProxy>of(totalCaptureResultProxyFuture.get())); + Optional.<CaptureResultProxy>of(totalCaptureResultProxyFuture.get()), location); } catch (InterruptedException | ExecutionException e) { new ExifUtil(exif).populateExif(Optional.of(image), - Optional.<CaptureResultProxy>absent()); + Optional.<CaptureResultProxy>absent(), location); } return exif; diff --git a/src/com/android/camera/util/ExifUtil.java b/src/com/android/camera/util/ExifUtil.java index a7c5b32ec..ef340102b 100644 --- a/src/com/android/camera/util/ExifUtil.java +++ b/src/com/android/camera/util/ExifUtil.java @@ -65,9 +65,11 @@ public class ExifUtil { * * @param image A {@link TaskImageContainer.TaskImage} from which to extract info from. * @param captureResult A {@link CaptureResultProxy} from which to extract info from. + * @param location optinally a location that should be added to the EXIF. */ public void populateExif(Optional<TaskImageContainer.TaskImage> image, - Optional<CaptureResultProxy> captureResult) { + Optional<CaptureResultProxy> captureResult, + Optional<Location> location) { addMakeAndModelToExif(); if (image.isPresent()) { addImageDataToExif(image.get()); @@ -75,6 +77,9 @@ public class ExifUtil { if (captureResult.isPresent()) { addCaptureResultToExif(mExif, captureResult.get()); } + if (location.isPresent()) { + addLocationToExif(location.get()); + } } private void addMakeAndModelToExif() { |