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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章