拨号键盘匹配联系人问题

拨号键盘匹配联系人问题

一、问题现象

   拨号键盘不能通过快速检索通讯录中联系人名字的汉字首字母(简拼)实现通讯录匹配。

二、现象分析

   手机存有1505个联系人,SIM卡存有115个联系人,SIM卡存有“紫天”的联系人,拨号键盘输入“98”,通过号码“98”来搜索“紫天”这个号码,没有搜索出来。由于“紫天”是比较靠后的联系人,超过的搜索的范围2500(这当中包括手机、住宅等联系方式)个,故没有搜索出来是正常的。

三、验证过程

由于每个联系人有2个电话号码,号码总数是3000多。增大搜索号码数量后(大约3200条),就可以成功搜索到“紫天”的联系人,但是速度稍慢了些。当联系人数量足够大的时候,搜索不到靠后联系人的问题依然存在。

四、解决措施

限制搜索数量是为了提高拨号反应速度。代码里面限制搜索总共的号码数量为2500,当电话号码超过2500的时候,也只会搜索2500个号码,当把限制数量增大后,可以搜索到更多的电话号码,同时可以搜索到名字叫‘紫天’的联系人。在速度和搜索结果都需要的情况下,建议采取一个中间的状态,保证搜索速度和搜索结果都可以接受,所以还是限制搜索的数量在2500条就可以了,2500个号码可以满足绝大部分需求。

具体代码:ContactsApplication.java

-   if (contactCursor.getPosition() > 2500)break;

+   if (contactCursor.getPosition() > 3200)break;

  String number =PhoneNumberUtils.stripSeparators(contactCursor.getString(2));

     String name = contactCursor.getString(3);

      long id = contactCursor.getLong(0);

你可能感兴趣的:(拨号键盘匹配联系人问题)