Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android文本视图中显示表情/情感图标_Java_Android_Unicode_Textview_Emoji - Fatal编程技术网

Java 在Android文本视图中显示表情/情感图标

Java 在Android文本视图中显示表情/情感图标,java,android,unicode,textview,emoji,Java,Android,Unicode,Textview,Emoji,我在Android TextView中显示表情图标时遇到一些问题 首先,我在这里找到了unicode中的表情符号列表: 其次,我在这里找到了如何显示表情符号图标: java可以自动将预定义字符转换为表情图标。因此,我想将字符串中出现的所有表情图标替换为预定义的字符,并将结果放入EmojiTextView.java 问题是我的代码无法识别包含表情符号图标的字符串中的表情符号图标 这是我的代码片段-我正在尝试查找输入是否与表情符号图标的任何unicode匹配: // Array list of

我在Android TextView中显示表情图标时遇到一些问题

首先,我在这里找到了unicode中的表情符号列表:

其次,我在这里找到了如何显示表情符号图标:

java可以自动将预定义字符转换为表情图标。因此,我想将字符串中出现的所有表情图标替换为预定义的字符,并将结果放入EmojiTextView.java 问题是我的代码无法识别包含表情符号图标的字符串中的表情符号图标

这是我的代码片段-我正在尝试查找输入是否与表情符号图标的任何unicode匹配:

// 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"
//所有表情符号图标的数组列表
私有静态最终字符串[]ArrayUnicode销毁={
“\uE415”,
“\uE056”,
“\uE057”,
...
}
//当它从iphone收到带有unicode“\uE415”的表情符号时,没有匹配项“输入”是从XMPP服务器接收到的消息
for(int i=0;i

我不擅长unicode比较/约定。谁能帮帮我,谢谢

您还可以尝试使用正则表达式“[\ue415\ue056\ue057]”来查找表情符号,而不是比较字节 如果将字符串转换为字符数组并检查每个字符,则效果良好,例如:

StringBuilder sb = new StringBuilder();
for (char curr : str.toCharArray()) {
    sb.append((SUPPORTED_EMOJI_SET.contains(curr)) ? convertCharToImgTag(curr) : curr);
}
其中,受支持的表情集只是一组字符,例如:

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

您也可以使用正则表达式执行此操作,但我相信上面的操作会运行得更快。

为什么要在应用程序中嵌入受保护的Apple表情符号图像

Unicode标准包括722个表情符号,只需在
EditText
字段或
TextView
中输入Unicode字符,Android默认字体即可显示这些表情符号

此外,您还可以使用以下库(在文件夹“Java”中)将流行的表情符号(如
:-)
自动转换为相应的Unicode表情符号:


在这里,请执行以下解决方案:

问题:在文本视图中,显示字符串\ue415\ue056\ue057,而不是表情符号

根本原因:在java或android中,通过编程方式获得表情符号的字符串表示形式为\\ue415\\ue056\\ue057。但当您尝试在console或LogCat中打印相同的字符串时,转义字符将被删除,您将得到字符串\ue415\ue056\ue057,因为无法检测到此问题的根本原因

解决方案:要解决此问题,我们需要处理转义字符。我创建了以下解决此问题的方法

public static String getEmojiFromString(String emojiString) {

    if (!emojiString.contains("\\u")) {

        return emojiString;
    }
    String emojiEncodedString = "";

    int position = emojiString.indexOf("\\u");

    while (position != -1) {

        if (position != 0) {
            emojiEncodedString += emojiString.substring(0, position);
        }

        String token = emojiString.substring(position + 2, position + 6);
        emojiString = emojiString.substring(position + 6);
        emojiEncodedString += (char) Integer.parseInt(token, 16);
        position = emojiString.indexOf("\\u");
    }
    emojiEncodedString += emojiString;

    return emojiEncodedString;
}    

如果您计划在应用程序中嵌入iPhone表情符号图形,请注意这违反了版权。如果你侥幸逃脱(Android市场上充斥着侵犯版权的应用),我不会感到惊讶,但你应该意识到这一点。谢谢你的建议。无论如何,您知道如何比较输入字符串和字符串[]ArrayEUnicodeString吗?@mobileappBeginner u能够在android中显示\ue415?不,android无法显示\ue415Hi。我也想将表情符号从安卓系统传输到安卓系统,也传输到iPhone。您是否成功使用xmpp传输表情符号。如何实现发送和接收。我的意思是,你是如何检测文本之间有表情符号的文本的?我正在为android使用smack api。我需要在android中实现:)或unicode吗?请让我了解移动应用程序的实施情况Beginner@esilver你能指导我如何在我的android应用程序中使用表情符号而不侵犯任何版权吗?Unicode字符集是一个标准,所有公司都会按照他们想要的方式绘制每个Unicode字符。相同的笑脸在所有设备上看起来都不一样,但在除苹果以外的所有设备上都不一样。Android Studio和Emoji的问题是,我必须执行许多行代码才能包含“简单而伟大的答案”。