gpt4 book ai didi

android - 如何从具有 singleInstance 启动模式的 Activity 中正确启动语音识别 Activity ?

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

已经看到另一个thread其中提到如果从具有 singleInstance 启动模式的 Activity 中启动,则具有 RecognizerIntent 的 Activity 无法正常工作。所以我想知道我的替代方案是什么。

我的用例如下:我的应用程序监听一个事件,当这个事件发生时,它会显示一个警告对话框,即使用户正在使用另一个应用程序。来自其他questions我发现这样做的常用方法是使用 singleInstance 启动模式启动 Activity 。但是现在一旦弹出这个警告对话框,我就需要使用 RecognizerIntent 并进行一些语音到文本的处理。但是,语音输入对话框不会等待任何输入,并且会立即调用 onActivityResult()。如果我的警报对话框从启动模式不是“singleInstance”的 Activity 中弹出,一切正常。

还有其他方法可以解决这个问题吗?

最佳答案

尝试以这种方式运行您的代码:-

List<ResolveInfo> activities = pm.queryIntentActivities(
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() != 0) {
speakButton.setOnClickListener(this);
} else {
speakButton.setEnabled(false);
speakButton.setText("Recognizer not present");
}

上面的代码应该写在onCreate()里面,下面的代码应该写在外面

public void onClick(View v) {
if (v.getId() == R.id.btn_speak) {
startVoiceRecognitionActivity();
}
}


private void startVoiceRecognitionActivity() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

//Run a loop checking whether the list is empty or not:-
while(activities.isEmpty()){
//wait
}
//Now run your alert dialog box
}

我已经在 DellXCD35 android 2.3.3 上对其进行了测试,一旦您获得列表中的文本列表,它就可以完美运行,并查看您想要选择的内容。

关于android - 如何从具有 singleInstance 启动模式的 Activity 中正确启动语音识别 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611141/

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