summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/LocationManager.java
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2011-09-07 15:34:17 +0800
committerWu-cheng Li <wuchengli@google.com>2011-09-08 02:50:09 +0800
commita93a4d60eacee4e12471b45f8691c14114e113a4 (patch)
tree8d924a9924c8238d2d74238c73d94710f2bd3aee /src/com/android/camera/LocationManager.java
parent03e53d81e5d64542fba64565962b9c0049525f71 (diff)
downloadpackages_apps_LegacyCamera-a93a4d60eacee4e12471b45f8691c14114e113a4.zip
packages_apps_LegacyCamera-a93a4d60eacee4e12471b45f8691c14114e113a4.tar.gz
packages_apps_LegacyCamera-a93a4d60eacee4e12471b45f8691c14114e113a4.tar.bz2
Set rotation and gps in video snapshot.
bug:5187868 Change-Id: I1092e3d37dba78073b42aa9107e7cc326d67decc
Diffstat (limited to 'src/com/android/camera/LocationManager.java')
-rw-r--r--src/com/android/camera/LocationManager.java47
1 files changed, 29 insertions, 18 deletions
diff --git a/src/com/android/camera/LocationManager.java b/src/com/android/camera/LocationManager.java
index 56bd812..fcf21b6 100644
--- a/src/com/android/camera/LocationManager.java
+++ b/src/com/android/camera/LocationManager.java
@@ -48,8 +48,30 @@ public class LocationManager {
mListener = listener;
}
- public void startReceivingLocationUpdates() {
- mRecordLocation = true;
+ public Location getCurrentLocation() {
+ if (!mRecordLocation) return null;
+
+ // go in best to worst order
+ for (int i = 0; i < mLocationListeners.length; i++) {
+ Location l = mLocationListeners[i].current();
+ if (l != null) return l;
+ }
+ Log.d(TAG, "No location received yet.");
+ return null;
+ }
+
+ public void recordLocation(boolean recordLocation) {
+ if (mRecordLocation != recordLocation) {
+ mRecordLocation = recordLocation;
+ if (recordLocation) {
+ startReceivingLocationUpdates();
+ } else {
+ stopReceivingLocationUpdates();
+ }
+ }
+ }
+
+ private void startReceivingLocationUpdates() {
if (mLocationManager == null) {
mLocationManager = (android.location.LocationManager)
mContext.getSystemService(Context.LOCATION_SERVICE);
@@ -72,7 +94,7 @@ public class LocationManager {
1000,
0F,
mLocationListeners[0]);
- mListener.showGpsOnScreenIndicator(false);
+ if (mListener != null) mListener.showGpsOnScreenIndicator(false);
} catch (SecurityException ex) {
Log.i(TAG, "fail to request location update, ignore", ex);
} catch (IllegalArgumentException ex) {
@@ -82,8 +104,7 @@ public class LocationManager {
}
}
- public void stopReceivingLocationUpdates() {
- mRecordLocation = false;
+ private void stopReceivingLocationUpdates() {
if (mLocationManager != null) {
for (int i = 0; i < mLocationListeners.length; i++) {
try {
@@ -94,17 +115,7 @@ public class LocationManager {
}
Log.d(TAG, "stopReceivingLocationUpdates");
}
- mListener.hideGpsOnScreenIndicator();
- }
-
- public Location getCurrentLocation() {
- // go in best to worst order
- for (int i = 0; i < mLocationListeners.length; i++) {
- Location l = mLocationListeners[i].current();
- if (l != null) return l;
- }
- Log.d(TAG, "No location received yet.");
- return null;
+ if (mListener != null) mListener.hideGpsOnScreenIndicator();
}
private class LocationListener
@@ -127,7 +138,7 @@ public class LocationManager {
}
// If GPS is available before start camera, we won't get status
// update so update GPS indicator when we receive data.
- if (mRecordLocation &&
+ if (mListener != null && mRecordLocation &&
android.location.LocationManager.GPS_PROVIDER.equals(mProvider)) {
mListener.showGpsOnScreenIndicator(true);
}
@@ -154,7 +165,7 @@ public class LocationManager {
case LocationProvider.OUT_OF_SERVICE:
case LocationProvider.TEMPORARILY_UNAVAILABLE: {
mValid = false;
- if (mRecordLocation &&
+ if (mListener != null && mRecordLocation &&
android.location.LocationManager.GPS_PROVIDER.equals(provider)) {
mListener.showGpsOnScreenIndicator(false);
}