首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过代码检测Android上的表情符号支持

问如何通过代码检测Android上的表情符号支持
EN

Stack Overflow用户
提问于 2016-08-28 18:42:49
回答 4查看 6.2K关注 0票数 11

通过代码,我可以创建一个按钮,将这3个表情符号插入到文本中:⚽️

但是,在许多手机上,当用户单击按钮时,的问题是⚽️以XX的形式显示。更糟糕的是,它只显示了三个空空间。

我想禁用和隐藏我自己的内置表情键盘在Android设备上,不正确地显示表情符号。是否有人知道或有提示如何在代码中检测一个设备是否支持表情符号?

我读过Android4.1支持的表情符号,但这不是我的经验.

EN

回答 4

Stack Overflow用户

发布于 2016-09-21 20:24:00

我刚刚为这个问题自己实现了一个解决方案。Android的好处在于它是开源的,所以当你解决类似的问题时,你很有可能找到一种方法来帮助你。

在中,您可以找到一种使用Paint.hasGlyph检测给定表情符号是否存在字体的方法。但是,由于这个方法在API 23之前是不可用的,所以它们也会进行测试,并将结果与'tofu‘(您在文章中提到的x字符)的宽度进行比较。

这种方法还有其他一些缺点,但它应该足以让您开始工作。

谷歌资料来源:

票数 11
EN

Stack Overflow用户

发布于 2017-01-30 17:09:45

基于Jason的答案

例如,创建布尔canShowFlagEmoji

代码语言:javascript
复制
 private static boolean canShowFlagEmoji() {
        Paint paint = new Paint();
        String switzerland = "\uD83C\uDDE8\uD83C\uDDED"; //  Here enter Surrogates of Emoji
        try {
            return paint.hasGlyph(switzerland);
        } catch (NoSuchMethodError e) {
            // Compare display width of single-codepoint emoji to width of flag emoji to determine
            // whether flag is rendered as single glyph or two adjacent regional indicator symbols.
            float flagWidth = paint.measureText(switzerland);
            float standardWidth = paint.measureText("\uD83D\uDC27"); //  U+1F427 Penguin
            return flagWidth < standardWidth * 1.25;
            // This assumes that a valid glyph for the flag emoji must be less than 1.25 times
            // the width of the penguin.
        }
    }

然后在代码中,每当需要检查表情符号是否可用时:

代码语言:javascript
复制
if (canShowFlagEmoji()){
    // Code when FlagEmoji is available
} else {
    // And when not
}

当你点击细节的时候,你可以得到这里的代名词。

票数 10
EN

Stack Overflow用户

发布于 2017-08-18 13:01:38

另一种选择可能是包括Android "Emoji兼容性“库,该库将检测到运行在Android4.4 (API 19)上的应用程序中所需的任何Emoji字符,并将其添加到应用程序中:https://developer.android.com/topic/libraries/support-library/preview/emoji-compat.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39194616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档