Отображать значок emoji / emotion в Android TextView

У меня есть проблема с отображением значка emoji в Android TextView

Во-первых, я нашел список икон emoji в юникоде здесь: http://www.easyapns.com/category/just-for-fun

Во-вторых, я нашел, как отображать значок emoji здесь: https://github.com/sharakova/EmojiTextView/blob/master/src/jp/sharakova/android/emoji/EmojiTextView.java

EmojiTextView.java автоматически преобразует предопределенный символ в значок emoji. Поэтому я хочу заменить все вхождения символа emoji в String на некоторый предопределенный символ и поместить результат в EmojiTextView.java. Проблема заключается в том, что мой код не может распознать значок emoji в String, который содержит значок emoji.

Вот мой фрагмент кода – я пытаюсь найти, если вход соответствует любому юникоду значка emoji:

// Array list of all emoji icon private static final String[] ArrayEUnicodeString ={ "\uE415", "\uE056", "\uE057", ... } // Nothing matched when it receive emoji icon with unicode "\uE415" from iphone. 'input' is message received from XMPP server for (int i=0; i < emojiLength; i++) { if (input.getBytes() == ArrayEUnicodeString[i].getBytes()) Log.e("test", "ArrayEUnicodeString found"); } // Note: iphone can display the emoji icon if I send "\uE415" 

Я не очень хорошо разбираюсь в unicode-сравнении / конвенции. Может кто-нибудь помочь мне, пожалуйста, спасибо!

Вы также можете попытаться найти emoji, используя регулярное выражение: «[\ ue415 \ ue056 \ ue057]» вместо сравнения байтов. 😺

Почему вы хотите встроить защищенные изображения Apple emoji в свое приложение?

Стандарт Unicode включает 722 emoji, которые могут отображаться шрифтом по умолчанию Android, просто введя символы Unicode в поле EditText или TextView .

Вы можете, кроме того, использовать следующую библиотеку (в папке «Java») для автоматического преобразования популярных смайликов типа :-) в соответствующий Unicode emoji:

https://github.com/delight-im/Emoji

Он отлично работает, если вы преобразуете строку в массив символов и проверяете каждый символ, например:

 StringBuilder sb = new StringBuilder(); for (char curr : str.toCharArray()) { sb.append((SUPPORTED_EMOJI_SET.contains(curr)) ? convertCharToImgTag(curr) : curr); } 

Где SUPPORTED_EMOJI_SET – всего лишь набор символов, например:

 new HashSet<Character>() {{ add('\ue415'); add('\ue056'); ... }} 

Вы также можете сделать это с помощью регулярного выражения, но я верю, что выше будет работать быстрее.