OSDN Git Service

Add handling for fingerprint swipe in gesture settings.
authorDoris Ling <dling@google.com>
Thu, 16 Jun 2016 19:30:53 +0000 (12:30 -0700)
committerDoris Ling <dling@google.com>
Thu, 16 Jun 2016 19:30:53 +0000 (12:30 -0700)
Hide fingerprint swipe setting if it is not supported, and update the
corresponding config when user enable/disable the fingerprint gesture.

Bug: 28565958
Change-Id: I5a124d3b6933ea6d3aadceaa0eecaa4bee2ccd9d

src/com/android/settings/gestures/GestureSettings.java

index 0889e2a..2aa4f43 100644 (file)
@@ -22,6 +22,7 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.SystemProperties;
 import android.provider.SearchIndexableResource;
+import android.provider.Settings.Global;
 import android.provider.Settings.Secure;
 import android.support.v7.preference.Preference;
 import android.text.TextUtils;
@@ -80,6 +81,16 @@ public class GestureSettings extends SettingsPreferenceFragment implements
             removePreference(PREF_KEY_PICK_UP_AND_NUDGE);
         }
 
+        // Fingerprint slide for notifications
+        if (isSystemUINavigationAvailable(context)) {
+            GesturePreference preference =
+                    (GesturePreference) findPreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
+            preference.setChecked(isSystemUINavigationEnabled(context));
+            preference.setOnPreferenceChangeListener(this);
+        } else {
+            removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
+        }
+
     }
 
     @Override
@@ -87,10 +98,13 @@ public class GestureSettings extends SettingsPreferenceFragment implements
         boolean enabled = (boolean) newValue;
         String key = preference.getKey();
         if (PREF_KEY_DOUBLE_TAP_POWER.equals(key)) {
-            Secure.putInt(getActivity().getContentResolver(),
+            Secure.putInt(getContentResolver(),
                     Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, enabled ? 0 : 1);
         } else if (PREF_KEY_PICK_UP_AND_NUDGE.equals(key)) {
-            Secure.putInt(getActivity().getContentResolver(), Secure.DOZE_ENABLED, enabled ? 1 : 0);
+            Secure.putInt(getContentResolver(), Secure.DOZE_ENABLED, enabled ? 1 : 0);
+        } else if (PREF_KEY_SWIPE_DOWN_FINGERPRINT.equals(key)) {
+            Global.putInt(getContentResolver(),
+                    Global.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
         }
         return true;
     }
@@ -114,6 +128,16 @@ public class GestureSettings extends SettingsPreferenceFragment implements
         return !TextUtils.isEmpty(name);
     }
 
+    private static boolean isSystemUINavigationAvailable(Context context) {
+        return context.getResources().getBoolean(
+                com.android.internal.R.bool.config_supportSystemNavigationKeys);
+    }
+
+    private static boolean isSystemUINavigationEnabled(Context context) {
+        return Global.getInt(context.getContentResolver(), Global.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
+                == 1;
+    }
+
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
         new BaseSearchIndexProvider() {
             @Override
@@ -138,6 +162,9 @@ public class GestureSettings extends SettingsPreferenceFragment implements
                 if (!isDozeAvailable(context)) {
                     result.add(PREF_KEY_PICK_UP_AND_NUDGE);
                 }
+                if (!isSystemUINavigationAvailable(context)) {
+                    result.add(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
+                }
                 return result;
             }
         };