diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 754dbaa..fe52cf2 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -30,6 +30,7 @@
 import android.widget.Switch;
 import android.widget.Toast;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.settings.R;
 import com.android.settings.search.Index;
 import com.android.settings.widget.SwitchBar;
@@ -209,7 +210,8 @@
                 (wifiApState == WifiManager.WIFI_AP_STATE_ENABLED))) {
             mWifiManager.setWifiApEnabled(null, false);
         }
-
+        MetricsLogger.action(mContext,
+                isChecked ? MetricsLogger.ACTION_WIFI_ON : MetricsLogger.ACTION_WIFI_OFF);
         if (!mWifiManager.setWifiEnabled(isChecked)) {
             // Error
             mSwitchBar.setEnabled(true);
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 0d04622..238db69 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -369,6 +369,7 @@
                 showDialog(WPS_PIN_DIALOG_ID);
                 return true;
             case MENU_ID_SCAN:
+                MetricsLogger.action(getActivity(), MetricsLogger.ACTION_WIFI_FORCE_SCAN);
                 mWifiTracker.forceScan();
                 return true;
             case MENU_ID_ADD_NETWORK:
@@ -707,6 +708,7 @@
     }
 
     /* package */ void forget() {
+        MetricsLogger.action(getActivity(), MetricsLogger.ACTION_WIFI_FORGET);
         if (!mSelectedAccessPoint.isSaved()) {
             if (mSelectedAccessPoint.getNetworkInfo().getState() != State.DISCONNECTED) {
                 // Network is active but has no network ID - must be ephemeral.
@@ -728,10 +730,12 @@
     }
 
     protected void connect(final WifiConfiguration config) {
+        MetricsLogger.action(getActivity(), MetricsLogger.ACTION_WIFI_CONNECT);
         mWifiManager.connect(config, mConnectListener);
     }
 
     protected void connect(final int networkId) {
+        MetricsLogger.action(getActivity(), MetricsLogger.ACTION_WIFI_CONNECT);
         mWifiManager.connect(networkId, mConnectListener);
     }
 
@@ -748,6 +752,7 @@
      * Called when "add network" button is pressed.
      */
     /* package */ void onAddNetworkPressed() {
+        MetricsLogger.action(getActivity(), MetricsLogger.ACTION_WIFI_ADD_NETWORK);
         // No exact access point is selected.
         mSelectedAccessPoint = null;
         showDialog(null, true);
