更新:
我正在创建一个应用,onClickListener
用于将语音转换为文本,并将文本输入List View
字段。同样,一旦输入,我想重新触发语音到文本选项,并将新文本输入到另一个List View
字段,同时仍保留已填写的所有其他List View
字段。
以下是Java文件的一部分,该文件使用我想要回答的各种语句调用speech to text选项。最初提示完全出现在下一个之后,这是完美的,但它并没有将每个文本分配给相应的编辑文本字段。它仅将语音记录到最后一个提示的文本中。现在在这个线程上有一些帮助我已经将代码更新为以下内容,其中checklv1
等对应于唯一的整数:
public void onClick(View v){
Intent i1 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i1.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i1.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the current time?");
startActivityForResult(i1, check);
Intent i2 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i2.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i2.putExtra(RecognizerIntent.EXTRA_PROMPT, "Is the status Confirmed or Unconfirmed?");
startActivityForResult(i2, checklv1);
Intent i3 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i3.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i3.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the Temp?");
startActivityForResult(i3, checklv2);
}
以下部分代码显示将文本分配到editText
字段lv1
,lv2
和lv3
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == check && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == checklv1 && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv2.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == checklv2 && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv3.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
}
代码正在进行中,并将语音输入到每个list view
字段中的文本短语。但我唯一的问题是lv3
包含正确的词组,lv1
也包含正确的词组,但lv2
与lv1
的词组相同,而它应该是对应的词组到lv2
。很可能在支票分配中有问题。
如果有人可以帮我解决上述代码中出错的地方,将非常感谢
答案 0 :(得分:2)
您传递给check
的{{1}}字段是您应该用来区分您正在执行的操作的字段。在此处传递3个不同的值,并在startActivityForResult
中启用它们,以确定要更新的UI部分。
onActivityResult
startActivityForResult(i2, checkLv1);