【发布时间】:2025-12-26 14:20:08
【问题描述】:
所有你需要知道的: 我有一个对话框,里面有一个按钮。按下按钮时,我想在 MainActivity 中启动语音识别。 (对话框由另一个类创建,我通过接口处理点击)。
所以这里是相关代码:(在MainActivity中)
public void speechToText(boolean isName) {
this.isName = isName;
Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
//intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.prompt));
try {
startActivityForResult(intent, RESULT_SPEECH);
Toast.makeText(getApplicationContext(),
"started acitvity for result", //test toast
Toast.LENGTH_SHORT).show();
} catch (ActivityNotFoundException a) {
Toast.makeText(getApplicationContext(),
getString(R.string.speech_to_text_not_supported),
Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RESULT_SPEECH: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> text = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if(isName)
currentName = text.get(0);
else
currentDes = text.get(0);
dialog.DialogNew(currentName, currentDes);
}
break;
}
}
}
问题是:通常会出现一个对话框用于输入语音。但不知何故,这个对话框不会出现。我已经对其进行了测试,它显示了“测试吐司”(见上文),但没有错误,也没有输入对话框。但为什么呢?
编辑:我终于可以在另一台设备上对其进行测试,但(最后)我得到了一个错误:谷歌对话框已关闭。从协议上看,空指针异常,所以我想我的意图一定有问题。
【问题讨论】:
-
您需要检查 logcat 以获取详细信息,错误详细信息应出现在那里。不幸的是,您提供的代码还不够。可能是您从其他线程启动此活动,您应该从主线程启动它。
-
logcat 中没有错误。我只有一个活动(我在其中调用 startActivityForResult(...))。正如我所说,我从对话中调用 SpeechToText()。我以为会有问题,所以我在调用该方法之前尝试将其关闭,但这无济于事
标签: java android android-intent dialog speech