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

Commit 5d00bdbd authored by Joshua Imbriani's avatar Joshua Imbriani Committed by Android (Google) Code Review
Browse files

Merge "Making changes to TTS pitch and rate also apply to work profiles"

parents a1a0f7d7 1f248705
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -26,7 +26,10 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.provider.Settings.Secure;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.EngineInfo;
import android.speech.tts.TtsEngines;
@@ -44,6 +47,7 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.Utils;
import com.android.settings.widget.GearPreference;
import com.android.settings.widget.SeekBarPreference;
import com.android.settingslib.search.SearchIndexable;
@@ -148,6 +152,11 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
     */
    private final TextToSpeech.OnInitListener mInitListener = this::onInitEngine;

    /**
     * A UserManager used to set settings for both person and work profiles for a user
     */
    private UserManager mUserManager;

    @Override
    public int getMetricsCategory() {
        return SettingsEnums.TTS_TEXT_TO_SPEECH;
@@ -176,6 +185,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
                .setButton2OnClickListener(v -> resetTts())
                .setButton1Enabled(true);

        mUserManager = (UserManager) getActivity()
                .getApplicationContext().getSystemService(Context.USER_SERVICE);

        if (savedInstanceState == null) {
            mLocalePreference.setEnabled(false);
            mLocalePreference.setEntries(new CharSequence[0]);
@@ -670,8 +682,7 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
    private void updateSpeechRate(int speechRateSeekBarProgress) {
        mDefaultRate = getValueFromSeekBarProgress(KEY_DEFAULT_RATE, speechRateSeekBarProgress);
        try {
            android.provider.Settings.Secure.putInt(
                    getContentResolver(), TTS_DEFAULT_RATE, mDefaultRate);
            updateTTSSetting(TTS_DEFAULT_RATE, mDefaultRate);
            if (mTts != null) {
                mTts.setSpeechRate(mDefaultRate / 100.0f);
            }
@@ -685,8 +696,7 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
    private void updateSpeechPitchValue(int speechPitchSeekBarProgress) {
        mDefaultPitch = getValueFromSeekBarProgress(KEY_DEFAULT_PITCH, speechPitchSeekBarProgress);
        try {
            android.provider.Settings.Secure.putInt(
                    getContentResolver(), TTS_DEFAULT_PITCH, mDefaultPitch);
            updateTTSSetting(TTS_DEFAULT_PITCH, mDefaultPitch);
            if (mTts != null) {
                mTts.setPitch(mDefaultPitch / 100.0f);
            }
@@ -697,6 +707,16 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
        return;
    }

    private void updateTTSSetting(String key, int value) {
        Secure.putInt(
                    getContentResolver(), key, value);
        final int managedProfileUserId =
                Utils.getManagedProfileId(mUserManager, UserHandle.myUserId());
        if (managedProfileUserId != UserHandle.USER_NULL) {
            Secure.putIntForUser(getContentResolver(), key, value, managedProfileUserId);
        }
    }

    private void updateWidgetState(boolean enable) {
        getActivity().runOnUiThread(() -> {
            mActionButtons.setButton1Enabled(enable);