Merge "Cherry-pick 97432e866eedd2a179242fa7017e03b6febe4887 to froyo." into froyo
diff --git a/core/java/android/speech/tts/ITts.aidl b/core/java/android/speech/tts/ITts.aidl
index 2ed660a..df8ea0c 100755
--- a/core/java/android/speech/tts/ITts.aidl
+++ b/core/java/android/speech/tts/ITts.aidl
@@ -61,5 +61,7 @@
 

     int playSilence(in String callingApp, in long duration, in int queueMode, in String[] params);
 

-    int setEngineByPackageName(in String enginePackageName);

+    int setEngineByPackageName(in String enginePackageName);
+
+    String getDefaultEngine();

 }

diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java
index 80b3a74..69b60db 100755
--- a/core/java/android/speech/tts/TextToSpeech.java
+++ b/core/java/android/speech/tts/TextToSpeech.java
@@ -1340,4 +1340,43 @@
         }
     }
 
+
+    /**
+     * Gets the packagename of the default speech synthesis engine.
+     *
+     * @return Packagename of the TTS engine that the user has chosen as their default.
+     *
+     * @hide
+     */
+    public String getDefaultEngine() {
+        synchronized (mStartLock) {
+            String engineName = "";
+            if (!mStarted) {
+                return engineName;
+            }
+            try {
+                engineName = mITts.getDefaultEngine();
+            } catch (RemoteException e) {
+                // TTS died; restart it.
+                Log.e("TextToSpeech.java - setEngineByPackageName", "RemoteException");
+                e.printStackTrace();
+                mStarted = false;
+                initTts();
+            } catch (NullPointerException e) {
+                // TTS died; restart it.
+                Log.e("TextToSpeech.java - setEngineByPackageName", "NullPointerException");
+                e.printStackTrace();
+                mStarted = false;
+                initTts();
+            } catch (IllegalStateException e) {
+                // TTS died; restart it.
+                Log.e("TextToSpeech.java - setEngineByPackageName", "IllegalStateException");
+                e.printStackTrace();
+                mStarted = false;
+                initTts();
+            } finally {
+                return engineName;
+            }
+        }
+    }
 }
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index 0d2921e..ae48e0e 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -1436,6 +1436,15 @@
             return mSelf.setEngine(packageName);

         }
 
+        /**
+         * Returns the packagename of the default speech synthesis engine.
+         *
+         * @return Packagename of the TTS engine that the user has chosen as their default.
+         */
+        public String getDefaultEngine() {
+            return mSelf.getDefaultEngine();
+        }
+
     };
 
 }