Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94c8f7ea authored by Doris Ling's avatar Doris Ling Committed by Android (Google) Code Review
Browse files

Merge "Add handling for gesture settings for double twist for camera flip." into nyc-mr1-dev

parents 8ba6e6a7 6b1a2a8c
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -46,5 +46,10 @@
    <string name="config_wallpaper_picker_class" translatable="false">com.android.settings.Settings$WallpaperSettingsActivity</string>

    <!-- Backup settings to launch -->
    <string name="config_backup_settings_intent"></string>
    <string name="config_backup_settings_intent" translatable="false"></string>

    <!-- Double twist sensor name and vendor used by gesture setting -->
    <string name="gesture_double_twist_sensor_name" translatable="false"></string>
    <string name="gesture_double_twist_sensor_vendor" translatable="false"></string>

</resources>
+36 −4
Original line number Diff line number Diff line
@@ -18,11 +18,12 @@ package com.android.settings.gestures;

import android.content.Context;
import android.content.res.Resources;
import android.hardware.Sensor;
import android.hardware.SensorManager;
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.support.v7.widget.RecyclerView;
@@ -98,6 +99,18 @@ public class GestureSettings extends SettingsPreferenceFragment implements
            removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
        }

        // Double twist for camera mode
        if (isDoubleTwistAvailable(context)) {
            int doubleTwistEnabled = Secure.getInt(
                    getContentResolver(), Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 1);
            GesturePreference preference =
                    (GesturePreference) findPreference(PREF_KEY_DOUBLE_TWIST);
            preference.setChecked(doubleTwistEnabled != 0);
            preference.setOnPreferenceChangeListener(this);
        } else {
            removePreference(PREF_KEY_DOUBLE_TWIST);
        }

        if (savedInstanceState == null) {
            final Bundle args = getArguments();
            if (args != null && args.containsKey(ARG_SCROLL_TO_PREFERENCE)) {
@@ -131,8 +144,11 @@ public class GestureSettings extends SettingsPreferenceFragment implements
        } else if (PREF_KEY_PICK_UP_AND_NUDGE.equals(key)) {
            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);
            Secure.putInt(getContentResolver(),
                    Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
        } else if (PREF_KEY_DOUBLE_TWIST.equals(key)) {
            Secure.putInt(getContentResolver(),
                    Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled ? 1 : 0);
        }
        return true;
    }
@@ -167,10 +183,26 @@ public class GestureSettings extends SettingsPreferenceFragment implements
    }

    private static boolean isSystemUINavigationEnabled(Context context) {
        return Global.getInt(context.getContentResolver(), Global.SYSTEM_NAVIGATION_KEYS_ENABLED, 1)
        return Secure.getInt(context.getContentResolver(), Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 1)
                == 1;
    }

    private static boolean isDoubleTwistAvailable(Context context) {
        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);
        if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(vendor)) {
            SensorManager sensorManager =
                    (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
            for (Sensor s : sensorManager.getSensorList(Sensor.TYPE_ALL)) {
                if (name.equals(s.getName()) && vendor.equals(s.getVendor())) {
                    return true;
                }
            }
        }
        return false;
    }

    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
        new BaseSearchIndexProvider() {
            @Override