Android TextToSpeech

TextToSpeech

Support from API 19(4.4)
Chinese is not supported.
I tried English(US), Japanese, Germany

Sample

English, Japanese switch

Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
    >
   
   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="20dp"
      android:text="@string/write"
      android:textAppearance="?android:attr/textAppearanceLarge" />   
   
    <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_alignParentRight="true"
      android:layout_marginBottom="188dp"
      android:layout_marginRight="67dp"
      android:onClick="speakText"
      android:text="@string/text1" />
   
   <EditText
      android:id="@+id/editText1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_above="@+id/button1"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="81dp"
      android:ems="10" >
      <requestFocus />
   </EditText>
   
    <Switch
        android:id="@+id/mySwitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/editText1"
        android:layout_marginBottom="20dp"
        android:layout_centerHorizontal="true"
        android:textOn="US"
        android:textOff="Jp"
        android:text="Language" />
  
</RelativeLayout>

Code

public class MainActivity extends Activity {
	private TextToSpeech tts;
	
	private EditText write;
	
	private Switch mySwitch;
	
	private Button textTo;
	
	private boolean loaded;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        loaded = false;
        write = (EditText)findViewById(R.id.editText1);
        
        textTo = (Button)findViewById(R.id.button1);
        
        mySwitch = (Switch)findViewById(R.id.mySwitch);
        mySwitch.setChecked(true);
        mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {
				if (loaded) {
					if (isChecked) {
						tts.setLanguage(Locale.US);
					}
					else {
						tts.setLanguage(Locale.JAPAN);
					}
				}
			}
        	
        });
        
        tts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {

			@Override
			public void onInit(int status) {
				if (status != TextToSpeech.ERROR) {
					loaded = true;
					tts.setLanguage(Locale.US);
					//tts.setLanguage(Locale.GERMANY);
				}
				textTo.setEnabled(loaded);
			}
        	
        });
    }

	@Override
	protected void onPause() {
		
		if (tts != null) {
			tts.stop();
			tts.shutdown();
		}
		super.onPause();
	}
    
	 public void speakText(View view){
	      String toSpeak = write.getText().toString();
	      Toast.makeText(getApplicationContext(), toSpeak, 
	      Toast.LENGTH_SHORT).show();
	      tts.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
	 }
}

Results

TextToSpeech

Ref

Android Developer
Android Text To Speech Tutorial