Android 联系人名字多音字的处理方法
来源:互联网 发布:无人机山区救灾优化 编辑:程序博客网 时间:2024/04/19 14:03
前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof
正文
Android在处理多音字的时候使用的是HanziToPinyin.java这个类,该转换类实现了读入汉字的unicode码转换及对应Pinyin的sortKey生成。
当输入的是中文的时候就会进入这个转换类进行soryKey的生成。我们发现【沈】在其分析时候被认作了【chen】进行处理,查看字典发现【沈】是个多音字,也有【chen】的读音,只是我们不常用到【chen】这个读音,但是android在对应unicode码时加入了这个多音字的映射,且如果有两个读音,会自动匹配到首字母在前面的读音。
如:【调】à【diao】而不是【tiao】
【单】à【dan】而不是【shan】
而2.3的处理中【沈】à【shen】, 【单】à【dan】,HanziToPinyin.java与4.0却是一致的,由此可见,4.0对于汉字的处理相对于2.3并没有发生变化,而是4.0将不常用的多音字也加入了进来,字库比2.3更全。
这个问题对于google来说应该不算是问题,对于多音字的支持是google在字库上面的更全面的增加,它不会关心多音字是否常用。
解决办法:
若需要修改这个对应关系,我们提供一个解决方法去修改名子的sortKey。
方法如下:
在HanziToPinyin.java其中添加了一个specialCharacters变量,是个unicode码对应的map.
然后在下面的gettoken方法里面来判断输入的字符是否是自己定义的多音字字符。如果是,那么将多音字强行指向指定的读音下面。
如:沈--〉审
贾--〉甲
俞--〉于
目前有三个不常见的多音字的被加入到了Map中,后续如再发现不常用的多音字,按照如上方式加入到map中即可。
代码片段如下:
public static Map<String,Character> specialHanzi = new HashMap<String,Character>(); static { // A // B // C // D // E // F // G // H // I // J specialHanzi.put("8d3e", '\u7532');//贾->甲 // K // L // M // N // O // P // Q // R // S specialHanzi.put("6c88", '\u5ba1');//沈->审 // T // U // V // W // X // Y specialHanzi.put("4fde", '\u4e8e');//俞->于 // Z }首先定义这个map, private Token getToken(char character) { if (specialHanzi.get(Integer.toHexString(character)) != null) { character = specialHanzi.get(Integer.toHexString(character)); }在private Token getToken(char character) 方法的起始部分加入这句判断语句。
- Android 联系人名字多音字的处理方法
- android 电话本 多音字处理
- 联系人姓名的多音字的匹配
- Android 过滤名字为空的联系人
- android T9 搜索联系人分析与实现(支持多音字)
- android Qwerty 键盘搜索联系人分析与实现(支持多音字)
- Android中获取联系人的名字和号码
- asp 汉字转拼音-多音字的处理
- android 系统语言为英语时,Contacts联系人名字含有特殊前缀后缀(Dr. Mr. Lt等)时的相关问题处理
- android 拼音搜索联系人分析与实现(支持多音字,支持T9搜索,支持Qwerty搜索)
- android中ContactsContract获取联系人的方法
- android写联系人信息的方法
- Android获取手机联系人信息的方法
- android监听联系人变化的方法
- 汉字转拼音,主要是多音字的处理
- 《android获得进程名字的方法》
- android中读取通讯录中的联系人名字和电话方法(注意版本2.0之前,之后有差别)
- PHP多音字拼音处理方案
- 【性能优化】之 BITMAP 及分区表 的演示
- JS编码,解码. asp.net(C#)对应解码,编码
- 【第一弹】探索矩阵转换、透视投影、OpenGL矩阵存储及操作特性、法线的应用以及GLFrame的使用
- Android Fragment 兼容手机和平板
- 最优的浮动清除方案之一推荐
- Android 联系人名字多音字的处理方法
- 聊聊undefined 和 undeclared
- IOS app启动画面和图标设置(Iphone5 and IOS7 and Xcode5)
- (JAVA)泛型
- ios 的udp 通信
- opencl学习(五)
- Ubuntu12.04安装build环境问题解决
- Top 15 Java Multithreading, Concurrency Interview Questions Answers asked in Investment banks
- 浅谈oracle中row_number() over()分析函数用法