我有一个单击按钮的语音识别器意图。
voiceSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak Now...");
startActivityForResult(intent, REQUEST_CODE);
}
catch (ActivityNotFoundException e) {
Log.v("Speech", "Could not find any Speech Recognition Actions");
}
}
});
在活动结果中,我的代码为
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println("Request code++++++++++++++++++++++++++++"+requestCode);
System.out.println("Result Code+++++++++++++++++++++++++++++"+resultCode);
System.out.println("Data++++++++++++++++++++++++++++++++++++"+data);
System.out.println("Language"+data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE));
System.out.println("data.getDataString()"+data.getDataString());
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null && data.getData() != null) {
String searchKey = data.getData().toString();
System.out.println("Search Key++++++++++++++++++++++++"+searchKey);
searchEditText.setText(searchKey);
webView.loadUrl(url+"searchKey");
}
}
}
我在
onActivityResult
中打印时得到的输出是我以
1
身份获得的请求代码结果代码为
-1
我以
Intent { (has extras) }
形式获得的数据语言
data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE)
作为null
。Data.getDataString()
作为null
。有人可以让我知道我在代码中可能出什么问题吗?
谢谢。
最佳答案
我认为您正在尝试以错误的方式获得结果。它们不存储在数据字符串中,而是存储在matchs数组中。
您可以通过执行以下操作获取数组:
ArrayList<String> matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
数组中的每个条目都是一个多字字符串,代表识别器对用户所说内容的一种猜测。