Add location provider name to gps-processing-method in EXIF header.
diff --git a/api/current.xml b/api/current.xml
index 212e661..5f61a21 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -72368,6 +72368,19 @@
 <parameter name="longitude" type="double">
 </parameter>
 </method>
+<method name="setGpsProcessingMethod"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="processing_method" type="java.lang.String">
+</parameter>
+</method>
 <method name="setGpsTimestamp"
  return="void"
  abstract="false"
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index cddbec9..0efcad9 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -717,6 +717,7 @@
         private static final String KEY_GPS_LONGITUDE = "gps-longitude";
         private static final String KEY_GPS_ALTITUDE = "gps-altitude";
         private static final String KEY_GPS_TIMESTAMP = "gps-timestamp";
+        private static final String KEY_GPS_PROCESSING_METHOD = "gps-processing-method";
         private static final String KEY_WHITE_BALANCE = "whitebalance";
         private static final String KEY_EFFECT = "effect";
         private static final String KEY_ANTIBANDING = "antibanding";
@@ -1327,6 +1328,16 @@
         }
 
         /**
+         * Sets GPS processing method. It will store up to 100 characters
+         * in JPEG EXIF header.
+         *
+         * @param processing_method The processing method to get this location.
+         */
+        public void setGpsProcessingMethod(String processing_method) {
+            set(KEY_GPS_PROCESSING_METHOD, processing_method);
+        }
+
+        /**
          * Removes GPS latitude, longitude, altitude, and timestamp from the
          * parameters.
          */
@@ -1335,6 +1346,7 @@
             remove(KEY_GPS_LONGITUDE);
             remove(KEY_GPS_ALTITUDE);
             remove(KEY_GPS_TIMESTAMP);
+            remove(KEY_GPS_PROCESSING_METHOD);
         }
 
         /**
diff --git a/include/camera/CameraParameters.h b/include/camera/CameraParameters.h
index 752afc2..6c6d0bc 100644
--- a/include/camera/CameraParameters.h
+++ b/include/camera/CameraParameters.h
@@ -139,6 +139,9 @@
     // stored in JPEG EXIF header.
     // Example value: "1251192757". Write only.
     static const char KEY_GPS_TIMESTAMP[];
+    // GPS Processing Method
+    // Example value: "GPS" or "NETWORK". Write only.
+    static const char KEY_GPS_PROCESSING_METHOD[];
     // Current white balance setting.
     // Example value: "auto" or WHITE_BALANCE_XXX constants. Read/write.
     static const char KEY_WHITE_BALANCE[];
diff --git a/libs/camera/CameraParameters.cpp b/libs/camera/CameraParameters.cpp
index cf4cbfa..65785c7 100644
--- a/libs/camera/CameraParameters.cpp
+++ b/libs/camera/CameraParameters.cpp
@@ -44,6 +44,7 @@
 const char CameraParameters::KEY_GPS_LONGITUDE[] = "gps-longitude";
 const char CameraParameters::KEY_GPS_ALTITUDE[] = "gps-altitude";
 const char CameraParameters::KEY_GPS_TIMESTAMP[] = "gps-timestamp";
+const char CameraParameters::KEY_GPS_PROCESSING_METHOD[] = "gps-processing-method";
 const char CameraParameters::KEY_WHITE_BALANCE[] = "whitebalance";
 const char CameraParameters::KEY_SUPPORTED_WHITE_BALANCE[] = "whitebalance-values";
 const char CameraParameters::KEY_EFFECT[] = "effect";