在 activity 开始时播放 TextToSpeech
play TextToSpeech when the activity starting
我希望我的应用程序在 activity 开始时说一句话 "Hello, If Your Case Is Emergency CALL 911",但我不能那样做。
我使用了以下代码:
public class home extends AppCompatActivity implements TextToSpeech.OnInitListener {
Button Signin , listButton,Speak;
EditText Text;
Button mSpeak;
private TextToSpeech mTTS;
protected static final int RESULT_SPEECH = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// TTS
mTTS = new TextToSpeech(this, this);
mSpeak = (Button) findViewById(R.id.mSpeak);
mSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
}
});
speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
}
public void speak(String str) {
mTTS.speak(str, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
protected void onDestroy() {
super.onDestroy();
mTTS.shutdown();
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.UK);
mTTS.setPitch(0.8f);
mTTS.setSpeechRate(1.1f);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
mSpeak.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
}
在前面的代码中,speak(str)
方法用于 运行 TTS 并让设计开始说话。
但是,当我尝试 运行 TextToSpeech
按下 mSpeak
按钮时,它可以正常工作。 但是,当运行它在onCreate
时它不起作用。
我希望 activity 开始播放 TextToSpeech
。任何人都可以指导我正确的方法,因为它不起作用。 TextToSpeech
仅适用于按下按钮。
那是因为 TTS 正在初始化一段时间,速度非常快,但您仍然无法创建 new TextToSpeech
并且下面几行几乎立即调用 mTTS.speak
。目前您不知道 TTS 是否可用 - 您必须等待 status == TextToSpeech.SUCCESS
(以及语言可用确认),因此您应该将 "welcome" speak 方法调用移到那里
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.UK);
mTTS.setPitch(0.8f);
mTTS.setSpeechRate(1.1f);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
mSpeak.setEnabled(true);
speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
}
} else {
Log.e("TTS", "Initialization failed");
}
}
我希望我的应用程序在 activity 开始时说一句话 "Hello, If Your Case Is Emergency CALL 911",但我不能那样做。
我使用了以下代码:
public class home extends AppCompatActivity implements TextToSpeech.OnInitListener {
Button Signin , listButton,Speak;
EditText Text;
Button mSpeak;
private TextToSpeech mTTS;
protected static final int RESULT_SPEECH = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// TTS
mTTS = new TextToSpeech(this, this);
mSpeak = (Button) findViewById(R.id.mSpeak);
mSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
}
});
speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
}
public void speak(String str) {
mTTS.speak(str, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
protected void onDestroy() {
super.onDestroy();
mTTS.shutdown();
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.UK);
mTTS.setPitch(0.8f);
mTTS.setSpeechRate(1.1f);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
mSpeak.setEnabled(true);
}
} else {
Log.e("TTS", "Initialization failed");
}
}
}
在前面的代码中,speak(str)
方法用于 运行 TTS 并让设计开始说话。
但是,当我尝试 运行 TextToSpeech
按下 mSpeak
按钮时,它可以正常工作。 但是,当运行它在onCreate
时它不起作用。
我希望 activity 开始播放 TextToSpeech
。任何人都可以指导我正确的方法,因为它不起作用。 TextToSpeech
仅适用于按下按钮。
那是因为 TTS 正在初始化一段时间,速度非常快,但您仍然无法创建 new TextToSpeech
并且下面几行几乎立即调用 mTTS.speak
。目前您不知道 TTS 是否可用 - 您必须等待 status == TextToSpeech.SUCCESS
(以及语言可用确认),因此您应该将 "welcome" speak 方法调用移到那里
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = mTTS.setLanguage(Locale.UK);
mTTS.setPitch(0.8f);
mTTS.setSpeechRate(1.1f);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "Language not supported");
} else {
mSpeak.setEnabled(true);
speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
}
} else {
Log.e("TTS", "Initialization failed");
}
}