Android使用区域设置获取国家表情符号标志
我已经看到,自从Android使用区域设置获取国家表情符号标志,android,unicode,textview,emoji,country,Android,Unicode,Textview,Emoji,Country,我已经看到,自从Lollipop以来,Android已经为不同的国家内置了Emoji标志。是否可以使用设备区域设置检索该国家的表情符号 我想在包含用户位置的文本视图中插入Emoji标志。我也在寻找,但我认为这还不可能 请看这里: 别提国旗 _ 或者,您可以在此处检查答案: 这可能会对您有所帮助。表情符号是一种Unicode符号。基于Unicode字符表,表情符号由26个字母Unicode字符(A-Z)组成,用于编码ISO 3166-1 alpha-2双字母国家代码() 这意味着可以拆分两个字
Lollipop
以来,Android已经为不同的国家内置了Emoji
标志。是否可以使用设备区域设置检索该国家的表情符号
我想在包含用户位置的
文本视图中插入Emoji
标志。我也在寻找,但我认为这还不可能
请看这里:
别提国旗
_
或者,您可以在此处检查答案:
这可能会对您有所帮助。表情符号是一种Unicode符号。基于Unicode字符表,表情符号由26个字母Unicode字符(A-Z)组成,用于编码ISO 3166-1 alpha-2双字母国家代码()
这意味着可以拆分两个字母的国家代码,并将每个A-Z字母转换为区域指标符号字母:
私有字符串localeToEmoji(Locale){
字符串countryCode=locale.getCountry();
int firstLetter=Character.codepoint(国家代码,0)-0x41+0x1F1E6;
int secondLetter=Character.codepoint(国家代码,1)-0x41+0x1F1E6;
返回新字符串(Character.toChars(firstLetter))+新字符串(Character.toChars(secondLetter));
}
或以Kotlin为例(假设UTF-8):
其中,0x41
表示Unicode表中大写的A
字母,0x1F1E6
是区域指示符字母A
注意:此代码示例经过简化,没有与国家/地区代码相关的必要检查,这在地区内是不可用的。当我第一次编写此答案时,不知何故忽略了我只通过React Native在安卓上工作过
无论如何,这里是我的JavaScript解决方案,它可以使用ES6支持,也可以不使用ES6支持
功能countryCodeToFlagEmoji(国家){
返回字符串的类型。fromCodePoint==“函数”
?String.fromCodePoint(…[…country].map(c=>c.charCodeAt()+0x1f185))
:[…国家]
.map(c=>“\ud83c”+字符串.fromCharCode(0xdd85+c.charCodeAt())
.加入(“”);
}
console.log(countryCodeToFlagEmoji(“au”));
console.log(countryCodeToFlagEmoji(“aubdusca”)代码>基于,我在下面使用扩展函数编写了一个Kotlin版本
我还添加了一些检查来处理未知的国家代码
/**
*这种方法是将国家代码(如“us”)更改为我很容易使用它。
从中获取Unicode
孟加拉国国旗为U+1F1E7 U+1F1E9
现在,
它将显示>(孟加拉国国旗)Bangladesh您可以非常简单地获得国家代码。
我想谈谈根据国家代码选择国旗的问题
我写了一个关于它的类,它非常简单易用
用法:
String countryWithFlag = CountryFlags.getCountryFlagByCountryCode("TR") + " " + "Türkiye";
输出:谢谢你的帮助。我可以使用设备国家代码查找表情符号标志。我可以获取所有coutnries标志吗?java.util.Locale.GetIsCountries()方法返回ISO 3166中定义的所有两个字母的国家代码的列表。您可以使用这些字符串生成表情符号。这应该是可接受的答案。这就是应该如何做到的,在iOS上也是如此。还有更多的荣誉为教育简化说明!Android 4.4和更低版本的默认字体中没有这些表情符号。如果你想让它在这些方面发挥作用,你需要在应用程序中使用你自己的字体(5.0及以上版本的官方Android字体是Noto Color表情符号:)@Dmitry我最终使用了EmojiCompat
API(来自支持库)这是我不知道的–它解决了这个确切的问题,而且它实际上是两行代码集成在kitkat上的工作?当我调试它时,我看到了问号?这在我的手机上很有效,但它是否适用于旧的API?
{...
String flag = getEmojiByUnicode(0x1F1E7)+getEmojiByUnicode(0x1F1E9)+ " Bangladesh";
}
public String getEmojiByUnicode(int unicode){
return new String(Character.toChars(unicode));
}
String countryWithFlag = CountryFlags.getCountryFlagByCountryCode("TR") + " " + "Türkiye";