如何在安卓系统上使用语音搜索和语音识别?

9

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

我不希望用户安装其他应用程序,然后返回到我的应用程序才能运行它。我希望从我的应用程序中安装语音搜索,或者我想找到一个教程来添加语音搜索功能到我的应用程序中。

我该怎么办?


请参考以下链接:https://dev59.com/GFXTa4cB1Zd3GeqP6vke - David J. Liszewski
5个回答

5
使用 RecognizerIntent 来触发设备上安装的语音识别器。

0

这可以通过以下简单的步骤完成:

  1. 在你的活动中创建一个按钮,并将下面的代码放置在它的OnClickListener中:

    // 在你的活动中定义MY_REQUEST_CODE为一个int常量……我使用10000的整数 startVoiceRecognitionActivity(MY_REQUEST_CODE, "说些什么。");

  2. 覆盖你的活动中的onActivityResult()方法。在实现中,放置一个switch块或if语句,在requestCode参数匹配你的MY_REQUEST_CODE常量时运行一些逻辑。类似如下的逻辑将会给你语音识别活动认为它听到的结果列表:

    ArrayList keywordMatches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

  3. 你可能会从识别器中获得0个或多个匹配。一定要处理所有情况。

  4. 在有些情况下,语音识别器甚至可能不在设备上。尝试在调用startVoiceRecognitionActivity()时处理它。




0

这里有一个简单的方法来处理语音搜索

步骤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 重写onActivityResult方法

@ 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);
    }
}

这就是全部,完成了


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