OmniControl: generic proximity check for wakeup events

for devices that support deep sleep with active proximity
sensor event listener. Does cover power button and volume
button wake events

needed for https://github.com/omnirom/android_frameworks_base/commit/ebe1144a65f87d5be3af41b20c5260798b5b3ce9

Change-Id: I27812a1fda8739272456609e89ab193e52ae6de1
diff --git a/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt b/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt
index adc42b7..0267440 100644
--- a/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/ButtonSettingsFragment.kt
@@ -28,11 +28,13 @@
 import androidx.preference.PreferenceFragmentCompat
 import androidx.preference.PreferenceScreen
 
+import org.omnirom.omnilib.utils.DeviceUtils
 
 class ButtonSettingsFragment : AbstractSettingsFragment() {
     private val CATEGORY_POWER = "button_power"
     private val KEY_ADVANCED_REBOOT = "advanced_reboot"
     private val KEY_POWER_TORCH = "long_press_power_torch"
+    private val KEY_SYSTEM_PROXI_CHECK_ENABLED = "system_proxi_check_enabled";
 
     companion object {
         @DrawableRes
@@ -59,6 +61,13 @@
 
         val powerCategory: PreferenceCategory? = findPreference(CATEGORY_POWER)
         if (powerCategory != null) {
+            val supportPowerButtonProxyCheck = resources.getBoolean(org.omnirom.omnilib.R.bool.config_proxiSensorWakupCheck)
+            val proxyCheckPreference: Preference? = findPreference(KEY_SYSTEM_PROXI_CHECK_ENABLED)
+            if (!DeviceUtils.deviceSupportsProximitySensor(requireActivity()) || !supportPowerButtonProxyCheck) {
+                if (proxyCheckPreference != null) {
+                    powerCategory.removePreference(proxyCheckPreference)
+                }
+            }
             val id =
                 Resources.getSystem().getIdentifier("config_rebootActionsList", "array", "android")
             if (id != 0) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2054975..4c656d6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -161,4 +161,8 @@
     <string name="hex_color_input_hint">Hex</string>
     <string name="color_activity_title">Select color</string>
 
+    <!-- Proximity check -->
+    <string name="system_proxi_check_enabled_title">Proximity check</string>
+    <string name="system_proxi_check_enabled_summary">Check proximity sensor before handling power button and volume button wake events</string>
+
 </resources>
diff --git a/app/src/main/res/xml/button_settings_preferences.xml b/app/src/main/res/xml/button_settings_preferences.xml
index 138bb08..f1c6c60 100644
--- a/app/src/main/res/xml/button_settings_preferences.xml
+++ b/app/src/main/res/xml/button_settings_preferences.xml
@@ -19,6 +19,12 @@
             android:summary="@string/long_press_power_torch_summary"
             android:defaultValue="false" />
 
+        <omnirom.preference.SystemSettingSwitchPreference
+            android:key="system_proxi_check_enabled"
+            android:title="@string/system_proxi_check_enabled_title"
+            android:summary="@string/system_proxi_check_enabled_summary"
+            android:defaultValue="false"/>
+
     </PreferenceCategory>
 
 </PreferenceScreen>