diff --git a/res/values/strings.xml b/res/values/strings.xml
index b71c344..8b57638 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4755,7 +4755,7 @@
     <!-- UI debug setting: force use of NuPlayer summary [CHAR LIMIT=50] -->
     <string name="use_nuplayer_summary">Use NuPlayer instead of AwesomePlayer</string>
 
-    <!-- UI debug setting: disable USB audio routing title [CHAR LIMIT=25] -->
+    <!-- UI debug setting: disable USB audio routing title [CHAR LIMIT=32] -->
     <string name="usb_audio_disable_routing">Disable USB audio routing</string>
     <!-- UI debug setting: disable USB audio routing summary [CHAR LIMIT=50] -->
     <string name="usb_audio_disable_routing_summary">Disable automatic routing to USB audio peripherals</string>
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index a2ddcdb..f30e393 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -32,7 +32,7 @@
         android:summary="%s"
         android:persistent="false" />
 
-    <CheckBoxPreference
+    <SwitchPreference
         android:key="toggle_nfc"
         android:title="@string/nfc_quick_toggle_title"
         android:summary="@string/nfc_quick_toggle_summary"
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index b63a5a1..b256f94 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -256,7 +256,7 @@
 
         final Activity activity = getActivity();
         mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
-        CheckBoxPreference nfc = (CheckBoxPreference) findPreference(KEY_TOGGLE_NFC);
+        SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
         PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
         CheckBoxPreference nsd = (CheckBoxPreference) findPreference(KEY_TOGGLE_NSD);
 
diff --git a/src/com/android/settings/nfc/NfcEnabler.java b/src/com/android/settings/nfc/NfcEnabler.java
index 018b8ae..2fb95e4 100644
--- a/src/com/android/settings/nfc/NfcEnabler.java
+++ b/src/com/android/settings/nfc/NfcEnabler.java
@@ -21,10 +21,10 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.nfc.NfcAdapter;
-import android.preference.CheckBoxPreference;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
 
+import android.preference.SwitchPreference;
 import com.android.settings.R;
 
 /**
@@ -34,7 +34,7 @@
  */
 public class NfcEnabler implements Preference.OnPreferenceChangeListener {
     private final Context mContext;
-    private final CheckBoxPreference mCheckbox;
+    private final SwitchPreference mSwitch;
     private final PreferenceScreen mAndroidBeam;
     private final NfcAdapter mNfcAdapter;
     private final IntentFilter mIntentFilter;
@@ -50,16 +50,16 @@
         }
     };
 
-    public NfcEnabler(Context context, CheckBoxPreference checkBoxPreference,
+    public NfcEnabler(Context context, SwitchPreference switchPreference,
             PreferenceScreen androidBeam) {
         mContext = context;
-        mCheckbox = checkBoxPreference;
+        mSwitch = switchPreference;
         mAndroidBeam = androidBeam;
         mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
 
         if (mNfcAdapter == null) {
             // NFC is not supported
-            mCheckbox.setEnabled(false);
+            mSwitch.setEnabled(false);
             mAndroidBeam.setEnabled(false);
             mIntentFilter = null;
             return;
@@ -73,7 +73,7 @@
         }
         handleNfcStateChanged(mNfcAdapter.getAdapterState());
         mContext.registerReceiver(mReceiver, mIntentFilter);
-        mCheckbox.setOnPreferenceChangeListener(this);
+        mSwitch.setOnPreferenceChangeListener(this);
     }
 
     public void pause() {
@@ -81,14 +81,14 @@
             return;
         }
         mContext.unregisterReceiver(mReceiver);
-        mCheckbox.setOnPreferenceChangeListener(null);
+        mSwitch.setOnPreferenceChangeListener(null);
     }
 
     public boolean onPreferenceChange(Preference preference, Object value) {
         // Turn NFC on/off
 
         final boolean desiredState = (Boolean) value;
-        mCheckbox.setEnabled(false);
+        mSwitch.setEnabled(false);
 
         if (desiredState) {
             mNfcAdapter.enable();
@@ -102,14 +102,14 @@
     private void handleNfcStateChanged(int newState) {
         switch (newState) {
         case NfcAdapter.STATE_OFF:
-            mCheckbox.setChecked(false);
-            mCheckbox.setEnabled(true);
+            mSwitch.setChecked(false);
+            mSwitch.setEnabled(true);
             mAndroidBeam.setEnabled(false);
             mAndroidBeam.setSummary(R.string.android_beam_disabled_summary);
             break;
         case NfcAdapter.STATE_ON:
-            mCheckbox.setChecked(true);
-            mCheckbox.setEnabled(true);
+            mSwitch.setChecked(true);
+            mSwitch.setEnabled(true);
             mAndroidBeam.setEnabled(true);
             if (mNfcAdapter.isNdefPushEnabled()) {
                 mAndroidBeam.setSummary(R.string.android_beam_on_summary);
@@ -118,13 +118,13 @@
             }
             break;
         case NfcAdapter.STATE_TURNING_ON:
-            mCheckbox.setChecked(true);
-            mCheckbox.setEnabled(false);
+            mSwitch.setChecked(true);
+            mSwitch.setEnabled(false);
             mAndroidBeam.setEnabled(false);
             break;
         case NfcAdapter.STATE_TURNING_OFF:
-            mCheckbox.setChecked(false);
-            mCheckbox.setEnabled(false);
+            mSwitch.setChecked(false);
+            mSwitch.setEnabled(false);
             mAndroidBeam.setEnabled(false);
             break;
         }
