gpt4 book ai didi

Android TextToSpeech.speak 在 onActivityResult 中不起作用

转载 作者:行者123 更新时间:2023-11-29 21:11:24 25 4
gpt4 key购买 nike

我有一个 speakText() 方法如下

public void speakText(){
String toSpeak = "Testing 1 2 3";
Toast.makeText(getApplicationContext(), toSpeak,
Toast.LENGTH_SHORT).show();
mTts.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
}

它在按下按钮时工作正常(即从 onClick 函数调用此方法)。但是,当我如下所示在 onActivityResult() 中调用此方法时,我什么也听不到

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_running_ui);
...
speakButton = (Button) findViewById(R.id.speakButton);
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if(activities.size()==0){
speakButton.setEnabled(false);
Toast.makeText(getApplicationContext(), "Speech Recognizer Not Found", 1000).show();
}
speakButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
startVoiceRecognitionActivity();
}
});

commandText = (TextView) findViewById(R.id.command);
}

public void onActivityResult(int requestCode, int resultCode, Intent data){
switch(requestCode){

case MY_DATA_CHECK_CODE:
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {

@Override
public void onInit(int arg0) {
// TODO Auto-generated method stub
mTts.setLanguage(Locale.UK);

}
});


} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
case VOICE_RECOGNITION_REQUEST_CODE:
if (resultCode == RESULT_OK){
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
commandText.setText(matches.get(0)); // get the first matching text

speakText();

}
}
}

@Override
public void onPause(){
if(mTts != null){
mTts.stop();
mTts.shutdown();
}
super.onPause();
}

我想做的是让 android 手机在语音到文本转换后说出一些东西。我确定程序进入了 VOIC_RECOGNITION_REQUEST_CODE 分支,因为它使用 commandText.setText(matches.get(0)); 显示了文本;行。

我不知道为什么 textToSpeech 在按下按钮时起作用,但在 onActivityResult 方法中却不起作用。

最佳答案

您在 onPause 中关闭了 TextToSpeech,因此 mTts 不再绑定(bind)到文本到语音引擎。如果您所做的只是显示识别器对话框,则需要将 onPause() 中的代码移动到 onStop() 中。

当显示语音识别器对话框时,将调用您的 Activity onPause(),但不会调用 onStop(),除非您的 Activity 不再可见。您还应该在 onStart() 中再次实例化文本到语音。

关于Android TextToSpeech.speak 在 onActivityResult 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com