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

Commit 72fb811b authored by Jason Hsu's avatar Jason Hsu Committed by Android (Google) Code Review
Browse files

Merge changes from topic "hearing_shortcut"

* changes:
  [Hearing device shortcut] Provide a way to open accessibility hearing device settings via intent
  [Hearing device shortcut] Setup shortcut for hearing device
parents 8a58b1be a7fd647e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.accessibility;

import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME;

import android.accessibilityservice.AccessibilityServiceInfo;
@@ -31,6 +32,7 @@ import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.view.accessibility.AccessibilityManager;

@@ -113,6 +115,13 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment {
            return new LaunchFragmentArguments(destination, /* arguments= */ null);
        }

        if (ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.equals(componentName)
                && FeatureFlagUtils.isEnabled(getContext(),
                FeatureFlagUtils.SETTINGS_ACCESSIBILITY_HEARING_AID_PAGE)) {
            final String destination = AccessibilityHearingAidsFragment.class.getName();
            return new LaunchFragmentArguments(destination, /* arguments= */ null);
        }

        return null;
    }

+54 −6
Original line number Diff line number Diff line
@@ -18,33 +18,48 @@ package com.android.settings.accessibility;

import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;

import android.content.ComponentName;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.preference.PreferenceCategory;

import com.android.internal.accessibility.AccessibilityShortcutController;
import com.android.settings.R;
import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;

/** Accessibility settings for hearing aids. */
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class AccessibilityHearingAidsFragment extends RestrictedDashboardFragment {
public class AccessibilityHearingAidsFragment extends AccessibilityShortcutPreferenceFragment {

    private static final String TAG = "AccessibilityHearingAidsFragment";
    private static final String KEY_DEVICE_CONTROL_CATEGORY = "device_control_category";
    private static final int FIRST_PREFERENCE_IN_CATEGORY_INDEX = -1;
    private String mFeatureName;

    public AccessibilityHearingAidsFragment() {
        super(DISALLOW_CONFIG_BLUETOOTH);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        mFeatureName = getContext().getString(R.string.accessibility_hearingaid_title);
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO(b/237625815): Add shortcutPreference by extending
        //  AccessibilityShortcutPreferenceFragment

        return super.onCreateView(inflater, container, savedInstanceState);
        final View view = super.onCreateView(inflater, container, savedInstanceState);
        final PreferenceCategory controlCategory = findPreference(KEY_DEVICE_CONTROL_CATEGORY);
        // Move the preference under controlCategory need to remove the original first.
        mShortcutPreference.setOrder(FIRST_PREFERENCE_IN_CATEGORY_INDEX);
        getPreferenceScreen().removePreference(mShortcutPreference);
        controlCategory.addPreference(mShortcutPreference);
        return view;
    }

    @Override
@@ -63,6 +78,39 @@ public class AccessibilityHearingAidsFragment extends RestrictedDashboardFragmen
        return TAG;
    }

    @Override
    protected ComponentName getComponentName() {
        return AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
    }

    @Override
    protected CharSequence getLabelName() {
        return mFeatureName;
    }

    @Override
    protected ComponentName getTileComponentName() {
        // Don't have quick settings tile for now.
        return null;
    }

    @Override
    protected CharSequence getTileTooltipContent(int type) {
        // Don't have quick settings tile for now.
        return null;
    }

    @Override
    protected boolean showGeneralCategory() {
        // Have customized category for accessibility hearings aids page.
        return false;
    }

    @Override
    protected CharSequence getShortcutTitle() {
        return getText(R.string.accessibility_hearing_device_shortcut_title);
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.accessibility_hearing_aids);
}
+6 −3
Original line number Diff line number Diff line
@@ -148,11 +148,14 @@ public class AccessibilitySettings extends DashboardFragment {

    public AccessibilitySettings() {
        // Observe changes to anything that the shortcut can toggle, so we can reflect updates
        final Collection<AccessibilityShortcutController.ToggleableFrameworkFeatureInfo> features =
        final Collection<AccessibilityShortcutController.FrameworkFeatureInfo> features =
                AccessibilityShortcutController.getFrameworkShortcutFeaturesMap().values();
        final List<String> shortcutFeatureKeys = new ArrayList<>(features.size());
        for (AccessibilityShortcutController.ToggleableFrameworkFeatureInfo feature : features) {
            shortcutFeatureKeys.add(feature.getSettingKey());
        for (AccessibilityShortcutController.FrameworkFeatureInfo feature : features) {
            final String key = feature.getSettingKey();
            if (key != null) {
                shortcutFeatureKeys.add(key);
            }
        }

        // Observe changes from accessibility selection menu
+6 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.utils.LocaleUtils;

import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -56,7 +56,7 @@ import java.util.Locale;
/**
 * Base class for accessibility fragments shortcut functions and dialog management.
 */
public abstract class AccessibilityShortcutPreferenceFragment extends DashboardFragment
public abstract class AccessibilityShortcutPreferenceFragment extends RestrictedDashboardFragment
        implements ShortcutPreference.OnClickCallback {
    private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference";
    protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type";
@@ -75,6 +75,10 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
    private boolean mNeedsQSTooltipReshow = false;
    private int mNeedsQSTooltipType = QuickSettingsTooltipType.GUIDE_TO_EDIT;

    public AccessibilityShortcutPreferenceFragment(String restrictionKey) {
        super(restrictionKey);
    }

    /** Returns the accessibility component name. */
    protected abstract ComponentName getComponentName();

+7 −0
Original line number Diff line number Diff line
@@ -48,6 +48,13 @@ public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment {
    private String mFeatureName;
    private OneHandedSettingsUtils mUtils;

    /**
     * One handed settings no need to set any restriction key for pin protected.
     */
    public OneHandedSettings() {
        super(/* restrictionKey= */ null);
    }

    @Override
    protected void updatePreferenceStates() {
        OneHandedSettingsUtils.setUserId(UserHandle.myUserId());
Loading