Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用RecognizerIntent.ACTION\u recognizer\u语音搜索的Google语音搜索不执行操作_Android_Voice Recognition_Google Now_Recognizer Intent_Google Voice Search - Fatal编程技术网

Android 使用RecognizerIntent.ACTION\u recognizer\u语音搜索的Google语音搜索不执行操作

Android 使用RecognizerIntent.ACTION\u recognizer\u语音搜索的Google语音搜索不执行操作,android,voice-recognition,google-now,recognizer-intent,google-voice-search,Android,Voice Recognition,Google Now,Recognizer Intent,Google Voice Search,我正在开发一个应用程序,用户可以说的命令,它将得到执行。就像谷歌的“语音搜索”应用一样。我想使用一组与语音搜索操作相关的命令 我的代码如下: @Override public void startVoiceRecognitionActivity() { // TODO Auto-generated method stub Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent

我正在开发一个应用程序,用户可以说的命令,它将得到执行。就像谷歌的“语音搜索”应用一样。我想使用一组与语音搜索操作相关的命令

我的代码如下:

@Override
public void startVoiceRecognitionActivity() {
    // TODO Auto-generated method stub
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Command me");
    startActivityForResult(intent, REQUEST_CODE);
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case REQUEST_CODE: {
            ArrayList<String> matches = data
                    .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            ApplicationDebug.printlog("got inside onactivityresult");
            String spokenText = matches.get(0);
            Toast.makeText(getApplicationContext(), spokenText,
                    Toast.LENGTH_LONG).show();
            // super.onActivityResult(requestCode, resultCode, data);
            break;
        }
    }
}
@覆盖
公共无效startVoiceRecognitionActivity(){
//TODO自动生成的方法存根
意向意向=新意向(识别意向、行动、识别言语);
intent.putExtra(识别器intent.EXTRA_语言_模型,
识别者意图、语言、模型、网络搜索);
intent.putExtra(RecognizerIntent.EXTRA_提示符,“命令我”);
startActivityForResult(意图、请求代码);
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
案例请求代码:{
ArrayList匹配=数据
.getStringArrayListExtra(识别器意图.额外结果);
printlog(“进入了onactivityresult的内部”);
字符串spokenText=matches.get(0);
Toast.makeText(getApplicationContext(),spokenText,
Toast.LENGTH_LONG).show();
//super.onActivityResult(请求代码、结果代码、数据);
打破
}
}
}
在某些按钮上单击我正在调用
startVoiceRecognitionActivity()


它正确地检测到了声音,但动作没有在这里发生。我的确切意思是,如果我说“打开计算器”,它会正确显示文本,但不会打开计算器应用程序。

听起来像是在找这个:


识别意图。行动、声音、搜索、双手自由

您必须开发自己的匹配逻辑。也就是说,当
spokenText
等于
opencalculator
时,打开计算器应用程序。语音识别只是从语音到文本的转录,它不会解释它,更不用说根据这种解释执行任何操作了。谢谢你的回复。谷歌语音搜索应用程序中有没有api我可以直接使用,这样我就可以得到他们正在使用的动作?我不能肯定,但我真的很怀疑。谢谢@AlexisPigeon。我想我需要建造整个引擎。