我想在我的应用程序中使用语音识别功能,但该应用程序需要安装语音搜索。
我不希望用户安装其他应用程序,然后返回到我的应用程序才能运行它。我希望从我的应用程序中安装语音搜索,或者我想找到一个教程来添加语音搜索功能到我的应用程序中。
我该怎么办?
我想在我的应用程序中使用语音识别功能,但该应用程序需要安装语音搜索。
我不希望用户安装其他应用程序,然后返回到我的应用程序才能运行它。我希望从我的应用程序中安装语音搜索,或者我想找到一个教程来添加语音搜索功能到我的应用程序中。
我该怎么办?
这可以通过以下简单的步骤完成:
在你的活动中创建一个按钮,并将下面的代码放置在它的OnClickListener中:
// 在你的活动中定义MY_REQUEST_CODE为一个int常量……我使用10000的整数 startVoiceRecognitionActivity(MY_REQUEST_CODE, "说些什么。");
覆盖你的活动中的onActivityResult()方法。在实现中,放置一个switch块或if语句,在requestCode参数匹配你的MY_REQUEST_CODE常量时运行一些逻辑。类似如下的逻辑将会给你语音识别活动认为它听到的结果列表:
ArrayList keywordMatches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
你可能会从识别器中获得0个或多个匹配。一定要处理所有情况。
在有些情况下,语音识别器甚至可能不在设备上。尝试在调用startVoiceRecognitionActivity()时处理它。
这里有一个简单的方法来处理语音搜索
步骤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);
}
}
这就是全部,完成了