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

Commit 04753956 authored by Angela Wang's avatar Angela Wang
Browse files

Show message dialog when turning on HAC if needed

Flag: EXEMPT bugfix
Bug: 402786108
Test: manually check on device
Change-Id: I0984cf25c77e3dfabd9cb338eeb3cfa05ca3e79f
parent a238bc2e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5916,6 +5916,8 @@
    <string name="accessibility_hac_mode_title">Hearing aid compatibility</string>
    <!--Summary for the Hearing Aid Compatibility preference in the accessibility page. [CHAR LIMIT=NONE] -->
    <string name="accessibility_hac_mode_summary">Improves compatibility with telecoils and reduces unwanted noise</string>
    <!-- Message for the Hearing Aid Compatibility disclaimer dialog. The dialog will not show if this string is empty. [CHAR LIMIT=NONE] -->
    <string name="hac_disclaimer_message"></string>
    <!-- Title for accessibility hearing device page footer. [CHAR LIMIT=40] -->
    <string name="accessibility_hearing_device_about_title">About hearing devices</string>
    <!-- Description for text in accessibility hearing aids footer. [CHAR LIMIT=NONE] -->
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ public class AccessibilityHearingAidsFragment extends AccessibilityShortcutPrefe
        super.onAttach(context);
        use(AvailableHearingDevicePreferenceController.class).init(this);
        use(SavedHearingDevicePreferenceController.class).init(this);
        use(HearingAidCompatibilityPreferenceController.class).init(this);
    }

    @Override
+48 −0
Original line number Diff line number Diff line
@@ -16,19 +16,33 @@

package com.android.settings.accessibility;

import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentManager;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;

/** Preference controller for Hearing Aid Compatibility (HAC) settings */
public class HearingAidCompatibilityPreferenceController extends TogglePreferenceController {

    private static final String TAG =
            HearingAidCompatibilityPreferenceController.class.getSimpleName();

    // Hearing Aid Compatibility settings values
    static final String HAC_KEY = "HACSetting";
    static final String HAC_VAL_ON = "ON";
@@ -40,6 +54,7 @@ public class HearingAidCompatibilityPreferenceController extends TogglePreferenc

    private final TelephonyManager mTelephonyManager;
    private final AudioManager mAudioManager;
    private FragmentManager mFragmentManager;

    public HearingAidCompatibilityPreferenceController(Context context,
            String preferenceKey) {
@@ -48,6 +63,10 @@ public class HearingAidCompatibilityPreferenceController extends TogglePreferenc
        mAudioManager = context.getSystemService(AudioManager.class);
    }

    void init(DashboardFragment fragment) {
        mFragmentManager = fragment.getParentFragmentManager();
    }

    @Override
    public int getAvailabilityStatus() {
        try {
@@ -68,6 +87,9 @@ public class HearingAidCompatibilityPreferenceController extends TogglePreferenc

    @Override
    public boolean setChecked(boolean isChecked) {
        if (isChecked && shouldShowDisclaimer()) {
            HacDisclaimerDialog.newInstance().show(mFragmentManager, TAG);
        }
        FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().changed(
                getMetricsCategory(), getPreferenceKey(), isChecked ? 1 : 0);
        setAudioParameterHacEnabled(isChecked);
@@ -84,4 +106,30 @@ public class HearingAidCompatibilityPreferenceController extends TogglePreferenc
    private void setAudioParameterHacEnabled(boolean enabled) {
        mAudioManager.setParameters(HAC_KEY + "=" + (enabled ? HAC_VAL_ON : HAC_VAL_OFF) + ";");
    }

    private boolean shouldShowDisclaimer() {
        return !TextUtils.isEmpty(mContext.getText(R.string.hac_disclaimer_message));
    }

    /** Dialog to tell user about the disclaimer to turn on HAC */
    public static class HacDisclaimerDialog extends InstrumentedDialogFragment {

        static HacDisclaimerDialog newInstance() {
            return new HacDisclaimerDialog();
        }

        @NonNull
        @Override
        public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
            return new AlertDialog.Builder(getActivity())
                    .setMessage(R.string.hac_disclaimer_message)
                    .setPositiveButton(android.R.string.ok, null)
                    .create();
        }

        @Override
        public int getMetricsCategory() {
            return SettingsEnums.DIALOG_HAC_DISCLAIMER;
        }
    }
}