Adding implementation of IPA to the TextToSpeech.java
diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java
index 41b25ec..8fa06fa 100755
--- a/core/java/android/speech/tts/TextToSpeech.java
+++ b/core/java/android/speech/tts/TextToSpeech.java
@@ -369,7 +369,28 @@
      */
     public void speakIpa(String ipaText, int queueMode, HashMap<String,String> params)
     {
-        //TODO: Implement speakIpa
+        synchronized (mStartLock) {
+            Log.i("TTS received: ", ipaText);
+            if (!mStarted) {
+                return;
+            }
+            try {
+                // TODO support extra parameters, passing cache of current parameters for the moment
+                mITts.speakIpa(ipaText, queueMode, mCachedParams);
+            } catch (RemoteException e) {
+                // TTS died; restart it.
+                mStarted = false;
+                initTts();
+            } catch (NullPointerException e) {
+                // TTS died; restart it.
+                mStarted = false;
+                initTts();
+            } catch (IllegalStateException e) {
+                // TTS died; restart it.
+                mStarted = false;
+                initTts();
+            }
+        }
     }
 
 
@@ -600,7 +621,7 @@
 
 
     /**
-     * Speaks the given text using the specified queueing mode and parameters.
+     * Synthesizes the given text to a file using the specified parameters.
      *
      * @param text
      *            The String of text that should be synthesized
@@ -637,5 +658,42 @@
         }
     }
 
+    /**
+     * Synthesizes the given IPA text to a file using the specified parameters.
+     *
+     * @param text
+     *            The String of text that should be synthesized
+     * @param params
+     *            A hashmap of parameters.
+     * @param filename
+     *            The string that gives the full output filename; it should be
+     *            something like "/sdcard/myappsounds/mysound.wav".
+     * @return A boolean that indicates if the synthesis succeeded
+     */
+    public boolean synthesizeIpaToFile(String ipaText,
+            HashMap<String,String> params, String filename) {
+        synchronized (mStartLock) {
+            if (!mStarted) {
+                return false;
+            }
+            try {
+                // TODO support extra parameters, passing null for the moment
+                return mITts.synthesizeIpaToFile(ipaText, null, filename);
+            } catch (RemoteException e) {
+                // TTS died; restart it.
+                mStarted = false;
+                initTts();
+            } catch (NullPointerException e) {
+                // TTS died; restart it.
+                mStarted = false;
+                initTts();
+            } catch (IllegalStateException e) {
+                // TTS died; restart it.
+                mStarted = false;
+                initTts();
+            }
+            return false;
+        }
+    }
 
 }