Remove pickup gesture settings if sensor is not found.

Update gesture settings to check for available pickup sensor before
showing pickup gesture settings.

Test: manual - launch gesture settings on different device and check for
pickup preference. Auto test pending.

Bug: 32072298

Change-Id: Iaab0290dcfeb2b0c9195df685f225d092a658347
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)) {