diff --git a/pico/AndroidManifest.xml b/pico/AndroidManifest.xml
index 367f2d2..33f838d 100755
--- a/pico/AndroidManifest.xml
+++ b/pico/AndroidManifest.xml
@@ -47,6 +47,14 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".GetSampleText" android:label="@string/app_name"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar">
+            <intent-filter>
+                <action android:name="android.speech.tts.engine.GET_SAMPLE_TEXT" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <activity android:enabled="true" android:name=".Pico"
             android:hasCode="false" android:label="@string/app_name"
             android:theme="@android:style/Theme.Translucent.NoTitleBar">
diff --git a/pico/res/values/strings.xml b/pico/res/values/strings.xml
index 527b049..1180294 100755
--- a/pico/res/values/strings.xml
+++ b/pico/res/values/strings.xml
@@ -17,6 +17,13 @@
 */
 -->
 
+<!-- TODO: "with Pico" needs to be translated -->
 <resources>
     <string name="app_name">Pico TTS</string>
+    <string name="eng_usa_sample">This is an example of speech synthesis in English with Pico.</string>
+    <string name="eng_gbr_sample">This is an example of speech synthesis in English with Pico.</string>
+    <string name="fra_fra_sample">Voici un échantillon de synthèse vocale en français with Pico.</string>
+    <string name="deu_deu_sample">Dies ist ein Beispiel für Sprachsynthese in Deutsch with Pico.</string>
+    <string name="ita_ita_sample">Questo è un esempio di sintesi vocale in italiano with Pico.</string>
+    <string name="spa_esp_sample">Este es un ejemplo de síntesis de voz en español with Pico.</string>
 </resources>
diff --git a/pico/src/com/svox/pico/GetSampleText.java b/pico/src/com/svox/pico/GetSampleText.java
new file mode 100755
index 0000000..b8d3820
--- /dev/null
+++ b/pico/src/com/svox/pico/GetSampleText.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.svox.pico;
+
+import java.io.File;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.speech.tts.TextToSpeech;
+
+import android.util.Log;
+
+/*
+ * Returns the sample text string for the language requested
+ */
+public class GetSampleText extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        int result = TextToSpeech.LANG_AVAILABLE;
+        Intent returnData = new Intent();
+
+        Intent i = getIntent();
+        String language = i.getExtras().getString("language");
+        String country = i.getExtras().getString("country");
+        String variant = i.getExtras().getString("variant");
+
+        if (language.equals("eng")) {
+          if (country.equals("GBR")){
+            returnData.putExtra("sampleText", getString(R.string.eng_gbr_sample));
+          } else {
+            returnData.putExtra("sampleText", getString(R.string.eng_usa_sample));
+          }
+        } else if (language.equals("fra")) {
+          returnData.putExtra("sampleText", getString(R.string.fra_fra_sample));
+        } else if (language.equals("ita")) {
+          returnData.putExtra("sampleText", getString(R.string.ita_ita_sample));
+        } else if (language.equals("deu")) {
+          returnData.putExtra("sampleText", getString(R.string.deu_deu_sample));
+        } else if (language.equals("spa")) {
+          returnData.putExtra("sampleText", getString(R.string.spa_esp_sample));
+        } else {
+          result = TextToSpeech.LANG_NOT_SUPPORTED;
+          returnData.putExtra("sampleText", "");
+        }
+
+        setResult(result, returnData);
+        finish();
+    }
+}
