Merge branch 'main' of https://github.com/MADAO-LUV/ManGoWalk
This commit is contained in:
119
app/src/main/java/com/example/mangowalking/utils/SystemTTS.java
Normal file
119
app/src/main/java/com/example/mangowalking/utils/SystemTTS.java
Normal file
@@ -0,0 +1,119 @@
|
||||
package com.example.mangowalking.utils;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.speech.tts.TextToSpeech;
|
||||
import android.speech.tts.UtteranceProgressListener;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
public class SystemTTS extends UtteranceProgressListener implements TTS, TextToSpeech.OnUtteranceCompletedListener {
|
||||
|
||||
private Context mContext;
|
||||
private static SystemTTS singleton;
|
||||
private TextToSpeech textToSpeech; // 系统语音播报类
|
||||
private boolean isSuccess = true;
|
||||
|
||||
ICallBack callBack = null;
|
||||
|
||||
public static SystemTTS getInstance(Context context) {
|
||||
if (singleton == null) {
|
||||
synchronized (SystemTTS.class) {
|
||||
if (singleton == null) {
|
||||
singleton = new SystemTTS(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
return singleton;
|
||||
}
|
||||
|
||||
private SystemTTS(Context context) {
|
||||
this.mContext = context.getApplicationContext();
|
||||
textToSpeech = new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {
|
||||
@Override
|
||||
public void onInit(int i) {
|
||||
//系统语音初始化成功
|
||||
if (i == TextToSpeech.SUCCESS) {
|
||||
int result = textToSpeech.setLanguage(Locale.CHINA);
|
||||
textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
|
||||
textToSpeech.setSpeechRate(1.0f);
|
||||
textToSpeech.setOnUtteranceProgressListener(SystemTTS.this);
|
||||
textToSpeech.setOnUtteranceCompletedListener(SystemTTS.this);
|
||||
if (result == TextToSpeech.LANG_MISSING_DATA
|
||||
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
|
||||
//系统不支持中文播报
|
||||
isSuccess = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUtteranceCompleted(String utteranceId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(String utteranceId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDone(String utteranceId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String utteranceId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playText(String playText) {
|
||||
if(!isSuccess){
|
||||
return;
|
||||
}
|
||||
if(textToSpeech != null)
|
||||
{
|
||||
textToSpeech.speak(playText,
|
||||
TextToSpeech.QUEUE_ADD,null,null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopSpeak() {
|
||||
if(textToSpeech != null)
|
||||
{
|
||||
textToSpeech.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
stopSpeak();
|
||||
if(textToSpeech != null)
|
||||
{
|
||||
textToSpeech.shutdown();
|
||||
}
|
||||
singleton = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlaying() {
|
||||
return textToSpeech.isSpeaking();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setCallback(ICallBack callback) {
|
||||
callBack = callback;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user