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

Commit 25cd3be6 authored by Ajay Dudani's avatar Ajay Dudani Committed by Android (Google) Code Review
Browse files

Merge "Settings: TTS: Use a more accurate SliderPreference for speech rate and pitch" into main

parents fda0ef49 b44f5c6b
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -34,14 +34,14 @@


        <!-- The max value for seek bars here should be kept in sync
        <!-- The max value for seek bars here should be kept in sync
             with the max value specified in TextToSpeechSettings class. -->
             with the max value specified in TextToSpeechSettings class. -->
        <com.android.settings.widget.SeekBarPreference
        <com.android.settingslib.widget.SliderPreference
            android:key="tts_default_rate"
            android:key="tts_default_rate"
            android:title="@string/tts_default_rate_title"
            android:title="@string/tts_default_rate_title"
            android:summary="@string/tts_default_rate_summary"
            android:summary="@string/tts_default_rate_summary"
            android:defaultValue="50"
            android:defaultValue="50"
            android:max="600"/>
            android:max="600"/>


        <com.android.settings.widget.SeekBarPreference
        <com.android.settingslib.widget.SliderPreference
            android:key="tts_default_pitch"
            android:key="tts_default_pitch"
            android:title="@string/tts_default_pitch_title"
            android:title="@string/tts_default_pitch_title"
            android:summary="@string/tts_default_pitch_summary"
            android:summary="@string/tts_default_pitch_summary"
+32 −34
Original line number Original line Diff line number Diff line
@@ -49,7 +49,7 @@ import com.android.settings.Utils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.GearPreference;
import com.android.settings.widget.GearPreference;
import com.android.settings.widget.SeekBarPreference;
import com.android.settingslib.widget.SliderPreference;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.ActionButtonsPreference;
import com.android.settingslib.widget.ActionButtonsPreference;


@@ -114,8 +114,8 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment


    private static final int MIN_SPEECH_PITCH = 25;
    private static final int MIN_SPEECH_PITCH = 25;


    private SeekBarPreference mDefaultPitchPref;
    private SliderPreference mDefaultPitchPref;
    private SeekBarPreference mDefaultRatePref;
    private SliderPreference mDefaultRatePref;
    private ActionButtonsPreference mActionButtons;
    private ActionButtonsPreference mActionButtons;


    private int mDefaultPitch = TextToSpeech.Engine.DEFAULT_PITCH;
    private int mDefaultPitch = TextToSpeech.Engine.DEFAULT_PITCH;
@@ -174,8 +174,8 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
        mLocalePreference = (ListPreference) findPreference(KEY_ENGINE_LOCALE);
        mLocalePreference = (ListPreference) findPreference(KEY_ENGINE_LOCALE);
        mLocalePreference.setOnPreferenceChangeListener(this);
        mLocalePreference.setOnPreferenceChangeListener(this);


        mDefaultPitchPref = (SeekBarPreference) findPreference(KEY_DEFAULT_PITCH);
        mDefaultPitchPref = (SliderPreference) findPreference(KEY_DEFAULT_PITCH);
        mDefaultRatePref = (SeekBarPreference) findPreference(KEY_DEFAULT_RATE);
        mDefaultRatePref = (SliderPreference) findPreference(KEY_DEFAULT_RATE);


        mActionButtons = ((ActionButtonsPreference) findPreference(KEY_ACTION_BUTTONS))
        mActionButtons = ((ActionButtonsPreference) findPreference(KEY_ACTION_BUTTONS))
                .setButton1Text(R.string.tts_play)
                .setButton1Text(R.string.tts_play)
@@ -317,18 +317,16 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
                android.provider.Settings.Secure.getInt(
                android.provider.Settings.Secure.getInt(
                        resolver, TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
                        resolver, TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);


        mDefaultRatePref.setProgress(getSeekBarProgressFromValue(KEY_DEFAULT_RATE, mDefaultRate));
        mDefaultRatePref.setValue(getSliderProgressFromValue(KEY_DEFAULT_RATE, mDefaultRate));
        mDefaultRatePref.setOnPreferenceChangeListener(this);
        mDefaultRatePref.setOnPreferenceChangeListener(this);
        mDefaultRatePref.setMax(getSeekBarProgressFromValue(KEY_DEFAULT_RATE, MAX_SPEECH_RATE));
        mDefaultRatePref.setMax(getSliderProgressFromValue(KEY_DEFAULT_RATE, MAX_SPEECH_RATE));
        mDefaultRatePref.setContinuousUpdates(true);
        mDefaultRatePref.setUpdatesContinuously(true);
        mDefaultRatePref.setHapticFeedbackMode(SeekBarPreference.HAPTIC_FEEDBACK_MODE_ON_ENDS);


        mDefaultPitchPref.setProgress(
        mDefaultPitchPref.setValue(
                getSeekBarProgressFromValue(KEY_DEFAULT_PITCH, mDefaultPitch));
                getSliderProgressFromValue(KEY_DEFAULT_PITCH, mDefaultPitch));
        mDefaultPitchPref.setOnPreferenceChangeListener(this);
        mDefaultPitchPref.setOnPreferenceChangeListener(this);
        mDefaultPitchPref.setMax(getSeekBarProgressFromValue(KEY_DEFAULT_PITCH, MAX_SPEECH_PITCH));
        mDefaultPitchPref.setMax(getSliderProgressFromValue(KEY_DEFAULT_PITCH, MAX_SPEECH_PITCH));
        mDefaultPitchPref.setContinuousUpdates(true);
        mDefaultPitchPref.setUpdatesContinuously(true);
        mDefaultPitchPref.setHapticFeedbackMode(SeekBarPreference.HAPTIC_FEEDBACK_MODE_ON_ENDS);


        if (mTts != null) {
        if (mTts != null) {
            mCurrentEngine = mTts.getCurrentEngine();
            mCurrentEngine = mTts.getCurrentEngine();
@@ -356,12 +354,12 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
    }
    }


    /**
    /**
     * The minimum speech pitch/rate value should be > 0 but the minimum value of a seekbar in
     * The minimum speech pitch/rate value should be > 0 but the minimum value of a slider in
     * android is fixed at 0. Therefore, we increment the seekbar progress with MIN_SPEECH_VALUE so
     * android is fixed at 0. Therefore, we increment the slider progress with MIN_SPEECH_VALUE so
     * that the minimum seekbar progress value is MIN_SPEECH_PITCH/RATE. SPEECH_VALUE =
     * that the minimum slider progress value is MIN_SPEECH_PITCH/RATE. SPEECH_VALUE =
     * MIN_SPEECH_VALUE + SEEKBAR_PROGRESS
     * MIN_SPEECH_VALUE + SLIDER_PROGRESS
     */
     */
    private int getValueFromSeekBarProgress(String preferenceKey, int progress) {
    private int getValueFromSliderProgress(String preferenceKey, int progress) {
        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
            return MIN_SPEECH_RATE + progress;
            return MIN_SPEECH_RATE + progress;
        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
@@ -371,10 +369,10 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
    }
    }


    /**
    /**
     * Since we are appending the MIN_SPEECH value to the speech seekbar progress, the speech
     * Since we are appending the MIN_SPEECH value to the speech slider progress, the speech
     * seekbar progress should be set to (speechValue - MIN_SPEECH value).
     * slider progress should be set to (speechValue - MIN_SPEECH value).
     */
     */
    private int getSeekBarProgressFromValue(String preferenceKey, int value) {
    private int getSliderProgressFromValue(String preferenceKey, int value) {
        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
        if (preferenceKey.equals(KEY_DEFAULT_RATE)) {
            return value - MIN_SPEECH_RATE;
            return value - MIN_SPEECH_RATE;
        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
        } else if (preferenceKey.equals(KEY_DEFAULT_PITCH)) {
@@ -686,20 +684,20 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment


    private void resetTts() {
    private void resetTts() {
        // Reset button.
        // Reset button.
        int speechRateSeekbarProgress =
        int speechRateSliderProgress =
                getSeekBarProgressFromValue(
                getSliderProgressFromValue(
                        KEY_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
                        KEY_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
        mDefaultRatePref.setProgress(speechRateSeekbarProgress);
        mDefaultRatePref.setValue(speechRateSliderProgress);
        updateSpeechRate(speechRateSeekbarProgress);
        updateSpeechRate(speechRateSliderProgress);
        int pitchSeekbarProgress =
        int pitchSliderProgress =
                getSeekBarProgressFromValue(
                getSliderProgressFromValue(
                        KEY_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
                        KEY_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
        mDefaultPitchPref.setProgress(pitchSeekbarProgress);
        mDefaultPitchPref.setValue(pitchSliderProgress);
        updateSpeechPitchValue(pitchSeekbarProgress);
        updateSpeechPitchValue(pitchSliderProgress);
    }
    }


    private void updateSpeechRate(int speechRateSeekBarProgress) {
    private void updateSpeechRate(int speechRateSliderProgress) {
        mDefaultRate = getValueFromSeekBarProgress(KEY_DEFAULT_RATE, speechRateSeekBarProgress);
        mDefaultRate = getValueFromSliderProgress(KEY_DEFAULT_RATE, speechRateSliderProgress);
        try {
        try {
            updateTTSSetting(TTS_DEFAULT_RATE, mDefaultRate);
            updateTTSSetting(TTS_DEFAULT_RATE, mDefaultRate);
            if (mTts != null) {
            if (mTts != null) {
@@ -712,8 +710,8 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
        return;
        return;
    }
    }


    private void updateSpeechPitchValue(int speechPitchSeekBarProgress) {
    private void updateSpeechPitchValue(int speechPitchSliderProgress) {
        mDefaultPitch = getValueFromSeekBarProgress(KEY_DEFAULT_PITCH, speechPitchSeekBarProgress);
        mDefaultPitch = getValueFromSliderProgress(KEY_DEFAULT_PITCH, speechPitchSliderProgress);
        try {
        try {
            updateTTSSetting(TTS_DEFAULT_PITCH, mDefaultPitch);
            updateTTSSetting(TTS_DEFAULT_PITCH, mDefaultPitch);
            if (mTts != null) {
            if (mTts != null) {