diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f6f6d86..fb5b249 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -89,7 +89,7 @@
     <string name="battery_info_awake_plugged" msgid="176716874713478188">"Aktivzeit beim Laden:"</string>
     <string name="battery_info_screen_on" msgid="376277447175613889">"Display eingeschaltet:"</string>
     <string name="battery_info_status_unknown" msgid="196130600938058547">"Unbekannt"</string>
-    <string name="battery_info_status_charging" msgid="1705179948350365604">"Wird geladen"</string>
+    <string name="battery_info_status_charging" msgid="1705179948350365604">"Wird aufgeladen"</string>
     <string name="battery_info_status_charging_ac" msgid="5874340256342956252">"(AC)"</string>
     <string name="battery_info_status_charging_usb" msgid="4059070156126770959">"(USB)"</string>
     <string name="battery_info_status_charging_wireless" msgid="1822125795446772771">"(drahtlos)"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a6fa5d5..bcde25c 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1764,7 +1764,7 @@
     <string name="sync_menu_sync_cancel" msgid="8292379009626966949">"Annuler la synchronisation"</string>
     <string name="sync_one_time_sync" msgid="6766593624598183090">"Appuyez ici pour lancer la synchronisation<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
-    <string name="sync_gmail" msgid="714886122098006477">"GMAIL"</string>
+    <string name="sync_gmail" msgid="714886122098006477">"Gmail"</string>
     <string name="sync_calendar" msgid="9056527206714733735">"# CALENDAR:"</string>
     <string name="sync_contacts" msgid="9174914394377828043">"Contacts"</string>
     <string name="sync_plug" msgid="3905078969081888738"><font fgcolor="#ffffffff">"Bienvenue sur Google Sync!"</font>\n"Une solution Google pour synchroniser vos données et vous permettre d\'accéder à vos contacts, vos rendez-vous et plus, où que vous soyez."</string>
diff --git a/res/values-km-rKH/arrays.xml b/res/values-km-rKH/arrays.xml
index 035d241..b5ba344 100644
--- a/res/values-km-rKH/arrays.xml
+++ b/res/values-km-rKH/arrays.xml
@@ -137,7 +137,7 @@
     <item msgid="3189211552661432651">"បាន​​អញ្ជើញ"</item>
     <item msgid="3206450250360237549">"បរាជ័យ"</item>
     <item msgid="7785896708926971207">"មាន"</item>
-    <item msgid="2330782789550628803">"ក្រៅ​ជួរ"</item>
+    <item msgid="2330782789550628803">"ក្រៅ​តំបន់"</item>
   </string-array>
   <string-array name="bluetooth_visibility_timeout_entries">
     <item msgid="8151962652413645395">"២ នាទី"</item>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 45875cf..d4eb867 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -620,7 +620,7 @@
     <string name="wifi_disabled_generic" msgid="4259794910584943386">"បាន​បិទ"</string>
     <string name="wifi_disabled_network_failure" msgid="3111321240793227690">"បាន​រារាំង​ការ​តភ្ជាប់​អ៊ីនធឺណិត​មិន​ល្អ"</string>
     <string name="wifi_disabled_password_failure" msgid="8659805351763133575">"បញ្ហា​ក្នុង​ការ​ផ្ទៀងផ្ទាត់"</string>
-    <string name="wifi_not_in_range" msgid="1136191511238508967">"មិន​នៅ​ក្នុង​ជួរ"</string>
+    <string name="wifi_not_in_range" msgid="1136191511238508967">"មិន​នៅ​ក្នុង​តំបន់"</string>
     <string name="wifi_wps_available_first_item" msgid="4422547079984583502">"WPS អាច​ប្រើ​បាន"</string>
     <string name="wifi_wps_available_second_item" msgid="8427520131718215301">" (មាន WPS)"</string>
     <string name="wifi_secured_first_item" msgid="4072076186051083451">"មាន​សុវត្ថិភាព​ជា​មួយ <xliff:g id="WIFI_SECURITY_SHORT">%1$s</xliff:g>"</string>
@@ -646,7 +646,7 @@
     <string name="wifi_connect_failed_message" product="default" msgid="2185803140161396572">"ទូរស័ព្ទ​មិន​អាច​តភ្ជាប់​ទៅ​បណ្ដាញ​វ៉ាយហ្វាយ​នេះ"</string>
     <string name="wifi_advanced_titlebar" msgid="4485841401774142908">"វ៉ាយហ្វាយ​កម្រិត​ខ្ពស់"</string>
     <string name="wifi_setting_frequency_band_title" msgid="3655327399028584656">"ក្រុម​ហ្វ្រេកង់​វ៉ាយហ្វាយ"</string>
-    <string name="wifi_setting_frequency_band_summary" msgid="3250740757118009784">"បញ្ជាក់​ជួរ​ប្រេកង់​នៃ​ប្រតិបត្តិ​ការ"</string>
+    <string name="wifi_setting_frequency_band_summary" msgid="3250740757118009784">"បញ្ជាក់​តំបន់​ប្រេកង់​នៃ​ប្រតិបត្តិការ"</string>
     <string name="wifi_setting_frequency_band_error" msgid="837281974489794378">"មាន​បញ្ហា​ក្នុង​ការ​កំណត់​ក្រុម​ប្រេកង់។"</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"អាសយដ្ឋាន MAC"</string>
     <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"អាសយដ្ឋាន IP"</string>
@@ -1009,8 +1009,8 @@
     <string name="location_category_recent_location_requests" msgid="1938721350424447421">"សំណើ​ទីតាំង​ថ្មី"</string>
     <string name="location_no_recent_apps" msgid="2800907699722178041">"បច្ចុប្បន្ន​គ្មាន​កម្មវិធី​បាន​ស្នើ​ទីតាំង"</string>
     <string name="location_category_location_services" msgid="7437150886946685979">"សេវាកម្ម​ទីតាំង"</string>
-    <string name="location_high_battery_use" msgid="517199943258508020">"ការ​ប្រើ​ប្រាស់​ថ្ម​​​ខ្លាំង"</string>
-    <string name="location_low_battery_use" msgid="8602232529541903596">"ការ​ប្រើប្រាស់​ជិត​អស់​ថ្ម"</string>
+    <string name="location_high_battery_use" msgid="517199943258508020">"ប្រើ​ថ្ម​ច្រើន"</string>
+    <string name="location_low_battery_use" msgid="8602232529541903596">"​ប្រើ​ថ្ម​តិច"</string>
     <string name="location_mode_screen_title" msgid="4528716772270246542">"របៀបកំណត់​ទីតាំង"</string>
     <string name="location_mode_high_accuracy_description" msgid="6418936349431602808">"ប្រើជីភីអេស, ហ្វាយវ៉ាយ និង​​បណ្ដាញ​​ចល័ត​ដើម្បី​កំណត់​ទីតាំង"</string>
     <string name="location_mode_battery_saving_description" msgid="1728668969743485109">"ប្រើ​ហ្វាយវ៉ាយ ​និង​​បណ្ដាញ​​ចល័ត​ដើម្បី​​កំណត់​​ទីតាំង"</string>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index c2cb6db..56b2cd9 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -351,7 +351,7 @@
   <string-array name="captioning_edge_type_selector_titles">
     <item msgid="6022616153255438487">"Nėra"</item>
     <item msgid="1352974708028506778">"Išdėstymas"</item>
-    <item msgid="5850876295428722675">"Viršuje esančio objekto šešėlis"</item>
+    <item msgid="5850876295428722675">"Krintantis šešėlis"</item>
     <item msgid="4620283365518546731">"Iškilus"</item>
     <item msgid="6395808180998856466">"Įdubęs"</item>
   </string-array>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index ca613e2..f1ada6e 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1099,7 +1099,7 @@
     <string name="verify_applications_summary" msgid="6737505521913263792">"Forby eller advar før installasjon av apper som kan være skadelige"</string>
     <string name="advanced_settings" msgid="1777249286757067969">"Avanserte innstillinger"</string>
     <string name="advanced_settings_summary" msgid="4016682978071086747">"Aktiver flere innstillingsalternativer"</string>
-    <string name="application_info_label" msgid="5736524913065714880">"Info om app"</string>
+    <string name="application_info_label" msgid="5736524913065714880">"Info om appen"</string>
     <string name="storage_label" msgid="8700867073480107253">"Lagring"</string>
     <string name="auto_launch_label" msgid="3012617472833815382">"Start som standard"</string>
     <string name="auto_launch_label_generic" msgid="3230569852551968694">"Standardinnstillinger"</string>
@@ -1527,7 +1527,7 @@
     <string name="usage_type_on_time" msgid="3351200096173733159">"Tid på"</string>
     <string name="usage_type_no_coverage" msgid="3797004252954385053">"Tid uten signal"</string>
     <string name="battery_action_stop" msgid="649958863744041872">"Tving avslutning"</string>
-    <string name="battery_action_app_details" msgid="7861051816778419018">"Info om app"</string>
+    <string name="battery_action_app_details" msgid="7861051816778419018">"Info om appen"</string>
     <string name="battery_action_app_settings" msgid="4570481408106287454">"Innstillinger for app"</string>
     <string name="battery_action_display" msgid="7338551244519110831">"Skjerminnstillinger"</string>
     <string name="battery_action_wifi" msgid="8181553479021841207">"Innstillinger for Wi-Fi"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index bf1948b..8e9f868 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -440,7 +440,7 @@
   </plurals>
     <string name="no_notification_listeners" msgid="2767405417723149879">"Nie sú nainštalované žiadne aplikácie na počúvanie upozornení."</string>
     <string name="notification_listener_security_warning_title" msgid="6494221261778885893">"Povoliť službu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> bude môcť čítať všetky upozornenia, ktoré uverejní systém, alebo ktorákoľvek z nainštalovaných aplikácií. Upozornenia môžu obsahovať osobné informácie, ako sú napríklad mená kontaktov alebo texty správ, ktoré sa vám odoslali. Aplikácia bude tiež môcť tieto upozornenia zrušiť alebo sa dotknúť tlačidiel akcií v upozorneniach."</string>
+    <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> bude môcť čítať všetky upozornenia, ktoré uverejní systém, alebo ktorákoľvek z nainštalovaných aplikácií. Upozornenia môžu obsahovať osobné informácie, ako sú napríklad mená kontaktov alebo texty správ, ktoré sa vám odoslali. Aplikácia bude tiež môcť tieto upozornenia zatvoriť alebo sa dotknúť tlačidiel akcií v upozorneniach."</string>
     <string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
     <string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Zapnúť Bluetooth"</string>
     <string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 3a94865..dbfa1bc 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -33,6 +33,7 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.database.ContentObserver;
+import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
 import android.hardware.input.KeyboardLayout;
 import android.os.Bundle;
@@ -492,9 +493,9 @@
                 if (device != null
                         && !device.isVirtual()
                         && device.isFullKeyboard()) {
-                    final String inputDeviceDescriptor = device.getDescriptor();
+                    final InputDeviceIdentifier identifier = device.getIdentifier();
                     final String keyboardLayoutDescriptor =
-                            mIm.getCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor);
+                            mIm.getCurrentKeyboardLayoutForInputDevice(identifier);
                     final KeyboardLayout keyboardLayout = keyboardLayoutDescriptor != null ?
                             mIm.getKeyboardLayout(keyboardLayoutDescriptor) : null;
 
@@ -508,7 +509,7 @@
                     pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                         @Override
                         public boolean onPreferenceClick(Preference preference) {
-                            showKeyboardLayoutDialog(inputDeviceDescriptor);
+                            showKeyboardLayoutDialog(identifier);
                             return true;
                         }
                     });
@@ -539,19 +540,19 @@
         }
     }
 
-    private void showKeyboardLayoutDialog(String inputDeviceDescriptor) {
+    private void showKeyboardLayoutDialog(InputDeviceIdentifier inputDeviceIdentifier) {
         KeyboardLayoutDialogFragment fragment =
-                new KeyboardLayoutDialogFragment(inputDeviceDescriptor);
+                new KeyboardLayoutDialogFragment(inputDeviceIdentifier);
         fragment.setTargetFragment(this, 0);
         fragment.show(getActivity().getFragmentManager(), "keyboardLayout");
     }
 
     @Override
-    public void onSetupKeyboardLayouts(String inputDeviceDescriptor) {
+    public void onSetupKeyboardLayouts(InputDeviceIdentifier inputDeviceIdentifier) {
         final Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.setClass(getActivity(), KeyboardLayoutPickerActivity.class);
-        intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_DESCRIPTOR,
-                inputDeviceDescriptor);
+        intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER,
+                inputDeviceIdentifier);
         mIntentWaitingForResult = intent;
         startActivityForResult(intent, 0);
     }
@@ -561,10 +562,10 @@
         super.onActivityResult(requestCode, resultCode, data);
 
         if (mIntentWaitingForResult != null) {
-            String inputDeviceDescriptor = mIntentWaitingForResult.getStringExtra(
-                    KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_DESCRIPTOR);
+            InputDeviceIdentifier inputDeviceIdentifier = mIntentWaitingForResult
+                    .getParcelableExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER);
             mIntentWaitingForResult = null;
-            showKeyboardLayoutDialog(inputDeviceDescriptor);
+            showKeyboardLayoutDialog(inputDeviceIdentifier);
         }
     }
 
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
index a232a0f..451b36e 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
@@ -30,6 +30,7 @@
 import android.content.Intent;
 import android.content.Loader;
 import android.content.res.Resources;
+import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
 import android.hardware.input.KeyboardLayout;
 import android.hardware.input.InputManager.InputDeviceListener;
@@ -48,9 +49,9 @@
 
 public class KeyboardLayoutDialogFragment extends DialogFragment
         implements InputDeviceListener, LoaderCallbacks<KeyboardLayoutDialogFragment.Keyboards> {
-    private static final String KEY_INPUT_DEVICE_DESCRIPTOR = "inputDeviceDescriptor";
+    private static final String KEY_INPUT_DEVICE_IDENTIFIER = "inputDeviceIdentifier";
 
-    private String mInputDeviceDescriptor;
+    private InputDeviceIdentifier mInputDeviceIdentifier;
     private int mInputDeviceId = -1;
     private InputManager mIm;
     private KeyboardLayoutAdapter mAdapter;
@@ -58,8 +59,8 @@
     public KeyboardLayoutDialogFragment() {
     }
 
-    public KeyboardLayoutDialogFragment(String inputDeviceDescriptor) {
-        mInputDeviceDescriptor = inputDeviceDescriptor;
+    public KeyboardLayoutDialogFragment(InputDeviceIdentifier inputDeviceIdentifier) {
+        mInputDeviceIdentifier = inputDeviceIdentifier;
     }
 
     @Override
@@ -76,7 +77,7 @@
         super.onCreate(savedInstanceState);
 
         if (savedInstanceState != null) {
-            mInputDeviceDescriptor = savedInstanceState.getString(KEY_INPUT_DEVICE_DESCRIPTOR);
+            mInputDeviceIdentifier = savedInstanceState.getParcelable(KEY_INPUT_DEVICE_IDENTIFIER);
         }
 
         getLoaderManager().initLoader(0, null, this);
@@ -85,7 +86,7 @@
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
-        outState.putString(KEY_INPUT_DEVICE_DESCRIPTOR, mInputDeviceDescriptor);
+        outState.putParcelable(KEY_INPUT_DEVICE_IDENTIFIER, mInputDeviceIdentifier);
     }
 
     @Override
@@ -119,7 +120,8 @@
 
         mIm.registerInputDeviceListener(this, null);
 
-        InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceDescriptor);
+        InputDevice inputDevice =
+                mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
         if (inputDevice == null) {
             dismiss();
             return;
@@ -143,7 +145,7 @@
 
     private void onSetupLayoutsButtonClicked() {
         ((OnSetupKeyboardLayoutsListener)getTargetFragment()).onSetupKeyboardLayouts(
-                mInputDeviceDescriptor);
+                mInputDeviceIdentifier);
     }
 
     @Override
@@ -156,7 +158,7 @@
         if (which >= 0 && which < mAdapter.getCount()) {
             KeyboardLayout keyboardLayout = mAdapter.getItem(which);
             if (keyboardLayout != null) {
-                mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+                mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
                         keyboardLayout.getDescriptor());
             }
             dismiss();
@@ -165,7 +167,7 @@
 
     @Override
     public Loader<Keyboards> onCreateLoader(int id, Bundle args) {
-        return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceDescriptor);
+        return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceIdentifier);
     }
 
     @Override
@@ -289,11 +291,11 @@
     }
 
     private static final class KeyboardLayoutLoader extends AsyncTaskLoader<Keyboards> {
-        private final String mInputDeviceDescriptor;
+        private final InputDeviceIdentifier mInputDeviceIdentifier;
 
-        public KeyboardLayoutLoader(Context context, String inputDeviceDescriptor) {
+        public KeyboardLayoutLoader(Context context, InputDeviceIdentifier inputDeviceIdentifier) {
             super(context);
-            mInputDeviceDescriptor = inputDeviceDescriptor;
+            mInputDeviceIdentifier = inputDeviceIdentifier;
         }
 
         @Override
@@ -301,7 +303,7 @@
             Keyboards keyboards = new Keyboards();
             InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE);
             String[] keyboardLayoutDescriptors = im.getKeyboardLayoutsForInputDevice(
-                    mInputDeviceDescriptor);
+                    mInputDeviceIdentifier);
             for (String keyboardLayoutDescriptor : keyboardLayoutDescriptors) {
                 KeyboardLayout keyboardLayout = im.getKeyboardLayout(keyboardLayoutDescriptor);
                 if (keyboardLayout != null) {
@@ -311,7 +313,7 @@
             Collections.sort(keyboards.keyboardLayouts);
 
             String currentKeyboardLayoutDescriptor =
-                    im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceDescriptor);
+                    im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier);
             if (currentKeyboardLayoutDescriptor != null) {
                 final int numKeyboardLayouts = keyboards.keyboardLayouts.size();
                 for (int i = 0; i < numKeyboardLayouts; i++) {
@@ -349,6 +351,6 @@
     }
 
     public interface OnSetupKeyboardLayoutsListener {
-        public void onSetupKeyboardLayouts(String inputDeviceDescriptor);
+        public void onSetupKeyboardLayouts(InputDeviceIdentifier mInputDeviceIdentifier);
     }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
index 932dd10..645695e 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java
@@ -20,6 +20,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 
 import android.content.Context;
+import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
 import android.hardware.input.InputManager.InputDeviceListener;
 import android.hardware.input.KeyboardLayout;
@@ -35,7 +36,7 @@
 
 public class KeyboardLayoutPickerFragment extends SettingsPreferenceFragment
         implements InputDeviceListener {
-    private String mInputDeviceDescriptor;
+    private InputDeviceIdentifier mInputDeviceIdentifier;
     private int mInputDeviceId = -1;
     private InputManager mIm;
     private KeyboardLayout[] mKeyboardLayouts;
@@ -46,15 +47,15 @@
      * Intent extra: The input device descriptor of the keyboard whose keyboard
      * layout is to be changed.
      */
-    public static final String EXTRA_INPUT_DEVICE_DESCRIPTOR = "input_device_descriptor";
+    public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
 
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        mInputDeviceDescriptor = getActivity().getIntent().getStringExtra(
-                EXTRA_INPUT_DEVICE_DESCRIPTOR);
-        if (mInputDeviceDescriptor == null) {
+        mInputDeviceIdentifier = getActivity().getIntent().getParcelableExtra(
+                EXTRA_INPUT_DEVICE_IDENTIFIER);
+        if (mInputDeviceIdentifier == null) {
             getActivity().finish();
         }
 
@@ -70,7 +71,8 @@
 
         mIm.registerInputDeviceListener(this, null);
 
-        InputDevice inputDevice = mIm.getInputDeviceByDescriptor(mInputDeviceDescriptor);
+        InputDevice inputDevice =
+                mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor());
         if (inputDevice == null) {
             getActivity().finish();
             return;
@@ -97,10 +99,10 @@
             if (layout != null) {
                 boolean checked = checkboxPref.isChecked();
                 if (checked) {
-                    mIm.addKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+                    mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
                             layout.getDescriptor());
                 } else {
-                    mIm.removeKeyboardLayoutForInputDevice(mInputDeviceDescriptor,
+                    mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier,
                             layout.getDescriptor());
                 }
                 return true;
@@ -143,7 +145,7 @@
 
     private void updateCheckedState() {
         String[] enabledKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(
-                mInputDeviceDescriptor);
+                mInputDeviceIdentifier);
         Arrays.sort(enabledKeyboardLayouts);
 
         for (Map.Entry<CheckBoxPreference, KeyboardLayout> entry : mPreferenceMap.entrySet()) {
