Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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上使用语音搜索和语音识别?_Android_Speech Recognition_Voice Recognition - Fatal编程技术网

如何在Android上使用语音搜索和语音识别?

如何在Android上使用语音搜索和语音识别?,android,speech-recognition,voice-recognition,Android,Speech Recognition,Voice Recognition,我想在我的应用程序中使用语音识别,但此应用程序需要安装语音搜索 我不希望用户必须安装另一个应用程序,然后返回到我的应用程序来运行它。我想从我的应用程序中安装语音搜索,或者我想找到一个教程,介绍如何将语音搜索功能添加到我的应用程序中 我能做什么?这可以通过几个简单的步骤来完成: 在活动中创建某种按钮,并在其OnClickListener中放置以下代码: //将我的请求代码定义为活动中的int常量…我在10000s中使用int startVoiceRecognitionActivity(我的请求代码

我想在我的应用程序中使用语音识别,但此应用程序需要安装语音搜索

我不希望用户必须安装另一个应用程序,然后返回到我的应用程序来运行它。我想从我的应用程序中安装语音搜索,或者我想找到一个教程,介绍如何将语音搜索功能添加到我的应用程序中


我能做什么?

这可以通过几个简单的步骤来完成:

  • 在活动中创建某种按钮,并在其OnClickListener中放置以下代码:

    //将我的请求代码定义为活动中的int常量…我在10000s中使用int startVoiceRecognitionActivity(我的请求代码,“说点什么”)

  • 重写活动中的onActivityResult()方法。在实现中,放置一个switch块或if语句,以便在requestCode参数与MY_REQUEST_CODE常量匹配时运行某些逻辑。与以下类似的逻辑将为您提供语音识别活动认为听到的结果列表:

    ArrayList关键字匹配=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果)

  • 您可能会从识别器中获得0个或多个匹配项。一定要处理好所有的案件

  • 在某些情况下,语音识别器甚至可能不在设备上。尝试在调用startVoiceRecognitionActivity()的地方处理该问题


  • 我发现这个教程:


    希望这能有所帮助。

    使用识别器Intent启动设备上安装的语音识别器

    以下是一种处理语音搜索的简单方法

    步骤1单击按钮调用此方法

    public void startVoiceRecognition() {
        Intent intent = new Intent("android.speech.action.RECOGNIZE_SPEECH");
        intent.putExtra("android.speech.extra.LANGUAGE_MODEL", "free_form");
        intent.putExtra("android.speech.extra.PROMPT", "Speak Now");
        this.mContainerActivity.startActivityForResult(intent, 3012);
    }
    
    步骤2覆盖ActivityResult方法

    @ Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 3012 && resultCode == RESULT_OK) {
            ArrayList < String > matches = data.getStringArrayListExtra("android.speech.extra.RESULTS");
            String result= matches.get(0);
            //Consume result 
            edittext.setText(result);
        }
    }
    
    @覆盖
    ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
    if(requestCode==3012&&resultCode==RESULT\u确定){
    ArrayListmatches=data.getStringArrayListXTRA(“android.speech.extra.RESULTS”);
    字符串结果=匹配项。获取(0);
    //消费结果
    edittext.setText(结果);
    }
    }
    
    就这些,完成了

    另请参见