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

Commit d889dec4 authored by Menghan Li's avatar Menghan Li Committed by Android (Google) Code Review
Browse files

Merge "Support accessibility shortcut secondary action (6/n)"

parents 3e9fd249 a5d8e127
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.settings.accessibility;

import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;

import android.content.Context;
import android.content.DialogInterface;
import android.content.res.TypedArray;
@@ -245,27 +243,21 @@ public class AccessibilityEditDialogUtils {
        });
    }

    private static boolean isGestureNavigateEnabled(Context context) {
        return context.getResources().getInteger(
                com.android.internal.R.integer.config_navBarInteractionMode)
                == NAV_BAR_MODE_GESTURAL;
    }

    private static CharSequence retrieveTitle(Context context) {
        return context.getString(isGestureNavigateEnabled(context)
        return context.getString(AccessibilityUtil.isGestureNavigateEnabled(context)
                ? R.string.accessibility_shortcut_edit_dialog_title_software_gesture
                : R.string.accessibility_shortcut_edit_dialog_title_software);
    }

    private static CharSequence retrieveSummary(Context context, int lineHeight) {
        return isGestureNavigateEnabled(context)
        return AccessibilityUtil.isGestureNavigateEnabled(context)
                ? context.getString(
                R.string.accessibility_shortcut_edit_dialog_summary_software_gesture)
                : getSummaryStringWithIcon(context, lineHeight);
    }

    private static int retrieveImageResId(Context context) {
        return isGestureNavigateEnabled(context)
        return AccessibilityUtil.isGestureNavigateEnabled(context)
                ? R.drawable.accessibility_shortcut_type_software_gesture
                : R.drawable.accessibility_shortcut_type_software;
        // TODO(b/142531156): Use vector drawable instead of temporal png file to avoid distorted.
+1 −9
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.settings.accessibility;

import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;

import android.content.Context;
import android.content.DialogInterface;
import android.content.res.TypedArray;
@@ -83,7 +81,7 @@ public class AccessibilityGestureNavigationTutorial {
        final AlertDialog alertDialog = createDialog(context,
                DialogType.LAUNCH_SERVICE_BY_ACCESSIBILITY_BUTTON);

        if (!isGestureNavigateEnabled(context)) {
        if (!AccessibilityUtil.isGestureNavigateEnabled(context)) {
            updateMessageWithIcon(context, alertDialog);
        }

@@ -206,12 +204,6 @@ public class AccessibilityGestureNavigationTutorial {
        return colorResId;
    }

    private static boolean isGestureNavigateEnabled(Context context) {
        return context.getResources().getInteger(
                com.android.internal.R.integer.config_navBarInteractionMode)
                == NAV_BAR_MODE_GESTURAL;
    }

    private static boolean isTouchExploreOn(Context context) {
        return ((AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE))
                .isTouchExplorationEnabled();
+63 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.accessibility;

import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;

import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.Context;
import android.os.Build;
@@ -54,18 +56,78 @@ final class AccessibilityUtil {
        int INTUITIVE = 2;
    }

    /**
     * Annotation for different shortcut type UI type.
     *
     * {@code DEFAULT} for displaying default value.
     * {@code SOFTWARE} for displaying specifying the accessibility services or features which
     * choose accessibility button in the navigation bar as preferred shortcut.
     * {@code HARDWARE} for displaying specifying the accessibility services or features which
     * choose accessibility shortcut as preferred shortcut.
     * {@code TRIPLETAP} for displaying specifying magnification to be toggled via quickly
     * tapping screen 3 times as preferred shortcut.
     */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({
            ShortcutType.DEFAULT,
            ShortcutType.SOFTWARE,
            ShortcutType.HARDWARE,
            ShortcutType.TRIPLETAP,
    })

    /** Denotes the shortcut type. */
    public @interface ShortcutType {
        int DEFAULT = 0;
        int SOFTWARE = 1; // 1 << 0
        int HARDWARE = 2; // 1 << 1
        int TRIPLETAP = 4; // 1 << 2
    }

    /** Denotes the accessibility enabled status */
    @Retention(RetentionPolicy.SOURCE)
    public @interface State {
        int OFF = 0;
        int ON = 1;
    }

    /**
     * Return On/Off string according to the setting which specifies the integer value 1 or 0. This
     * setting is defined in the secure system settings {@link android.provider.Settings.Secure}.
     */
    static CharSequence getSummary(Context context, String settingsSecureKey) {
        final boolean enabled = Settings.Secure.getInt(context.getContentResolver(),
                settingsSecureKey, 0) == 1;
                settingsSecureKey, State.OFF) == State.ON;
        final int resId = enabled ? R.string.accessibility_feature_state_on
                : R.string.accessibility_feature_state_off;
        return context.getResources().getText(resId);
    }

    /**
     * Capitalizes a string by capitalizing the first character and making the remaining characters
     * lower case.
     */
    public static String capitalize(String stringToCapitalize) {
        if (stringToCapitalize == null) {
            return null;
        }

        StringBuilder capitalizedString = new StringBuilder();
        if (stringToCapitalize.length() > 0) {
            capitalizedString.append(stringToCapitalize.substring(0, 1).toUpperCase());
            if (stringToCapitalize.length() > 1) {
                capitalizedString.append(stringToCapitalize.substring(1).toLowerCase());
            }
        }
        return capitalizedString.toString();
    }

    /** Determines if a gesture navigation bar is being used. */
    public static boolean isGestureNavigateEnabled(Context context) {
        return context.getResources().getInteger(
                com.android.internal.R.integer.config_navBarInteractionMode)
                == NAV_BAR_MODE_GESTURAL;
    }

    /**
     * Gets the corresponding fragment type of a given accessibility service
     *
+8 −3
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.view.View;

import androidx.preference.PreferenceScreen;

import com.android.settings.R;

/** For accessibility services that target SDK <= Q. */
public class LegacyAccessibilityServicePreferenceFragment extends
        ToggleAccessibilityServicePreferenceFragment {
@@ -29,10 +31,13 @@ public class LegacyAccessibilityServicePreferenceFragment extends
        super.onViewCreated(view, savedInstanceState);

        final PreferenceScreen preferenceScreen = getPreferenceScreen();
        final ShortcutPreference preference = preferenceScreen.findPreference(
        final ShortcutPreference shortcutPreference = preferenceScreen.findPreference(
                getShortcutPreferenceKey());
        if (preference != null) {
            preference.setSettingsVisibility(View.GONE);
        if (shortcutPreference != null) {
            final CharSequence hardwareTitle = getPrefContext().getText(
                    R.string.accessibility_shortcut_edit_dialog_title_hardware);
            shortcutPreference.setSummary(hardwareTitle);
            shortcutPreference.setSettingsVisibility(View.GONE);
        }
    }
}
+1 −12
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.settings.accessibility;

import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;

import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
@@ -25,7 +23,6 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.accessibility.AccessibilityManager;
@@ -36,12 +33,10 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.search.SearchIndexable;

import java.util.Arrays;
import java.util.List;

@SearchIndexable
@@ -134,7 +129,7 @@ public final class MagnificationPreferenceFragment extends DashboardFragment {
                if (info.getComponentName().equals(assignedComponentName)) {
                    final CharSequence assignedServiceName = info.getResolveInfo().loadLabel(
                            context.getPackageManager());
                    final int messageId = isGestureNavigateEnabled(context)
                    final int messageId = AccessibilityUtil.isGestureNavigateEnabled(context)
                            ? R.string.accessibility_screen_magnification_gesture_navigation_warning
                            : R.string.accessibility_screen_magnification_navbar_configuration_warning;
                    return context.getString(messageId, assignedServiceName);
@@ -161,12 +156,6 @@ public final class MagnificationPreferenceFragment extends DashboardFragment {
        return res.getBoolean(com.android.internal.R.bool.config_showNavigationBar);
    }

    private static boolean isGestureNavigateEnabled(Context context) {
        return context.getResources().getInteger(
                com.android.internal.R.integer.config_navBarInteractionMode)
                == NAV_BAR_MODE_GESTURAL;
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.accessibility_magnification_settings) {

Loading