Android TTSを使って英単語や日本語を読み上げるアプリを作成する。
public class MainActivity extends Activity implements TextToSpeech.OnInitListener {
private TextToSpeech tts;
public void onCreate(Bundle savedInstanceState) {
~
tts = new TextToSpeech(this, this);
startTTS(“test speech !”);//ttsの起動前だったら読み上げがなされない場合がある。
}
/**
* TTSエンジンがインストール済かどうかを判定
*/
private void checkTTS() {
Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, CHECK_TTS);
}// チェックの結果を受け取る
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CHECK_TTS) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {}else {
//インストール無しなら
Intent install = new Intent();
install.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(install);
}
}}
/**
* 合成を実行
* @param text 読み上げたいテキスト
*/
private void startTTS(String text) {
if(flg_tts){
// 読み上げ中なら止める
if (tts.isSpeaking()) {
tts.stop();
}
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
}public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
if (tts.isLanguageAvailable(Locale.US) >= TextToSpeech.LANG_AVAILABLE) {
tts.setLanguage(Locale.US); //アメリカ英語に設定
}
}
}@Override
protected void onDestroy() {
super.onDestroy();tts.shutdown();
}