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

Commit 1919d601 authored by Angela Wang's avatar Angela Wang Committed by Android (Google) Code Review
Browse files

Merge "Show message dialog when turning on HAC if needed" into main

parents 3f23752b 04753956
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5967,6 +5967,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;
        }
    }
}