//package your.package.name;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity
implements View.OnClickListener, TextToSpeech.OnInitListener{
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// TTS インスタンス生成
tts = new TextToSpeech(this, this);
Button ttsButton = findViewById(R.id.button_tts);
ttsButton.setOnClickListener(this);
}
@Override
public void onInit(int status) {
// TTS初期化
if (TextToSpeech.SUCCESS == status) {
Log.d("debug", "initialized");
} else {
Log.e("debug", "failed to initialize");
}
}
@Override
public void onClick(View v) {
speechText();
}
private void shutDown(){
if (null != tts) {
// to release the resource of TextToSpeech
tts.shutdown();
}
}
private void speechText() {
EditText editor = findViewById(R.id.edit_text);
editor.selectAll();
// EditTextからテキストを取得
String string = editor.getText().toString();
if (0 < string.length()) {
if (tts.isSpeaking()) {
tts.stop();
return;
}
setSpeechRate();
setSpeechPitch();
tts.speak(string, TextToSpeech.QUEUE_FLUSH, null, "messageID");
setTtsListener();
}
}
// 読み上げのスピード
private void setSpeechRate(){
if (null != tts) {
tts.setSpeechRate((float) 1.0);
}
}
// 読み上げのピッチ
private void setSpeechPitch(){
if (null != tts) {
tts.setPitch((float) 1.0);
}
}
// 読み上げの始まりと終わりを取得
private void setTtsListener(){
int listenerResult =
tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onDone(String utteranceId) {
Log.d("debug","progress on Done " + utteranceId);
}
@Override
public void onError(String utteranceId) {
Log.d("debug","progress on Error " + utteranceId);
}
@Override
public void onStart(String utteranceId) {
Log.d("debug","progress on Start " + utteranceId);
}
});
if (listenerResult != TextToSpeech.SUCCESS) {
Log.e("debug", "failed to add utterance progress listener");
}
}
protected void onDestroy() {
super.onDestroy();
shutDown();
}
}