summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/tts
diff options
context:
space:
mode:
authorshwetachahar <shwetachahar@google.com>2016-01-27 16:38:06 +0000
committershwetachahar <shwetachahar@google.com>2016-01-27 23:52:11 +0000
commit8bd2feb9ec4f8d5952aeeadaf00935e51c521b07 (patch)
treeff69c5d274ac62a6c0e4855e636181ad3ed4ad9e /src/com/android/settings/tts
parent5f75f5ef716ca1c9fef786b95bf3a1a25f0f1f3e (diff)
downloadpackages_apps_Settings-8bd2feb9ec4f8d5952aeeadaf00935e51c521b07.tar.gz
packages_apps_Settings-8bd2feb9ec4f8d5952aeeadaf00935e51c521b07.tar.bz2
packages_apps_Settings-8bd2feb9ec4f8d5952aeeadaf00935e51c521b07.zip
Add a seekbar to change text-to-speech rate and a switch to enable
higher speech rates. Change-Id: I75cfc2af4e293dc45c93a44e5c2af73d1dae9b7c
Diffstat (limited to 'src/com/android/settings/tts')
-rw-r--r--src/com/android/settings/tts/TextToSpeechSettings.java56
1 files changed, 50 insertions, 6 deletions
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java
index 2d30ecf6f4..be10dd35f5 100644
--- a/src/com/android/settings/tts/TextToSpeechSettings.java
+++ b/src/com/android/settings/tts/TextToSpeechSettings.java
@@ -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,14 +84,26 @@ 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.
*/
private String mCurrentEngine;
@@ -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;
}