Android 版本的emoji表情装换

/**
* @desc <pre>表情解析,转成unicode字符</pre>
* @author Weiliang Hu
* @date 2013-12-17
* @param cs
* @param mContext
* @return
*/
public static String convertToMsg(CharSequence cs, Context mContext) {
SpannableStringBuilder ssb = new SpannableStringBuilder(cs);
ImageSpan[] spans = ssb.getSpans(0, cs.length(), ImageSpan.class);
for (int i = 0; i < spans.length; i++) {
ImageSpan span = spans[i];
String c = span.getSource();
int a = ssb.getSpanStart(span);
int b = ssb.getSpanEnd(span);
if (c.contains("[")) {
ssb.replace(a, b, convertUnicode(c));
}
}
个人感觉 就是转码的问题.将获取到含有emoji表情的字符串进行下转换就可以了.当然发表emoji时候不需要做什么处理.仅仅服务端做出处理就可以.以utf-8字符串发表
ssb.clearSpans();
return ssb.toString();
}
private static String convertUnicode(String emo) {
emo = emo.substring(1, emo.length() - 1);
if (emo.length() < 6) {
return new String(Character.toChars(Integer.parseInt(emo, 16)));
}
String[] emos = emo.split("_");
char[] char0 = Character.toChars(Integer.parseInt(emos[0], 16));
char[] char1 = Character.toChars(Integer.parseInt(emos[1], 16));
char[] emoji = new char[char0.length + char1.length];
for (int i = 0; i < char0.length; i++) {
emoji[i] = char0[i];
}
for (int i = char0.length; i < emoji.length; i++) {
emoji[i] = char1[i - char0.length];
}
return new String(emoji);
}
posted @ 2016-05-19 15:08  神游风云  阅读(784)  评论(0)    收藏  举报