android EMOJI

概述

个人最近在做公司的android项目,里面要对EMOJI表情进行处理,由于ios产品已经上线,而我的android产品才刚刚开始,所以android需要兼容服务器端ios已经提交上去的EMOJI数据(后来者,比较坑呀,希望广大猿友们不要给后来者挖坑呀,做的时候最好考虑下另一个平台的兼容性,我是被坑死了~~)。

啥是emoji表情呢?小日本的东西呗,其实我对这个小日本的东西并不是很感冒,项目所需吗,没有办法撒~~附个所谓的emoji表情的官网吧(我也不知道是不是真的官网,看上去内容很全,又有日文,全当它是吧)在这里小小的吐槽下:这个官网也够坑的,虽说提供了emoji图片(这个省去了我很多时间),但是提供的图片有些就是黑白的,有些直接啥也没有,就一个黑色的背景,还有些和ios上的图片对不上,弄得我这个小小程序员,后面还的自己切图,扣背景!

哈哈~~回到正题上来吧,由于ios默认是支持emoji表情发送的,而android原生系统默认是不支持的,只有一些第三方厂商可能会加上去(一般都是黑白的,例如小米),或者第三方的输入法会加入emoji表情(例如:搜狗输入法),所以我在项目中要兼容ios的emoji表情就得从两方面出发:从服务器接收表情和发送表情至服务器。

初试

1,代码贴上

/**
* @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));
}
}
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);
}




做了个非常好的 demo 出来,大家可以下载看看。呵呵。

下载地址:http://download.csdn.net/detail/huang_liang_wei/7589255


发布了9 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/huang_liang_wei/article/details/36695747