diff --git a/res/values/config.xml b/res/values/config.xml
index 7513cef..6d56e18 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -52,6 +52,10 @@
     <string name="gesture_double_twist_sensor_name" translatable="false"></string>
     <string name="gesture_double_twist_sensor_vendor" translatable="false"></string>
 
+    <!-- Pickup sensor name and vendor used by gesture setting -->
+    <string name="gesture_pickup_sensor_name" translatable="false"></string>
+    <string name="gesture_pickup_sensor_vendor" translatable="false"></string>
+
     <!-- When true enable gesture setting. -->
     <bool name="config_gesture_settings_enabled">false</bool>
 
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index b18bc05..14df471 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -82,7 +82,7 @@
 
         // Ambient Display
         boolean dozeEnabled = isDozeAvailable(context);
-        if (dozeEnabled) {
+        if (dozeEnabled && isPickupAvailable(context)) {
             int pickup = Secure.getInt(getContentResolver(), Secure.DOZE_PULSE_ON_PICK_UP, 1);
             addPreference(PREF_KEY_PICK_UP, pickup != 0, PREF_ID_PICK_UP);
         } else {
@@ -204,9 +204,19 @@
     }
 
     private static boolean isDoubleTwistAvailable(Context context) {
+        return hasSensor(context, R.string.gesture_double_twist_sensor_name,
+                R.string.gesture_double_twist_sensor_vendor);
+    }
+
+    private static boolean isPickupAvailable(Context context) {
+        return hasSensor(context, R.string.gesture_pickup_sensor_name,
+                R.string.gesture_pickup_sensor_vendor);
+    }
+
+    private static boolean hasSensor(Context context, int nameResId, int vendorResId) {
         Resources resources = context.getResources();
-        String name = resources.getString(R.string.gesture_double_twist_sensor_name);
-        String vendor = resources.getString(R.string.gesture_double_twist_sensor_vendor);
+        String name = resources.getString(nameResId);
+        String vendor = resources.getString(vendorResId);
         if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(vendor)) {
             SensorManager sensorManager =
                     (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
@@ -253,10 +263,10 @@
                 if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
                     result.add(PREF_KEY_DOUBLE_TAP_POWER);
                 }
-                if (!isDozeAvailable(context)) {
+                if (!isDozeAvailable(context) || !isPickupAvailable(context)) {
                     result.add(PREF_KEY_PICK_UP);
-                    result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
-                } else if (!isDoubleTapAvailable(context)) {
+                }
+                if (!isDozeAvailable(context) || !isDoubleTapAvailable(context)) {
                     result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
                 }
                 if (!isSystemUINavigationAvailable(context)) {
