著录项信息
专利名称 | 一种基于android系统的快速查找联系人的方法 |
申请号 | CN201310574534.0 | 申请日期 | 2013-11-15 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-03-05 | 公开/公告号 | CN103617204A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0;;;H;0;4;M;1;/;7;2;5查看分类表>
|
申请人 | 福建星网锐捷通讯股份有限公司 | 申请人地址 | 福建省福州市仓山区金山大道618号桔园洲星网锐捷科技园19-22栋
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 福建星网锐捷通讯股份有限公司 | 当前权利人 | 福建星网锐捷通讯股份有限公司 |
发明人 | 倪海鸥;陈嗣文;许波 |
代理机构 | 福州市鼓楼区京华专利事务所(普通合伙) | 代理人 | 宋连梅 |
摘要
一种基于android系统的快速查找联系人的方法,包括:数据准备,具体包括如下步骤:构建缓存数据结构;从数据库获取联系人和联系电话,存入缓存,作为后续处理的原始数据;把拼音和字母转换为T9数据;还包括:智能匹配;排序:根据用户对拼首、全拼和电话匹配结果的感兴趣程度,自定义优先顺序,系统对不同的内容给予一个基值;同步联系人:执行对缓存中的联系人数据表采取局部同步更新。本发明很好地改善了拨号时的快速查找联系人,匹配电话号码的效率和效果,很大幅度地提升用户的拨号体验。
1.一种基于android系统的快速查找联系人的方法,其特征在于:包括如下步骤:
第一步骤:数据准备,具体包括如下步骤:
步骤11:构建缓存数据结构;根据匹配的需要,需要匹配的数据源先从数据库读入缓存,构建特定的数据结构体,该结构体中包含拼音信息、拼首位置信息和根据T9转换后的信息;
步骤12:从数据库获取联系人和联系电话,存入缓存,作为后续处理的原始数据;应用启动时,从android联系人数据库获取数据,存储在ContactItem和ContactPhone列表中;所述数据包括联系人ID,显示名,sort_key和lookup,电话数据包括lookup和多个联系电话;
步骤13:把拼音和字母转换为T9数据:
android联系人数据库中,sort_key中包括了汉字的拼音信息,根据这个内容获取到姓名的全拼,再通过字段截取,可以获取拼音首字母、每个单词和各自所在的位置,通过解析android联系人数据库的数据,直接获取汉字的拼音,使用android联系人数据库的sort_key的形成特点,执行解析,在解析时,采用从sort_key的末端开始,在解析过程中同时获取到位置信息、实行T9转换;
第二步骤:智能匹配:
在系统启动完成后,完成以上数据的准备工作;系统在循环查找联系人数据库表的过程中,当一个联系人数据匹配结束后,存在联系人拼音、拼首、电话号码,或是因为多音字原因有了多个匹配的结果,但是在设定的排序上各有先后,因此在匹配成功后需要比较获取最优顺序,来确定最终呈现的匹配结果;
匹配某个联系人的所有T9信息和电话号码的过程是智能匹配的核心部分,这部分设计采用分治法,并默认按照拼首、全拼和电话号码的优先顺序设定各自优先顺序的基值,这种顺序基值是可以按需要设定的;
对输入是中文的、或字母的查询条件进行匹配,在接受参数后,匹配之前对输入条件进行T9转换,并存储,在匹配过程中,分别用输入条件的拼首匹配联系人数据中的拼首,用输入条件的全拼匹配联系人数据中的全拼,用汉字匹配联系人数据中显示名;
第三步骤:排序:
根据用户对拼首、全拼和电话匹配结果的感兴趣程度,自定义优先顺序,系统对不同的内容给予一个基值;
第四步骤:同步联系人:
在android系统中,联系人数据库对每个联系人维持了一个版本号,当联系人数据更新时,该联系人的版本号升级,采用监听联系人修改,通过联系人的lookup值关联,比较缓存中的版本,从而执行对缓存中的联系人数据表采取局部同步更新。
2.如权利要求1所述的一种基于android系统的快速查找联系人的方法,其特征在于:
所述步骤13中,考虑到中文中的多音字,把多音字形成一个字符串,通过比较可以快速得知是否多音字,如果是,再从多音字库中获取拼音,如果一个显示名中有多个多音字字符,将形成多个拼音信息存储在联系人表SmartItem的拼音信息中,并打上多音字的标记。
一种基于android系统的快速查找联系人的方法\n【技术领域】\n[0001] 本发明属于移动终端软件技术领域,具体是指一种基于android系统的快速查找联系人的方法。\n【背景技术】\n[0002] 在智能手机和PDA等移动设备的使用中保存了联系人列表,并通过联系人内容,包括姓名、各种电话号码等获取联系人的联系方式,这些联系方式多是中文字符、字母和数字的组合。通常与人联系时,会提前预置对方的联系方式,这种联系方式是对发起方来说是最熟悉的,因此从各种联系方式中搜寻匹配的信息,筛选到少量的联系人,再从之前的结果中继续筛选,从而找到该联系人。\n[0003] 目前的技术实现如下:一、输入中文字符,匹配系统中存储的联系人姓名;输入数字,匹配系统中的电话号码等数字内容。二、用T9数字键盘匹配中文,匹配过程使用相对部分匹配,要求匹配部分连续。三、用汉字的拼音首字母模糊匹配查找联系人。\n[0004] 上述实现方法中存在各自的局限性。方法一,输入中文字符与输入字母、数字等切换界面,过滤时需要分别匹配。方法二,匹配过程只能连续匹配,要求用户在输入时必须准确记忆已经输入的查询条件后续的字符,否则匹配落空。方法三,要求用户输入查询条件时,对拼音的首字母记忆得越多将越能匹配成功。但这些方法还不足以满足快速查找,实现智能拨号。\n[0005] 现有实现方法各自有不同的缺陷,要么要求中文、字母、数字、包括通过T9数字转换后的中文,匹配过程中要求相对部分连续,或者中文的拼音首字母连续才能够匹配,而一旦中间字母不能满足连续的要求,将导致匹配目标丢失,只能重新输入。这样的匹配方式要求用户对中文拼音绝对掌握、效率较低。要么只能从联系人中查找,如果直接拨号,还需要二次查询,获取该联系人的具体的联系方式。使用数据库API查找的方式,每接受一次用户的输入,都执行一次查询。随着联系人数量增加,匹配速度将明显减慢。在获取联系人姓名的拼音时,一般采用汉字转拼音的库来完成,在联系人数量上千条以后,转换过程不仅速度慢,而且对终端设备的性能要求很高。\n[0006] 有鉴于此,本发明人针对现有技术的缺陷深入研究,遂有本案产生。\n【发明内容】\n[0007] 本发明所要解决的技术问题在于提供一种基于android系统的快速查找联系人的方法。\n[0008] 本发明是这样实现的:\n[0009] 一种基于android系统的快速查找联系人的方法,包括如下步骤:\n[0010] 第一步骤:数据准备,具体包括如下步骤:\n[0011] 步骤11:构建缓存数据结构;根据匹配的需要,需要匹配的数据源先从数据库读入缓存,构建特定的数据结构体,该结构体中包含拼音信息、拼首位置信息和根据T9转换后的信息;\n[0012] 步骤12:从数据库获取联系人和联系电话,存入缓存,作为后续处理的原始数据;\n应用启动时,从android联系人数据库获取数据,存储在ContactItem和ContactPhone列表中;所述数据包括联系人ID,显示名,sort_key和lookup,电话数据包括lookup和多个联系电话;\n[0013] 步骤13:把拼音和字母转换为T9数据:\n[0014] android联系人数据库中,sort_key中包括了汉字的拼音信息,根据这个内容获取到姓名的全拼,再通过字段截取,可以获取拼音首字母、每个单词和各自所在的位置,通过解析android联系人数据库的数据,直接获取汉字的拼音,使用android联系人数据库的sort_key的形成特点,执行解析,在解析时,采用从sort_key的末端开始,在解析过程中同时获取到位置信息、实行T9转换;\n[0015] 第二步骤:智能匹配:\n[0016] 在系统启动完成后,完成以上数据的准备工作;系统在循环查找联系人数据库表的过程中,当一个联系人数据匹配结束后,存在联系人拼音、拼首、电话号码,或是因为多音字原因有了多个匹配的结果,但是在设定的排序上各有先后,因此在匹配成功后需要比较获取最优顺序,来确定最终呈现的匹配结果;\n[0017] 匹配某个联系人的所有T9信息和电话号码的过程是智能匹配的核心部分,这部分设计采用分治法,并默认按照拼首、全拼和电话号码的优先顺序设定各自优先顺序的基值,这种顺序基值是可以按需要设定的;\n[0018] 第三步骤:排序:\n[0019] 根据用户对拼首、全拼和电话匹配结果的感兴趣程度,自定义优先顺序,系统对不同的内容给予一个基值;\n[0020] 第四步骤:同步联系人:\n[0021] 在android系统中,联系人数据库对每个联系人维持了一个版本号,当联系人数据更新时,该联系人的版本号升级,采用监听联系人修改,通过联系人的lookup值关联,比较缓存中的版本,从而执行对缓存中的联系人数据表采取局部同步更新。\n[0022] 所述步骤13中,考虑到中文中的多音字,把多音字形成一个字符串,通过比较可以快速得知是否多音字,如果是,再从多音字库中获取拼音,如果一个显示名中有多个多音字字符,将形成多个拼音信息存储在联系人表SmartItem的拼音信息中,并打上多音字的标记。\n[0023] 所述第二步骤中,对输入是中文的、或字母的查询条件进行匹配,在接受参数后,匹配之前对输入条件进行T9转换,并存储,在匹配过程中,分别用输入条件的拼首匹配联系人数据中的拼首,用输入条件的全拼匹配联系人数据中的全拼,用汉字匹配联系人数据中显示名。\n[0024] 本发明的优点在于:根据用户输入查询条件,通过匹配被存储在存储设备上的所有联系方式的任意位置的字符,可以快速、简单地找到联系方式。在使用本方法时,系统提供T9软键盘和输入框,用户在输入框中输入查询条件,系统根据查询条件与字母、数字、姓名拼音、中文等内容中匹配,很快,包含该查询条件的匹配结果呈现在一个容器中,譬如下拉框或者表格;用户继续输入,容器快速呈现进一步的匹配结果,并且高亮显示查询条件的字符。很好地改善了拨号时的快速查找联系人,匹配电话号码的效率和效果,很大幅度地提升用户的拨号体验。\n【附图说明】\n[0025] 下面参照附图结合实施例对本发明作进一步的描述。\n[0026] 图1是本发明中把拼音和字母转换为T9数据的总体过程示意图。\n[0027] 图2是本发明中根据sort_key生成各种信息的过程图。\n[0028] 图3是本发明中智能匹配流程示意图。\n[0029] 图4是本发明中模糊匹配流程示意图。\n【具体实施方式】\n[0030] 本发明提供一种方法,用于根据用户输入查询条件,通过匹配被存储在存储设备上的所有联系方式的任意位置的字符,可以快速、简单地找到联系方式。在使用本方法时,系统提供T9软键盘和输入框,用户在输入框中输入查询条件,系统根据查询条件与字母、数字、姓名拼音、中文等内容中匹配,很快,包含该查询条件的匹配结果呈现在一个容器中,譬如下拉框或者表格;用户继续输入,容器快速呈现进一步的匹配结果,并且高亮显示查询条件的字符。\n[0031] 整个算法可以主要包括4个步骤:数据准备、快速匹配、排序、联系人同步。\n[0032] 第一步骤:数据准备。\n[0033] 数据准备是智能匹配的前提。准备工作包括以下几个部分:\n[0034] 1、构建缓存数据结构。根据匹配的需要,需要匹配的数据源先从数据库读入缓存,如联系人姓名、sort_Key、联系电话。构建特定的数据结构体,该结构体中包含丰富的拼音信息、拼首位置信息和根据T9转换后的信息。\n[0035]\n[0036] 重要的中间结构体:\n[0037]\n[0038] 2、从数据库获取联系人和联系电话,存入缓存,作为后续处理的原始数据。\n[0039] 应用启动时,从android联系人数据库获取数据,存储在ContactItem和ContactPhone列表中。联系人数据包括联系人ID,显示名,sort_key和lookup。电话数据包括lookup和多个联系电话。\n[0040] 3、把拼音和字母转换为T9数据。\n[0041] android联系人数据库中,sort_key中包括了汉字的拼音信息。根据这个内容可以轻松地获取到姓名的全拼。再通过字段截取,可以获取拼音首字母、每个单词和各自所在的位置。在实施过程中,考虑到中文中的多音字,把多音字形成一个字符串,通过比较可以快速得知是否多音字,如果是,再从多音字库中获取拼音。如果一个显示名中有多个多音字字符,将形成多个拼音信息存储在联系人表SmartItem的拼音信息中,并打上多音字的标记。\n这种处理多音字的方法不仅快速形成信息,而且在电话号码匹配过程中只会呈现一条显示名和拼音的匹配结果。总体过程如图1所示。\n[0042] 在本发明中,通过解析android联系人数据库的数据,直接获取汉字的拼音。使用android联系人数据库的sort_key的形成特点,执行解析,大大减低对设备处理能力的要求,完成速度改善许多。在解析时,采用从sort_key的末端开始,正确获取汉字与拼音的映射表是解析的关键。在解析过程中同时获取到位置信息、实行T9转换。\n[0043] 根据sort_key生成各种信息的过程如图2所示。\n[0044] 第二步骤:智能匹配。\n[0045] 在系统启动完成后,完成以上数据的准备工作。在实践中的终端拨号界面,提供T9软键盘、条件输入框、结果列表和删除键四个内容。用户通过T9键盘,在输入框中输入查询条件,系统很快提供结果显示在列表中,结果中与查询条件匹配部分高亮显示。用户进一步输入,系统将提供更加精确的结果。用户使用删除键删除,系统快速显示上一步的结果,快速响应用户的纠正操作。\n[0046] 系统在循环查找联系人数据库表的过程中,当一个联系人数据匹配结束后,存在联系人拼音、拼首、电话号码,或是因为多音字原因有了多个匹配的结果,但是在设定的排序上各有先后,因此在匹配成功后需要比较获取最优顺序,来确定最终呈现的匹配结果。如图3所示。\n[0047] 匹配某个联系人的所有T9信息和电话号码的过程是智能匹配的核心部分,是一个比较复杂的过程,主要使用分治和贪婪思想相结合,用递归算法来实现。根据用户的使用习惯,首先会回忆起联系人的姓名或姓名中的一部分,进一步可能记该联系人的电话号码或电话号码的一部分。而在输入时,用户可能输入姓名拼音的首字母,或是拼音全拼中的一部分。如果记忆不太准确,可能输入拼音中的任何位置的内容。为了达到智能匹配用户的输入内容,这部分设计采用分治法,并默认按照拼首、全拼和电话号码的优先顺序设定各自优先顺序的基值。这种顺序基值是可以按需要设定的。\n[0048] 匹配分为三部分:输入查询关键字(即一串数字字符)后,系统把关键字信息与拼首T9,全拼T9和电话号码分别匹配。任意位置的模糊匹配时把关键字的每个字符与被匹配内容的每个字符进行比较。完全匹配则认为该联系人数据是符合条件的结果。按照各项的优先顺序,依次匹配。譬如实践中默认按照拼首、全拼和电话号码的优先顺序,系统先对联系人数据的拼首T9数据进行匹配,然后全拼T9,然后电话号码。多音字因素在匹配过程中同样参与匹配运算。\n[0049] 在模糊匹配的过程如图4所示。\n[0050] 也可以对输入是中文的、或字母的查询条件进行匹配,在接受参数后,匹配之前对输入条件进行T9转换,并存储。在匹配过程中,分别用输入条件的拼首匹配联系人数据中的拼首,用输入条件的全拼匹配联系人数据中的全拼,用汉字匹配联系人数据中显示名。程序算法一样,同样达到智能匹配的效果。\n[0051] 第三步骤:排序。\n[0052] 根据用户对拼首、全拼和电话匹配结果的感兴趣程度,自定义优先顺序。系统对不同的内容给予一个基值。在实践中,默认优先级从高到低分别为:拼首匹配结果、全拼匹配结果和电话匹配结果。于是定义拼首的基值为1000000,全拼的基值为2000000,电话的基值为3000000,没有匹配时的基值为10000000。每移动一个字符或一个单词,在相应的基值上增加一个适当的间距,如100。如果是复杂的任意位置的模糊匹配时成功匹配,则增加更大的间距,如10000。最后根据匹配结果表的排序号进行排序,按从小到大的顺序排序,从而形成与用户喜好接近的排序。\n[0053] 第四步骤:同步联系人。\n[0054] 在android系统中,联系人数据库对每个联系人维持了一个版本号。当联系人数据更新时,该联系人的版本号升级。该发明的应用中监听联系人修改,通过联系人的lookup值关联,比较缓存中的版本,从而执行对缓存中的联系人数据表采取局部同步更新,而非全部重新生成。从而减低了对设备性能的要求。\n[0055] 实践表明,本发明通过以上各个部分的整体工作,很好地改善了拨号时的快速查找联系人,匹配电话号码的效率和效果,很大幅度地提升用户的拨号体验。\n[0056] 以上所述仅为本发明的较佳实施用例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
法律信息
- 2017-01-25
- 2014-04-02
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201310574534.0
申请日: 2013.11.15
- 2014-03-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-12-03
|
2008-06-20
| | |
2
| |
2012-07-04
|
2011-12-07
| | |
3
| |
2013-01-23
|
2012-10-11
| | |
4
| | 暂无 |
2003-10-24
| | |
5
| |
2013-09-11
|
2013-05-13
| | |
6
| |
2011-06-29
|
2009-12-28
| | |
7
| |
2012-10-03
|
2012-05-18
| | |
8
| |
2010-02-10
|
2009-09-04
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |