如何将 TextToSpeech 静音?
How can I mute TextToSpeech?
我希望用户能够关闭 TextToSpeech 的音量。我有一个按钮可以做到这一点。此刻我正在关闭 TTS 并在每次用户重新打开它时创建新实例,这似乎是一个完整的循环方式。
有没有更有效的方法来做到这一点我没有看到实现此目的的默认方法:
解决方案是创建一个包并将其作为第三个参数传递。在 budle 你应该使用 params.putFloat(KEY_PARAM_VOLUME, 0.0f);
代码解释得更好:
private Bundle params;
public TextToSpeechHelper(Context context) {
mTTS = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.ENGLISH);
params = new Bundle();
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
}
public void speakThis(String whatToSay){
String speech = whatToSay;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mTTS.speak(speech,TextToSpeech.QUEUE_ADD, params, null);
} else {
mTTS.speak(speech, TextToSpeech.QUEUE_ADD, null);
}
}
public void mute() {
params.putFloat(KEY_PARAM_VOLUME, 0.0f);
}
public void soundOn() {
params.putFloat(KEY_PARAM_VOLUME, 1.0f);
}
我希望用户能够关闭 TextToSpeech 的音量。我有一个按钮可以做到这一点。此刻我正在关闭 TTS 并在每次用户重新打开它时创建新实例,这似乎是一个完整的循环方式。
有没有更有效的方法来做到这一点我没有看到实现此目的的默认方法:
解决方案是创建一个包并将其作为第三个参数传递。在 budle 你应该使用 params.putFloat(KEY_PARAM_VOLUME, 0.0f);
代码解释得更好:
private Bundle params;
public TextToSpeechHelper(Context context) {
mTTS = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.ENGLISH);
params = new Bundle();
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
}
} else {
Log.e("TTS", "Initialization failed");
}
}
});
}
public void speakThis(String whatToSay){
String speech = whatToSay;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mTTS.speak(speech,TextToSpeech.QUEUE_ADD, params, null);
} else {
mTTS.speak(speech, TextToSpeech.QUEUE_ADD, null);
}
}
public void mute() {
params.putFloat(KEY_PARAM_VOLUME, 0.0f);
}
public void soundOn() {
params.putFloat(KEY_PARAM_VOLUME, 1.0f);
}