如何基于语音命令打开Activity

3

我正在制作一个仪表盘应用程序,其中有许多界面。当用户基于语音命令时,我需要打开该活动。我不知道从哪里开始,我已经完成了所有屏幕,我想实现语音搜索。 我的应用程序屏幕是“提前”,“请假”,“招聘”,“权限”,“通知”等 例如:当用户说“提前”时,它应该打开提前屏幕。请帮助我。


我认为这个链接 http://developer.android.com/guide/topics/search/search-dialog.html 会对你有所帮助。 - Sree
我想根据语音命令启动活动...我已经实现了搜索...感谢您的回复。 - Pragnani
2
当我谷歌你的问题时,我得到了这个链接:http://stackoverflow.com/a/10330292/1697047。只需仔细阅读它即可。 - Sree
1个回答

3

1) 开始语音识别意图

2) 在onActivityResult()中处理返回的数据以决定要启动哪个活动

1. 开始语音识别意图

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Choose Activity");
startActivityForResult(intent, REQUEST_SPEECH);

2. 处理返回的数据

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if (requestCode == REQUEST_SPEECH){
            if (resultCode == RESULT_OK){
                ArrayList<String> matches = data
                    .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

                if (matches.size() == 0) {
                    // didn't hear anything
                } else {
                    String mostLikelyThingHeard = matches.get(0);
                    // toUpperCase() used to make string comparison equal
                    if(mostLikelyThingHeard.toUpperCase().equals("ADVANCES")){
                        startActivity(new Intent(this, Advances.class));
                    } else if() {
                    }
                }
            }
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

感谢@jfortunato分享信息。我想将意图传递给我的联系人列表,而不是“ADVANCES”。我尝试了一下,但是没有成功,因为要再次将意图传递给联系人列表,我应该使用一个名为startActivityForResult()的方法,而不是startActivity()。你能帮我解决这个问题吗? - Tara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接