您的位置:首页 > 移动开发 > Android开发

如何实现Android4.1语音输入的纠错和一键删除效果

2012-08-24 16:11 615 查看
这几天刚还在研究这个东东,简单写几句。

主要使用两个Span即可实现:SuggestionSpan 和 EasyEditSpan

部分实现代码如下,

1.关于SuggestionSpan的

//不能共用Span,否则只有最后一个生效/////////非常重要
SuggestionSpan ss1 = new SuggestionSpan(this, new String[]{"123", "456", "789"},SuggestionSpan.FLAG_AUTO_CORRECTION);
ss1.setFlags(SuggestionSpan.FLAG_AUTO_CORRECTION);//蓝色 ///////////
SuggestionSpan ss2 = new SuggestionSpan(this, new String[]{"hello", "hi", "bye"},SuggestionSpan.FLAG_AUTO_CORRECTION);
ss2.setFlags(SuggestionSpan.FLAG_EASY_CORRECT);//灰色
SuggestionSpan ss3 = new SuggestionSpan(this, new String[]{"你好", "再见", "谢谢"},SuggestionSpan.FLAG_AUTO_CORRECTION);
ss3.setFlags(SuggestionSpan.FLAG_MISSPELLED);//无色

SpannableString str = new SpannableString("我们是一家人 对不对 是不是");

str.setSpan(ss1, 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);//只有最后一个生效
str.setSpan(ss2, 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);
str.setSpan(ss3, 11, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING);

ic.commitText(str, 1);


2.关于EasyEditSpan的

SpannableString spanText = new SpannableString("我们是一家人");
spanText.setSpan(new EasyEditSpan(), 0, spanText.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
ic.commitText(spanText, 1);


注意:所有需要发送到输入框的Span必须实现了ParcelableSpan,没有实现这个接口的Span之能用于TextView中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐