Android 如何基于语音命令打开“活动”

Android 如何基于语音命令打开“活动”,android,voice,voice-recognition,Android,Voice,Voice Recognition,我正在做仪表板应用程序,其中有很多屏幕。当用户告诉语音命令时,我需要打开活动。我不知道从哪里开始我已经完成了所有的屏幕,我想实现语音搜索。 我的应用程序屏幕包括预付款、休假、招聘、权限、通知等 示例:当用户说“前进”时,应打开前进屏幕。请帮助我。1)开始语音识别 2) 在onActivityResult()中处理返回的数据,以决定启动哪个活动 1。启动语音识别意图 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEEC

我正在做仪表板应用程序,其中有很多屏幕。当用户告诉语音命令时,我需要打开活动。我不知道从哪里开始我已经完成了所有的屏幕,我想实现语音搜索。 我的应用程序屏幕包括预付款、休假、招聘、权限、通知等 示例:当用户说“前进”时,应打开前进屏幕。请帮助我。

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);
    }
@覆盖
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==请求\语音){
if(resultCode==RESULT\u OK){
ArrayList匹配=数据
.getStringArrayListExtra(识别器意图.额外结果);
如果(匹配.size()==0){
//我什么也没听到
}否则{
String mostLikelyThingHeard=matches.get(0);
//toUpperCase()用于使字符串比较相等
if(mostLikelyThingHeard.toUpperCase().equals(“ADVANCES”)){
startActivity(新意图(this,Advances.class));
}else if(){
}
}
}
}
super.onActivityResult(请求代码、结果代码、数据);
}

我想这会对你有所帮助。我想开始基于语音命令的活动……我已经实现了搜索……感谢你的回答。当我搜索你的问题时,我得到了这个。通过这+1感谢你的帮助。谢谢分享@jfortunato的信息。我想把意图传递给我的联系人列表,而不是“进展”。我尝试了它,但没有得到它,至于再次将意图传递给联系人列表,我应该使用startActivityForResult()方法,而不是startActivity()。你能帮帮我吗?