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

Commit 8bd2feb9 authored by shwetachahar's avatar shwetachahar
Browse files

Add a seekbar to change text-to-speech rate and a switch to enable

higher speech rates.

Change-Id: I75cfc2af4e293dc45c93a44e5c2af73d1dae9b7c
parent 5f75f5ef
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -24,13 +24,16 @@

    <PreferenceCategory android:key="tts_general_section"
         android:title="@string/tts_general_section_title">
        <ListPreference
        <com.android.settings.SeekBarPreference
            android:key="tts_default_rate"
            android:title="@string/tts_default_rate_title"
            android:summary="@string/tts_default_rate_summary"
            android:persistent="false"
            android:entries="@array/tts_rate_entries"
            android:entryValues="@array/tts_rate_values" />
            android:defaultValue="50"
            android:max="400" />
        <SwitchPreference
            android:key="tts_default_higher_speech_rate_enabled"
            android:title="Higher speech rate" />
    </PreferenceCategory>

    <Preference android:key="tts_play_example"
+50 −6
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.EngineInfo;
import android.speech.tts.TtsEngines;
import android.speech.tts.UtteranceProgressListener;
import android.support.v7.preference.ListPreference;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.text.TextUtils;
@@ -35,6 +35,7 @@ import android.widget.Checkable;

import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SeekBarPreference;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.tts.TtsEnginePreference.RadioButtonGroupState;
@@ -49,6 +50,7 @@ import java.util.Set;

import static android.provider.Settings.Secure.TTS_DEFAULT_RATE;
import static android.provider.Settings.Secure.TTS_DEFAULT_SYNTH;
import static android.provider.Settings.Secure.TTS_DEFAULT_HIGHER_SPEECH_RATE_ENABLED;

public class TextToSpeechSettings extends SettingsPreferenceFragment implements
        Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener,
@@ -63,6 +65,10 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
    /** Preference key for the TTS rate selection dialog. */
    private static final String KEY_DEFAULT_RATE = "tts_default_rate";

    /** Preference key for the TTS advanced speech rate switch. */
    private static final String KEY_HIGHER_RATE_SWITCH =
        "tts_default_higher_speech_rate_enabled";

    /** Preference key for the TTS status field. */
    private static final String KEY_STATUS = "tts_status";

@@ -78,13 +84,25 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
    private static final int GET_SAMPLE_TEXT = 1983;
    private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;

    /**
     * Maximum speech rate values.
     */
    private static final int MAX_SPEECH_RATE = 400;
    private static final int MAX_HIGHER_SPEECH_RATE = 600;

    private PreferenceCategory mEnginePreferenceCategory;
    private ListPreference mDefaultRatePref;
    private SeekBarPreference mDefaultRatePref;
    private SwitchPreference mHigherRateSwitchPref;
    private Preference mPlayExample;
    private Preference mEngineStatus;

    private int mDefaultRate = TextToSpeech.Engine.DEFAULT_RATE;

    /**
     * Whether higher speech rate is enabled.
     */
    private boolean mHigherRateSwitch = false;

    /**
     * The currently selected engine.
     */
@@ -161,7 +179,8 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements

        mEnginePreferenceCategory = (PreferenceCategory) findPreference(
                KEY_ENGINE_PREFERENCE_SECTION);
        mDefaultRatePref = (ListPreference) findPreference(KEY_DEFAULT_RATE);
        mDefaultRatePref = (SeekBarPreference) findPreference(KEY_DEFAULT_RATE);
        mHigherRateSwitchPref = (SwitchPreference) findPreference(KEY_HIGHER_RATE_SWITCH);

        mEngineStatus = findPreference(KEY_STATUS);
        updateEngineStatus(R.string.tts_status_checking);
@@ -223,13 +242,25 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
        // Set up the default rate.
        try {
            mDefaultRate = android.provider.Settings.Secure.getInt(resolver, TTS_DEFAULT_RATE);
            mHigherRateSwitch = android.provider.Settings.Secure.getInt(resolver,
                    TTS_DEFAULT_HIGHER_SPEECH_RATE_ENABLED) == 1;
        } catch (SettingNotFoundException e) {
            // Default rate setting not found, initialize it
            mDefaultRate = TextToSpeech.Engine.DEFAULT_RATE;
            mHigherRateSwitch = false;
        }
        mDefaultRatePref.setValue(String.valueOf(mDefaultRate));
        mDefaultRatePref.setProgress(mDefaultRate);
        mDefaultRatePref.setOnPreferenceChangeListener(this);

        mHigherRateSwitchPref.setChecked(mHigherRateSwitch);
        mHigherRateSwitchPref.setOnPreferenceChangeListener(this);

        if (mHigherRateSwitch) {
            mDefaultRatePref.setMax(MAX_HIGHER_SPEECH_RATE);
        } else {
            mDefaultRatePref.setMax(MAX_SPEECH_RATE);
        }

        mCurrentEngine = mTts.getCurrentEngine();

        SettingsActivity activity = null;
@@ -447,7 +478,7 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
    public boolean onPreferenceChange(Preference preference, Object objValue) {
        if (KEY_DEFAULT_RATE.equals(preference.getKey())) {
            // Default rate
            mDefaultRate = Integer.parseInt((String) objValue);
            mDefaultRate = ((Integer) objValue).intValue();
            try {
                android.provider.Settings.Secure.putInt(getContentResolver(),
                        TTS_DEFAULT_RATE, mDefaultRate);
@@ -458,8 +489,21 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
            } catch (NumberFormatException e) {
                Log.e(TAG, "could not persist default TTS rate setting", e);
            }
        } else if (KEY_HIGHER_RATE_SWITCH.equals(preference.getKey())) {
            // Adjust range of speech rate depending on switch setting.
            mHigherRateSwitch = ((Boolean) objValue).booleanValue();
            try {
              android.provider.Settings.Secure.putInt(getContentResolver(),
                  TTS_DEFAULT_HIGHER_SPEECH_RATE_ENABLED, mHigherRateSwitch ? 1 : 0);
              if (mHigherRateSwitch) {
                mDefaultRatePref.setMax(MAX_HIGHER_SPEECH_RATE);
              } else {
                mDefaultRatePref.setMax(MAX_SPEECH_RATE);
              }
            } catch (NumberFormatException e) {
              Log.e(TAG, "could not persist default higher speech rate setting", e);
            }
        }

        return true;
    }