语音识别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();
    }; 
}

语音识别android应用程序

这是因为您在每次处理结果时都添加了eventandler。所以第二次处理语音结果时,向ItemClick事件添加另一个eventandler。这将导致在单击项时产生2个事件处理程序。试着移动这部分。但也要记住,如果你把它移到OnStart,当你从另一个屏幕返回时,这个也会被调用。

不太确定为什么你得到第一个再次显示,但也许你也必须触发NotifyDataSetChanged到适配器后,你已经改变了它。

我个人更喜欢为适配器创建一个从BaseAdapter扩展而来的新类,在这个类中,您将处理带有items和itemsclicked的列表。(例如:为ListView定制ListAdapter)