Es ist ein Projekt, das Text mit der von Google bereitgestellten Texttospeech -Klasse in die Sprache umwandelt.
Es ist der standardmäßigste TextToSpeech(Context context, TextToSpeech.OnInitListener listener) . Es gibt einen Konstruktor, der den TTS -Motor festlegen kann, aber ich habe beschlossen, ihn wegzulassen.
InitListener wird unten beschrieben.
private TextToSpeech textToSpeech;
@Override
protected void onCreate(Bundle savedInstanceState) {
textToSpeech = new TextToSpeech(this, initListener);
}
//음성 재생 상태에 대한 callback을 받을 수 있는 추상 클래스
private UtteranceProgressListener progressListener = new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) { // 음성이 재생되었을 때
}
@Override
public void onDone(String utteranceId) { // 제공된 텍스트를 모두 음성으로 재생한 경우
}
@Override
public void onError(String utteranceId) { // ERROR!
}
};
textToSpeech.setOnUtteranceProgressListener(progressListener);
setLanguage() -Methode kann die Sprachsprache festlegen. Sie können die erforderliche Stimme entsprechend der Situation wie Lokale auswählen.
//음성 관련 초기화 상태에 대한 callback을 받을 수 있는 인터페이스
private TextToSpeech.OnInitListener initListener = new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR)
textToSpeech.setLanguage(Locale.KOREAN); // 한글로 설정
}
};
Vor dem Erläuten zeigt 'Äußerung' einen ID -Wert für die derzeit gespielte Stimme an. Es scheint nützlich zu sein, wenn es darum geht, mehrere Stimme zu kontrollieren.
Die vorhandene Methode des vorhandenen speak(String text, int queueMode, HashMap<String, String> params) wurde von der API -Ebene 21 veraltet. Verwenden Sie also in Übereinstimmung mit der API -Ebene die neue speak(CharSequence text, int queueMode, Bundle params, String utteranceId) -Methode wie folgt wie folgt.
String text = editText.getText.toString();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
String myUtteranceID = "myUtteranceID";
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, myUtteranceID);
}
else {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "myUtteranceID");
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, hashMap);
}
Verwenden Sie einfach eine Methode wie textToSpeech.stop() um den derzeit gespielten Stopp der Stimme zu stoppen.
Der initialisierte TextTospeech -Moment durch Sprachmotor muss vollständig über textToSpeech.shutDown() beendet werden. Oder SeviceConnection ... Ich habe eine Ausnahme.
ex. Bei Aktivitäten, wie unten gezeigt, können Sie shutDown() aufrufen, um den Lebenszyklus zu entsprechen.
@Override
protected void onDestroy() {
if(textToSpeech != null)
textToSpeech.shutDown();
super.onDestroy();
}
Das Projekt erstellte eine TTS -Klasse und erleichterte die Verwendung. Danach wird das Projekt dem Projekt hinzugefügt.
