package github.nisrulz.texttospeech; import android.os.Build; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.EditText; import android.widget.SeekBar; import android.widget.TextView; import java.util.Locale; public class MainActivity extends AppCompatActivity { TextToSpeech engine; EditText editText; Button btn; SeekBar seekbarPitch; float pitchVal = 0.0f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); engine = new TextToSpeech(this, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { int result = engine.setLanguage(Locale.US); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.e("TTS", "This Language is not supported"); } } else { Log.e("TTS", "Initilization Failed!"); } } }); editText = (EditText) findViewById(R.id.editText); editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { if (i == EditorInfo.IME_ACTION_GO) { speak(editText.getText().toString()); return true; } return false; } }); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { speak(editText.getText().toString()); } }); seekbarPitch = (SeekBar) findViewById(R.id.seekBar); seekbarPitch.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { pitchVal = i; } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } void speak(String text) { if (!engine.isSpeaking()) { engine.setPitch(pitchVal); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { engine.speak(text, TextToSpeech.QUEUE_FLUSH, null, null); } else { engine.speak(text, TextToSpeech.QUEUE_FLUSH, null); } } } @Override protected void onDestroy() { if (engine != null) { engine.stop(); engine.shutdown(); } super.onDestroy(); } }