语音识别android应用程序
本文关键字:应用程序 android 语音识别 | 更新日期: 2023-09-27 18:05:05
当我按下说话按钮并在listview上打印结果时,我的应用程序识别语音,当我单击结果时,我希望它在toast上打印它....
问题是,当我再次点击按钮,它打印新的文本和旧的文本,例如在第一次我得到:(不,现在,知道)我点击不,它显示"现在",第二次它给出(google, good, google),我按good,它打印"now"然后是"good"
我觉得它记住了整个listview,你能帮我解决这个问题吗,这是代码:
if (resultCode == Result.Ok)
{
IList<System.String> matches = data.GetStringArrayListExtra(RecognizerIntent.ExtraResults);
voice_list.Adapter = new ArrayAdapter<System.String>(this, Android.Resource.Layout.SimpleListItem1, matches);
voice_list.ItemClick += delegate(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
{
var t = matches[e.Position];
string TextToTranslate = t.ToString();
Android.Widget.Toast.MakeText(this, TextToTranslate , Android.Widget.ToastLength.Long).Show();
};
}
这是因为您在每次处理结果时都添加了eventandler。所以第二次处理语音结果时,向ItemClick事件添加另一个eventandler。这将导致在单击项时产生2个事件处理程序。试着移动这部分。但也要记住,如果你把它移到OnStart,当你从另一个屏幕返回时,这个也会被调用。
不太确定为什么你得到第一个再次显示,但也许你也必须触发NotifyDataSetChanged到适配器后,你已经改变了它。
我个人更喜欢为适配器创建一个从BaseAdapter扩展而来的新类,在这个类中,您将处理带有items和itemsclicked的列表。(例如:为ListView定制ListAdapter)