`
qa22qa22
  • 浏览: 56635 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

拨号盘匹配联系人

阅读更多
很多软件如ex拨号、qq通讯录都有类似功能
一:拼音首字母匹配联系人



二:拼音匹配联系人



三:号码匹配联系人



这里简单说下注意要点和算法思路吧

匹配规则,这里有三种,分别是联系人拼音匹配,联系人拼音首字母匹配,联系人号码匹配。其中联系人拼音首字母匹配只要匹配的字符串为拼音首字母中的子字符串即可,二拼音匹配除了符合是其子字符串外还需符合子字符串首字母为,汉字中的拼音首字母。如王小明(wangxiaoming)可匹配 wangx、xiaomin、等,但不匹配angxiao、iaoming。号码匹配较简单,也只需符合子字符串即可。

算法思路:
1,首先是将所有联系人的信息加载到内存,为了显示与数据库内容一致可在onresume时候读取,若不严格要求内容一致可在,onstart时候读取,需要的数据有、联系人id,名字、号码、头像(可选)。
2,将数字键盘输入的数字组合,转化成用于匹配的字母串数组
3,循环所有联系人与字母串数组进行三种匹配,若符合将其加入到,用于显示的结果集合中
4,取三种结果集的并集(其实只需一个集合,既匹配过程中已有集合在里面便不再加入结果集)
5,ListView更新自定义Adapter,主要重点是,显示加亮名字,号码,字段。用SpannableString辅助

这里在说第二步,数字组合如何转换成字母串数组。我们知道数字键对应的英文字母是这样的:2(ABC),3(DEF),4(GHI),5(JKL),6(MNO),7(PQRS),8(TUV),9(WXYZ)
可以看到一个数字对应的字母数为3-4,我们以3为准,2个数字键对应的字母串组合3*3 = 9
以此类推可知,字母串数与数字数的关系为 3的n次方,算法复杂度上来数这是个极差的效率。只要超过十几位便是天文数字,所以必须优化。我们采用:不符去除,逐级相乘的办法。例如输入23后有匹配数据的字母串组合有{AD,BE},那么当我们输入第三个数字键时,字母串组合只有2*3个,进行匹配后,再除去不符合的字母串组合。依次下去,便可,得到较少字母串组合数。但只有这样还不够,因为还有一个特殊的键,删除键。所以我们需要有一个栈,用于保存之前符合匹配的字母串。输入数字键,时候推入栈顶,输入删除键时候推出该字母串组合。

转载请注出处
  • 大小: 117.1 KB
  • 大小: 117.4 KB
  • 大小: 117.8 KB
分享到:
评论
2 楼 shaobin0604 2013-01-04  
i远远 写道
这样效率很低吧?  可以先把拼音转为对应的数字串存入数据库, 只用数字匹配。

1楼正解,思路应该是跟搜索引擎类似。
1 楼 i远远 2012-09-04  
这样效率很低吧?  可以先把拼音转为对应的数字串存入数据库, 只用数字匹配。

相关推荐

    Android 多功能拨号盘源码.zip

    - 拨号盘可能包含搜索联系人的功能,这需要与系统的联系人API交互,如`ContactsContract`类。 - 用户输入时,后台线程可能定期查询联系人数据库,匹配输入的号码并显示结果。 5. **快捷拨号** - 快捷拨号功能...

    iphone4 拨号键盘美化。

    例如,有些插件允许将常用的联系人图标直接放在拨号键盘上,只需轻触即可快速拨号。 然而,值得注意的是,对`MobilePhone.app`等系统应用程序的修改通常需要越狱操作,这会移除苹果的官方保修,并可能导致系统不...

    Android 多功能拨号盘源码.rar

    源码中会有查询和匹配联系人电话号码的逻辑,以便用户可以一键拨打常用联系人。 5. **搜索功能**:如果拨号盘支持搜索功能,那么源码会包含对用户输入的电话号码进行模糊匹配的算法,以便快速查找和拨打电话号码。 ...

    电话拨号盘联系人快速搜索、过滤查询算法

    实现较为完整的联系人词条搜索算法。SearchCore 为C语音编写,ios、android、symbian都可以用。具体功能见下面。 内存占用: 10000个人2M左右 效率:6K人搜索,100ms左右(iphone4) 支持搜索内容: 1.姓名搜索:...

    Android多功能拨号盘源码.zip

    首先,拨号盘的基本功能包括数字输入、快速拨号、联系人搜索等。在Android中,拨号盘通常由`LinearLayout`或`GridLayout`构建,每个数字按钮都是一个`Button`或自定义View。源码中,我们可以看到这些UI元素是如何被...

    电信设备-一种基于手机拨号键盘搜索通讯录的方法.zip

    用户只需输入与联系人姓名首字母对应的数字,系统就能迅速列出匹配的联系人列表。 在标签为“资料”的提示下,我们可以理解这是一份技术文档或者研究报告,可能包含了以下内容: 1. **问题背景**:解释传统通讯录...

    漂亮的拨号界面

    当用户按下数字键时,系统会根据已输入的数字序列匹配相应的联系人或电话号码,提供即时的建议列表,减少误操作的可能性。 3. **用户友好性**:这个拨号面板应该具备易学性,新用户无需太多指导就能快速上手。这...

    iphone拨号器

    拨号器界面通常显示联系人列表和最近通话记录,方便用户快速找到常用联系人或回顾通话历史。 iPhone拨号器与iOS系统的整合体现在多个方面。通过Siri语音识别技术,用户只需说出联系人名字或电话号码,即可完成拨号...

    android 拨号

    这个描述涉及到的是一个定制化的Android拨号盘应用,其中包含了通话记录管理和信息分组的代码逻辑。让我们深入探讨一下如何实现这样一个高效、流畅的拨号功能。 首先,我们来看看拨号盘的设计与实现。Android的拨号...

    ios5拨号界面原版本

    3. **搜索联系人**:在拨号键盘上方,还有一个搜索框,用户可以输入联系人姓名或号码,系统会自动匹配并显示匹配结果,方便快速查找和拨打。 4. **智能拨号**:iOS 5的拨号键盘支持T9智能预测,根据用户输入的数字...

    安卓通讯录联系人打电话归属地相关-一个漂亮的T9拨号面板.zip

    "安卓通讯录联系人打电话归属地相关-一个漂亮的T9拨号面板.zip"是一个针对这一需求的资源包,包含了设计美观的T9拨号界面以及与之相关的代码和文档。下面我们将深入探讨T9拨号面板的工作原理,联系人管理,以及如何...

    Android开发实验---通讯录.docx

    2. **查询功能**:通过搜索栏输入关键词,显示匹配的联系人列表,方便用户查找和选择联系人进行操作。 3. **通话功能**:从通讯录选择联系人后,可以直接拨打电话,同时展示与该联系人的通话记录。 4. **短信功能*...

    安卓手机拨号器

    多数安卓拨号器支持智能搜索功能,用户只需输入联系人的首字母或部分名字,系统就能快速找到并显示匹配的联系人,提高了拨号效率。 4. **语音拨号** 高级的安卓拨号器支持语音识别功能,用户只需说出联系人名字或...

    Dialer应用,一个拨号应用

    首先,Dialer应用的基础功能包括拨号盘、联系人管理和通话记录。拨号盘设计通常简洁直观,用户可以通过数字键输入电话号码进行拨打。同时,高级的Dialer应用会提供拼音搜索和号码搜索功能,使得用户可以通过输入联系...

    AndroidDialer.zip

    - 键盘事件处理:当用户点击键盘上的数字时,系统会触发相应的事件,将输入的号码实时更新到屏幕上的拨号盘,并可能触发联系人匹配功能。 2. **来电处理** - 来电通知:当有电话呼入时,Android Dialer会显示来电...

    AndroidMetral联系人

    同时,应用可能还集成了智能拨号功能,通过预测用户输入的数字来快速匹配联系人,大大减少了拨号时间。 在联系人编辑界面,Android Metral联系人提供了一个直观且易于操作的环境。用户可以方便地添加、修改或删除...

    T9搜索联系人,打电话Demo

    用户只需输入姓名的首字母数字组合,系统就会自动匹配相应的联系人。 在这个"T9搜索联系人,打电话Demo"中,我们主要探讨以下几个关键知识点: 1. **T9算法**:T9搜索的核心在于其高效的搜索算法。该算法能够实时...

    android-T9拨号器

    2. **动态匹配**:当用户输入拼音时,实时更新匹配的联系人列表,使用模糊匹配算法,如Levenshtein距离或者Jaccard相似度,来容忍部分拼写错误。 3. **性能优化**:为了保证在低性能设备上的流畅体验,可能采用了...

Global site tag (gtag.js) - Google Analytics