diff --git a/src/com/android/camera/ComboPreferences.java b/src/com/android/camera/ComboPreferences.java
index 80adfbe..42cf624 100644
--- a/src/com/android/camera/ComboPreferences.java
+++ b/src/com/android/camera/ComboPreferences.java
@@ -330,8 +330,5 @@
             listener.onSharedPreferenceChanged(this, key);
         }
         BackupManager.dataChanged(mPackageName);
-
-        Object newValue = sharedPreferences.getAll().get(key);
-        UsageStatistics.onEvent("CameraSettingsChange", newValue.toString(), key);
     }
 }
diff --git a/src/com/android/camera/ListPreference.java b/src/com/android/camera/ListPreference.java
index 34040d7..909b32c 100644
--- a/src/com/android/camera/ListPreference.java
+++ b/src/com/android/camera/ListPreference.java
@@ -27,6 +27,7 @@
 import android.util.TypedValue;
 
 import com.android.camera.util.CameraUtil;
+import com.android.camera.util.UsageStatistics;
 import com.android.camera2.R;
 
 /**
@@ -159,6 +160,7 @@
         SharedPreferences.Editor editor = getSharedPreferences().edit();
         editor.putString(mKey, value);
         editor.apply();
+        UsageStatistics.onEvent("CameraSettingsChange", value, mKey);
     }
 
     @Override
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index d6b1b65..d2281f4 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -1014,7 +1014,8 @@
         setCameraState(SNAPSHOT_IN_PROGRESS);
         UsageStatistics.onEvent(UsageStatistics.COMPONENT_CAMERA,
                 UsageStatistics.ACTION_CAPTURE_DONE, "Photo", 0,
-                UsageStatistics.hashFileName(mNamedImages.mQueue.lastElement().title + ".jpg"));
+                UsageStatistics.hashFileName(mNamedImages.mQueue.lastElement().title + ".jpg"),
+                mParameters.flatten());
         return true;
     }
 
diff --git a/src_pd/com/android/camera/util/UsageStatistics.java b/src_pd/com/android/camera/util/UsageStatistics.java
index faacb9d..98dc89c 100644
--- a/src_pd/com/android/camera/util/UsageStatistics.java
+++ b/src_pd/com/android/camera/util/UsageStatistics.java
@@ -51,10 +51,11 @@
     public static void setPendingTransitionCause(String cause) {}
     public static void onContentViewChanged(String screenComponent, String screenName) {}
     public static void onEvent(String category, String action, String label) {};
-    public static void onEvent(String category, String action, String label, long optional_value) {};
-    public static void onEvent(String category, String action, String label, long optional_value,
+    public static void onEvent(String category, String action, String label, long optionalValue) {};
+    public static void onEvent(String category, String action, String label, long optionalValue,
                                String fileNameHash) {};
-
+    public static void onEvent(String category, String action, String label,
+                               long optionalValue, String fileNameHash, String parameters) {}
     public static String hashFileName(String fileName) {
         return "";
     }
