Merge change 4529 into donut

* changes:
  In the TTS service, read the default TTS settings from Settings.Secure.
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index f7dd0e8..b50add6 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -19,6 +19,7 @@
 import android.speech.tts.ITtsCallback;
 
 import android.app.Service;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -92,6 +93,10 @@
     private static final String CATEGORY = "android.intent.category.TTS";
     private static final String PKGNAME = "android.tts";
 
+    private static final int FALLBACK_TTS_DEFAULT_RATE = 100; // 1x
+    private static final int FALLBACK_TTS_DEFAULT_PITCH = 100;// 1x
+    private static final int FALLBACK_TTS_USE_DEFAULTS = 0;
+
     final RemoteCallbackList<android.speech.tts.ITtsCallback> mCallbacks = new RemoteCallbackList<ITtsCallback>();
 
     private Boolean mIsSpeaking;
@@ -101,7 +106,7 @@
     private MediaPlayer mPlayer;
     private TtsService mSelf;
 
-    private SharedPreferences prefs;
+    private ContentResolver mResolver;
 
     private final ReentrantLock speechQueueLock = new ReentrantLock();
     private final ReentrantLock synthesizerLock = new ReentrantLock();
@@ -113,9 +118,7 @@
         super.onCreate();
         Log.i("TTS", "TTS starting");
 
-        // TODO: Make this work when the settings are done in the main Settings
-        // app.
-        prefs = PreferenceManager.getDefaultSharedPreferences(this);
+        mResolver = getContentResolver();
 
         String soLibPath = "/system/lib/libttspico.so";
         nativeSynth = new SynthProxy(soLibPath);
@@ -129,10 +132,7 @@
         mSpeechQueue = new ArrayList<SpeechItem>();
         mPlayer = null;
 
-        // TODO set default settings
-        //setLanguage(prefs.getString("lang_pref", "en-rUS"));
-        setLanguage("eng", "USA", "");
-        setSpeechRate(Integer.parseInt(prefs.getString("rate_pref", "140")));
+        setDefaultSettings();
     }
 
     @Override
@@ -147,26 +147,48 @@
         mCallbacks.kill();
     }
 
+
+    private void setDefaultSettings() {
+
+        // TODO handle default language
+        setLanguage("eng", "USA", "");
+
+        // speech rate
+        setSpeechRate(getDefaultRate());
+
+        // TODO handle default pitch
+    }
+
+
+    private boolean isDefaultEnforced() {
+        return (android.provider.Settings.Secure.getInt(mResolver,
+                    android.provider.Settings.Secure.TTS_USE_DEFAULTS, FALLBACK_TTS_USE_DEFAULTS)
+                == 1 );
+    }
+
+
+    private int getDefaultRate() {
+        return android.provider.Settings.Secure.getInt(mResolver,
+                android.provider.Settings.Secure.TTS_DEFAULT_RATE, FALLBACK_TTS_DEFAULT_RATE);
+    }
+
+
     private void setSpeechRate(int rate) {
-        if (prefs.getBoolean("override_pref", false)) {
-            // This is set to the default here so that the preview in the prefs
-            // activity will show the change without a restart, even if apps are
-            // not allowed to change the defaults.
-            rate = Integer.parseInt(prefs.getString("rate_pref", "140"));
+        if (isDefaultEnforced()) {
+            nativeSynth.setSpeechRate(getDefaultRate());
+        } else {
+            nativeSynth.setSpeechRate(rate);
         }
-        nativeSynth.setSpeechRate(rate);
     }
 
     private void setLanguage(String lang, String country, String variant) {
-        if (prefs.getBoolean("override_pref", false)) {
-            // This is set to the default here so that the preview in the prefs
-            // activity will show the change without a restart, even if apps are
-            // not
-            // allowed to change the defaults.
-            lang = prefs.getString("lang_pref", "en-rUS");
-        }
         Log.v("TTS", "TtsService.setLanguage("+lang+", "+country+", "+variant+")");
-        nativeSynth.setLanguage(lang, country, variant);
+        if (isDefaultEnforced()) {
+            nativeSynth.setLanguage(lang, country, variant);
+        } else {
+            // TODO handle default language
+            nativeSynth.setLanguage("eng", "USA", "");
+        }
     }
 
     /**