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();
+        }
+
     };
 
 }
