summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2013-04-24 10:58:58 -0700
committerSascha Haeberling <haeberling@google.com>2013-04-24 10:58:58 -0700
commitb3aa8b64087ecf64254134208b0fa0be7bd43800 (patch)
tree28054b430e89cad6b02ba14369b22acb37c3b521 /src/com/android/camera
parentf9ff7ffe2004ed2077f38a91dafb213495e5bf70 (diff)
downloadandroid_packages_apps_Snap-b3aa8b64087ecf64254134208b0fa0be7bd43800.tar.gz
android_packages_apps_Snap-b3aa8b64087ecf64254134208b0fa0be7bd43800.tar.bz2
android_packages_apps_Snap-b3aa8b64087ecf64254134208b0fa0be7bd43800.zip
Store location for SRI panoramas.
Bug: 8692005 Change-Id: I1499de0103e518ee321ebb0c566b9fb4a7a853d3
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/PanoramaModule.java27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/com/android/camera/PanoramaModule.java b/src/com/android/camera/PanoramaModule.java
index c83bf825d..007ea7a4c 100644
--- a/src/com/android/camera/PanoramaModule.java
+++ b/src/com/android/camera/PanoramaModule.java
@@ -35,6 +35,7 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.Size;
+import android.location.Location;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Handler;
@@ -176,6 +177,9 @@ public class PanoramaModule implements CameraModule,
private boolean mPaused;
private boolean mIsCreatingRenderer;
+ private LocationManager mLocationManager;
+ private ComboPreferences mPreferences;
+
private class MosaicJpeg {
public MosaicJpeg(byte[] data, int width, int height) {
this.data = data;
@@ -279,6 +283,10 @@ public class PanoramaModule implements CameraModule,
mGLRootView = (GLRootView) mActivity.getGLRoot();
+ mPreferences = new ComboPreferences(mActivity);
+ CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal());
+ mLocationManager = new LocationManager(mActivity, null);
+
mMainHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -902,6 +910,7 @@ public class PanoramaModule implements CameraModule,
mActivity.getResources().getString(R.string.pano_file_name_format), mTimeTaken);
String filepath = Storage.generateFilepath(filename);
+ Location loc = mLocationManager.getCurrentLocation();
ExifInterface exif = new ExifInterface();
try {
exif.readExif(jpegData);
@@ -910,19 +919,27 @@ public class PanoramaModule implements CameraModule,
TimeZone.getDefault());
exif.setTag(exif.buildTag(ExifInterface.TAG_ORIENTATION,
ExifInterface.getOrientationValueForRotation(orientation)));
+ writeLocation(loc, exif);
exif.writeExif(jpegData, filepath);
} catch (IOException e) {
Log.e(TAG, "Cannot set exif for " + filepath, e);
Storage.writeFile(filepath, jpegData);
}
-
int jpegLength = (int) (new File(filepath).length());
return Storage.addImage(mContentResolver, filename, mTimeTaken,
- null, orientation, jpegLength, filepath, width, height);
+ loc, orientation, jpegLength, filepath, width, height);
}
return null;
}
+ private static void writeLocation(Location location, ExifInterface exif) {
+ if (location == null) {
+ return;
+ }
+ exif.addGpsTags(location.getLatitude(), location.getLongitude());
+ exif.setTag(exif.buildTag(ExifInterface.TAG_GPS_PROCESSING_METHOD, location.getProvider()));
+ }
+
private void clearMosaicFrameProcessorIfNeeded() {
if (!mPaused || mThreadRunning) return;
// Only clear the processor if it is initialized by this activity
@@ -943,6 +960,7 @@ public class PanoramaModule implements CameraModule,
@Override
public void onPauseBeforeSuper() {
mPaused = true;
+ if (mLocationManager != null) mLocationManager.recordLocation(false);
}
@Override
@@ -1059,6 +1077,11 @@ public class PanoramaModule implements CameraModule,
}
keepScreenOnAwhile();
+ // Initialize location service.
+ boolean recordLocation = RecordLocationPreference.get(mPreferences,
+ mContentResolver);
+ mLocationManager.recordLocation(recordLocation);
+
// Dismiss open menu if exists.
PopupManager.getInstance(mActivity).notifyShowPopup(null);
mRootView.requestLayout();