diff --git a/java/res/values-land/keyboard-heights.xml b/java/res/values-land/keyboard-heights.xml
index 670be3329ec47eacc41ee3dac0edf64fd8eb7745..d57f96be37933518bc5b1ebbff935e7e730f6987 100644
--- a/java/res/values-land/keyboard-heights.xml
+++ b/java/res/values-land/keyboard-heights.xml
@@ -33,7 +33,5 @@
     <!-- Preferable keyboard height in absolute scale: 45.0mm -->
         <!-- Xoom -->
         <item>HARDWARE=stingray,265.4378</item>
-    <!-- Default value for unknown device: empty string -->
-        <item>,</item>
     </string-array>
 </resources>
diff --git a/java/res/values/keyboard-heights.xml b/java/res/values/keyboard-heights.xml
index c651a89b3ba5c515260368c34ec7cad8253afa36..12dd51d9dd6b345315a3acce864b679b0d1b8c77 100644
--- a/java/res/values/keyboard-heights.xml
+++ b/java/res/values/keyboard-heights.xml
@@ -33,7 +33,5 @@
     <!-- Preferable keyboard height in absolute scale: 48.0mm -->
         <!-- Xoom -->
         <item>HARDWARE=stingray,283.1337</item>
-    <!-- Default value for unknown device: empty string -->
-        <item>,</item>
     </string-array>
 </resources>
diff --git a/java/res/values/keypress-vibration-durations.xml b/java/res/values/keypress-vibration-durations.xml
index cde4e4447b98fb311bda83d8aab4e0efeaabcd43..032b5fd91560ee95aa320b18377aaa3d235dcb36 100644
--- a/java/res/values/keypress-vibration-durations.xml
+++ b/java/res/values/keypress-vibration-durations.xml
@@ -59,7 +59,5 @@
         <item>MODEL=XT1035:MANUFACTURER=motorola,18</item>
         <!-- Sony Xperia Z, Z Ultra -->
         <item>MODEL=C6603|C6806:MANUFACTURER=Sony,35</item>
-        <!-- Default value for unknown device. The negative value means system default. -->
-        <item>,-1</item>
     </string-array>
 </resources>
diff --git a/java/res/values/keypress-volumes.xml b/java/res/values/keypress-volumes.xml
index d359055c294a56f9b6a05d4429f789a0358f9cd1..074581d0043929b34d6f6a496ba0b1c63d3f9e02 100644
--- a/java/res/values/keypress-volumes.xml
+++ b/java/res/values/keypress-volumes.xml
@@ -26,7 +26,5 @@
         <item>HARDWARE=grouper,0.3f</item>
         <item>HARDWARE=mako,0.3f</item>
         <item>HARDWARE=manta,0.2f</item>
-        <!-- Default value for unknown device. The negative value means system default. -->
-        <item>,-1.0f</item>
     </string-array>
 </resources>
diff --git a/java/res/values/phantom-sudden-move-event-device-list.xml b/java/res/values/phantom-sudden-move-event-device-list.xml
index 53002b31e34dbd30a4ba086967383535cf056971..4f91cd3892eed066156ea785d8608638862cbd39 100644
--- a/java/res/values/phantom-sudden-move-event-device-list.xml
+++ b/java/res/values/phantom-sudden-move-event-device-list.xml
@@ -23,7 +23,5 @@
              See {@link com.android.inputmethod.keyboard.PointerTracker}. -->
         <!-- Xoom -->
         <item>HARDWARE=stingray,true</item>
-        <!-- Default value for unknown device -->
-        <item>,false</item>
     </string-array>
 </resources>
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 09315504997f21ad05a7effe47b9eb51d1100d3e..19aef140a72146a911a77e1dd84427436b25e8fd 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -215,8 +215,8 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
 
         final Resources res = mainKeyboardViewAttr.getResources();
         sNeedsPhantomSuddenMoveEventHack = Boolean.parseBoolean(
-                ResourceUtils.getDeviceOverrideValue(
-                        res, R.array.phantom_sudden_move_event_device_list));
+                ResourceUtils.getDeviceOverrideValue(res,
+                        R.array.phantom_sudden_move_event_device_list, Boolean.FALSE.toString()));
         BogusMoveEventDetector.init(res);
 
         sTimerProxy = timerProxy;
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index f0f7de7d4261c4a912eabd533e01dd8cc90f9dca..45c5b733f7509345c4c24c09755367a115eec8f9 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -310,9 +310,13 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
                 : readDefaultKeypressSoundVolume(res);
     }
 
+    // Default keypress sound volume for unknown devices.
+    // The negative value means system default.
+    private static final String DEFAULT_KEYPRESS_SOUND_VOLUME = Float.toString(-1.0f);
+
     public static float readDefaultKeypressSoundVolume(final Resources res) {
-        return Float.parseFloat(
-                ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_volumes));
+        return Float.parseFloat(ResourceUtils.getDeviceOverrideValue(res,
+                R.array.keypress_volumes, DEFAULT_KEYPRESS_SOUND_VOLUME));
     }
 
     public static int readKeyLongpressTimeout(final SharedPreferences prefs,
@@ -335,9 +339,13 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
                 : readDefaultKeypressVibrationDuration(res);
     }
 
+    // Default keypress vibration duration for unknown devices.
+    // The negative value means system default.
+    private static final String DEFAULT_KEYPRESS_VIBRATION_DURATION = Integer.toString(-1);
+
     public static int readDefaultKeypressVibrationDuration(final Resources res) {
-        return Integer.parseInt(
-                ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_vibration_durations));
+        return Integer.parseInt(ResourceUtils.getDeviceOverrideValue(res,
+                R.array.keypress_vibration_durations, DEFAULT_KEYPRESS_VIBRATION_DURATION));
     }
 
     public static boolean readUsabilityStudyMode(final SharedPreferences prefs) {
diff --git a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
index 3a1c24c741816374832d274068332caf29870c86..49f4929b47852d258124227cd54148dc5dd43931 100644
--- a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
@@ -67,7 +67,8 @@ public final class ResourceUtils {
         sBuildKeyValuesDebugString = "[" + TextUtils.join(" ", keyValuePairs) + "]";
     }
 
-    public static String getDeviceOverrideValue(final Resources res, final int overrideResId) {
+    public static String getDeviceOverrideValue(final Resources res, final int overrideResId,
+            final String defaultValue) {
         final int orientation = res.getConfiguration().orientation;
         final String key = overrideResId + "-" + orientation;
         if (sDeviceOverrideValueMap.containsKey(key)) {
@@ -86,23 +87,6 @@ public final class ResourceUtils {
             return overrideValue;
         }
 
-        String defaultValue = null;
-        try {
-            defaultValue = findDefaultConstant(overrideArray);
-            // The defaultValue might be an empty string.
-            if (defaultValue == null) {
-                Log.w(TAG, "Couldn't find override value nor default value:"
-                        + " resource="+ res.getResourceEntryName(overrideResId)
-                        + " build=" + sBuildKeyValuesDebugString);
-            } else {
-                Log.i(TAG, "Found default value:"
-                        + " resource="+ res.getResourceEntryName(overrideResId)
-                        + " build=" + sBuildKeyValuesDebugString
-                        + " default=" + defaultValue);
-            }
-        } catch (final DeviceOverridePatternSyntaxError e) {
-            Log.w(TAG, "Syntax error, ignored", e);
-        }
         sDeviceOverrideValueMap.put(key, defaultValue);
         return defaultValue;
     }
@@ -152,8 +136,7 @@ public final class ResourceUtils {
             }
             final String condition = conditionConstant.substring(0, posComma);
             if (condition.isEmpty()) {
-                // Default condition. The default condition should be searched by
-                // {@link #findConstantForDefault(String[])}.
+                Log.w(TAG, "Array element has no condition: " + conditionConstant);
                 continue;
             }
             try {
@@ -199,24 +182,6 @@ public final class ResourceUtils {
         return matchedAll;
     }
 
-    @UsedForTesting
-    static String findDefaultConstant(final String[] conditionConstantArray)
-            throws DeviceOverridePatternSyntaxError {
-        if (conditionConstantArray == null) {
-            return null;
-        }
-        for (final String condition : conditionConstantArray) {
-            final int posComma = condition.indexOf(',');
-            if (posComma < 0) {
-                throw new DeviceOverridePatternSyntaxError("Array element has no comma", condition);
-            }
-            if (posComma == 0) { // condition is empty.
-                return condition.substring(posComma + 1);
-            }
-        }
-        return null;
-    }
-
     public static int getDefaultKeyboardWidth(final Resources res) {
         final DisplayMetrics dm = res.getDisplayMetrics();
         return dm.widthPixels;
@@ -224,12 +189,13 @@ public final class ResourceUtils {
 
     public static int getDefaultKeyboardHeight(final Resources res) {
         final DisplayMetrics dm = res.getDisplayMetrics();
-        final String keyboardHeightString = getDeviceOverrideValue(res, R.array.keyboard_heights);
+        final String keyboardHeightInDp = getDeviceOverrideValue(
+                res, R.array.keyboard_heights, null /* defaultValue */);
         final float keyboardHeight;
-        if (TextUtils.isEmpty(keyboardHeightString)) {
+        if (TextUtils.isEmpty(keyboardHeightInDp)) {
             keyboardHeight = res.getDimension(R.dimen.config_default_keyboard_height);
         } else {
-            keyboardHeight = Float.parseFloat(keyboardHeightString) * dm.density;
+            keyboardHeight = Float.parseFloat(keyboardHeightInDp) * dm.density;
         }
         final float maxKeyboardHeight = res.getFraction(
                 R.fraction.config_max_keyboard_height, dm.heightPixels, dm.heightPixels);
diff --git a/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java
index 1ae22e307ba84d108ef4d0fda20f907fa0bbc480..3eb704093562dea05af0ca44c38f1ec29f908d0c 100644
--- a/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java
@@ -19,43 +19,10 @@ package com.android.inputmethod.latin.utils;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
-import com.android.inputmethod.latin.utils.ResourceUtils.DeviceOverridePatternSyntaxError;
-
 import java.util.HashMap;
 
 @SmallTest
 public class ResourceUtilsTests extends AndroidTestCase {
-    public void testFindDefaultConstant() {
-        final String[] nullArray = null;
-        final String[] emptyArray = {};
-        final String[] array = {
-                "HARDWARE=grouper,0.3",
-                "HARDWARE=mako,0.4",
-                ",defaultValue1",
-                "HARDWARE=manta,0.2",
-                ",defaultValue2",
-        };
-
-        try {
-            assertNull(ResourceUtils.findDefaultConstant(nullArray));
-            assertNull(ResourceUtils.findDefaultConstant(emptyArray));
-            assertEquals(ResourceUtils.findDefaultConstant(array), "defaultValue1");
-        } catch (final DeviceOverridePatternSyntaxError e) {
-            fail(e.getMessage());
-        }
-
-        final String[] errorArray = {
-            "HARDWARE=grouper,0.3",
-            "no_comma"
-        };
-        try {
-            final String defaultValue = ResourceUtils.findDefaultConstant(errorArray);
-            fail("exception should be thrown: defaultValue=" + defaultValue);
-        } catch (final DeviceOverridePatternSyntaxError e) {
-            assertEquals("Array element has no comma: no_comma", e.getMessage());
-        }
-    }
-
     public void testFindConstantForKeyValuePairsSimple() {
         final HashMap<String,String> anyKeyValue = CollectionUtils.newHashMap();
         anyKeyValue.put("anyKey", "anyValue");