一種基于android系統(tǒng)的快速查找聯(lián)系人的方法
【專利摘要】一種基于android系統(tǒng)的快速查找聯(lián)系人的方法,包括:數據準備,具體包括如下步驟:構建緩存數據結構;從數據庫獲取聯(lián)系人和聯(lián)系電話,存入緩存,作為后續(xù)處理的原始數據;把拼音和字母轉換為T9數據;還包括:智能匹配;排序:根據用戶對拼首、全拼和電話匹配結果的感興趣程度,自定義優(yōu)先順序,系統(tǒng)對不同的內容給予一個基值;同步聯(lián)系人:執(zhí)行對緩存中的聯(lián)系人數據表采取局部同步更新。本發(fā)明很好地改善了撥號時的快速查找聯(lián)系人,匹配電話號碼的效率和效果,很大幅度地提升用戶的撥號體驗。
【專利說明】—種基于android系統(tǒng)的快速查找聯(lián)系人的方法
【【技術領域】】
[0001]本發(fā)明屬于移動終端軟件【技術領域】,具體是指一種基于android系統(tǒng)的快速查找聯(lián)系人的方法。
【【背景技術】】
[0002]在智能手機和PDA等移動設備的使用中保存了聯(lián)系人列表,并通過聯(lián)系人內容,包括姓名、各種電話號碼等獲取聯(lián)系人的聯(lián)系方式,這些聯(lián)系方式多是中文字符、字母和數字的組合。通常與人聯(lián)系時,會提前預置對方的聯(lián)系方式,這種聯(lián)系方式是對發(fā)起方來說是最熟悉的,因此從各種聯(lián)系方式中搜尋匹配的信息,篩選到少量的聯(lián)系人,再從之前的結果中繼續(xù)篩選,從而找到該聯(lián)系人。
[0003]目前的技術實現如下:一、輸入中文字符,匹配系統(tǒng)中存儲的聯(lián)系人姓名;輸入數字,匹配系統(tǒng)中的電話號碼等數字內容。二、用T9數字鍵盤匹配中文,匹配過程使用相對部分匹配,要求匹配部分連續(xù)。三、用漢字的拼音首字母模糊匹配查找聯(lián)系人。[0004]上述實現方法中存在各自的局限性。方法一,輸入中文字符與輸入字母、數字等切換界面,過濾時需要分別匹配。方法二,匹配過程只能連續(xù)匹配,要求用戶在輸入時必須準確記憶已經輸入的查詢條件后續(xù)的字符,否則匹配落空。方法三,要求用戶輸入查詢條件時,對拼音的首字母記憶得越多將越能匹配成功。但這些方法還不足以滿足快速查找,實現智能撥號。
[0005]現有實現方法各自有不同的缺陷,要么要求中文、字母、數字、包括通過T9數字轉換后的中文,匹配過程中要求相對部分連續(xù),或者中文的拼音首字母連續(xù)才能夠匹配,而一旦中間字母不能滿足連續(xù)的要求,將導致匹配目標丟失,只能重新輸入。這樣的匹配方式要求用戶對中文拼音絕對掌握、效率較低。要么只能從聯(lián)系人中查找,如果直接撥號,還需要二次查詢,獲取該聯(lián)系人的具體的聯(lián)系方式。使用數據庫API查找的方式,每接受一次用戶的輸入,都執(zhí)行一次查詢。隨著聯(lián)系人數量增加,匹配速度將明顯減慢。在獲取聯(lián)系人姓名的拼音時,一般采用漢字轉拼音的庫來完成,在聯(lián)系人數量上千條以后,轉換過程不僅速度慢,而且對終端設備的性能要求很高。
[0006]有鑒于此,本發(fā)明人針對現有技術的缺陷深入研究,遂有本案產生。
【
【發(fā)明內容】
】
[0007]本發(fā)明所要解決的技術問題在于提供一種基于android系統(tǒng)的快速查找聯(lián)系人的方法。
[0008]本發(fā)明是這樣實現的:
[0009]一種基于android系統(tǒng)的快速查找聯(lián)系人的方法,包括如下步驟:
[0010]第一步驟:數據準備,具體包括如下步驟:
[0011]步驟11:構建緩存數據結構;根據匹配的需要,需要匹配的數據源先從數據庫讀入緩存,構建特定的數據結構體,該結構體中包含拼音信息、拼首位置信息和根據T9轉換后的信息;
[0012]步驟12:從數據庫獲取聯(lián)系人和聯(lián)系電話,存入緩存,作為后續(xù)處理的原始數據;應用啟動時,從android聯(lián)系人數據庫獲取數據,存儲在ContactItem和ContactPhone列表中;所述數據包括聯(lián)系人ID,顯示名,sort_key和lookup,電話數據包括lookup和多個聯(lián)系電話;
[0013]步驟13:把拼音和字母轉換為T9數據:
[0014]android聯(lián)系人數據庫中,sort_key中包括了漢字的拼音信息,根據這個內容獲取到姓名的全拼,再通過字段截取,可以獲取拼音首字母、每個單詞和各自所在的位置,通過解析android聯(lián)系人數據庫的數據,直接獲取漢字的拼音,使用android聯(lián)系人數據庫的sort_key的形成特點,執(zhí)行解析,在解析時,采用從sort_key的末端開始,在解析過程中同時獲取到位置信息、實行T9轉換;
[0015]第二步驟:智能匹配:
[0016]在系統(tǒng)啟動完成后,完成以上數據的準備工作;系統(tǒng)在循環(huán)查找聯(lián)系人數據庫表的過程中,當一個聯(lián)系人數據匹配結束后,存在聯(lián)系人拼音、拼首、電話號碼,或是因為多音字原因有了多個匹配的結果,但是在設定的排序上各有先后,因此在匹配成功后需要比較獲取最優(yōu)順序,來確定最終呈現的匹配結果;
[0017]匹配某個聯(lián)系人的所有T9信息和電話號碼的過程是智能匹配的核心部分,這部分設計采用分治法,并默認按照拼首、全拼和電話號碼的優(yōu)先順序設定各自優(yōu)先順序的基值,這種順序基值是可以按需要設定的;
[0018]第三步驟:排序:
[0019]根據用戶對拼首、全拼和電話匹配結果的感興趣程度,自定義優(yōu)先順序,系統(tǒng)對不同的內容給予一個基值;
[0020]第四步驟:同步聯(lián)系人:
[0021]在android系統(tǒng)中,聯(lián)系人數據庫對每個聯(lián)系人維持了一個版本號,當聯(lián)系人數據更新時,該聯(lián)系人的版本號升級,采用監(jiān)聽聯(lián)系人修改,通過聯(lián)系人的lookup值關聯(lián),比較緩存中的版本,從而執(zhí)行對緩存中的聯(lián)系人數據表采取局部同步更新。
[0022]所述步驟13中,考慮到中文中的多音字,把多音字形成一個字符串,通過比較可以快速得知是否多音字,如果是,再從多音字庫中獲取拼音,如果一個顯示名中有多個多音字字符,將形成多個拼音信息存儲在聯(lián)系人表SmartItem的拼音信息中,并打上多音字的
T 己 O
[0023]所述第二步驟中,對輸入是中文的、或字母的查詢條件進行匹配,在接受參數后,匹配之前對輸入條件進行T9轉換,并存儲,在匹配過程中,分別用輸入條件的拼首匹配聯(lián)系人數據中的拼首,用輸入條件的全拼匹配聯(lián)系人數據中的全拼,用漢字匹配聯(lián)系人數據中顯示名。
[0024]本發(fā)明的優(yōu)點在于:根據用戶輸入查詢條件,通過匹配被存儲在存儲設備上的所有聯(lián)系方式的任意位置的字符,可以快速、簡單地找到聯(lián)系方式。在使用本方法時,系統(tǒng)提供T9軟鍵盤和輸入框,用戶在輸入框中輸入查詢條件,系統(tǒng)根據查詢條件與字母、數字、姓名拼音、中文等內容中匹配,很快,包含該查詢條件的匹配結果呈現在一個容器中,譬如下拉框或者表格;用戶繼續(xù)輸入,容器快速呈現進一步的匹配結果,并且高亮顯示查詢條件的字符。很好地改善了撥號時的快速查找聯(lián)系人,匹配電話號碼的效率和效果,很大幅度地提升用戶的撥號體驗。
【【專利附圖】
【附圖說明】】
[0025]下面參照附圖結合實施例對本發(fā)明作進一步的描述。
[0026]圖1是本發(fā)明中把拼音和字母轉換為T9數據的總體過程示意圖。
[0027]圖2是本發(fā)明中根據sort_key生成各種信息的過程圖。
[0028]圖3是本發(fā)明中智能匹配流程示意圖。
[0029]圖4是本發(fā)明中模糊匹配流程示意圖。
【【具體實施方式】】
[0030]本發(fā)明提供一種方法,用于根據用戶輸入查詢條件,通過匹配被存儲在存儲設備上的所有聯(lián)系方式的任意位置的字符,可以快速、簡單地找到聯(lián)系方式。在使用本方法時,系統(tǒng)提供T9軟鍵盤和輸入框,用戶在輸入框中輸入查詢條件,系統(tǒng)根據查詢條件與字母、數字、姓名拼音、中文等內容中匹配,很快,包含該查詢條件的匹配結果呈現在一個容器中,譬如下拉框或者表格;用戶繼續(xù)輸入,容器快速呈現進一步的匹配結果,并且高亮顯示查詢條件的字符。
[0031]整個算法可以主要包括4個步驟:數據準備、快速匹配、排序、聯(lián)系人同步。
[0032]第一步驟:數據準備。
[0033]數據準備是智能匹 配的前提。準備工作包括以下幾個部分:
[0034]1、構建緩存數據結構。根據匹配的需要,需要匹配的數據源先從數據庫讀入緩存,如聯(lián)系人姓名、sort_Key、聯(lián)系電話。構建特定的數據結構體,該結構體中包含豐富的拼音信息、拼首位置信息和根據T9轉換后的信息。
[0035]
【權利要求】
1.一種基于android系統(tǒng)的快速查找聯(lián)系人的方法,其特征在于:包括如下步驟: 第一步驟:數據準備,具體包括如下步驟: 步驟11:構建緩存數據結構;根據匹配的需要,需要匹配的數據源先從數據庫讀入緩存,構建特定的數據結構體,該結構體中包含拼音信息、拼首位置信息和根據T9轉換后的信息; 步驟12:從數據庫獲取聯(lián)系人和聯(lián)系電話,存入緩存,作為后續(xù)處理的原始數據;應用啟動時,從android聯(lián)系人數據庫獲取數據,存儲在ContactItem和ContactPhone列表中;所述數據包括聯(lián)系人ID,顯示名,sort_key和lookup,電話數據包括lookup和多個聯(lián)系電話; 步驟13:把拼音和字母轉換為T9數據: android聯(lián)系人數據庫中,sort_key中包括了漢字的拼音信息,根據這個內容獲取到姓名的全拼,再通過字段截取,可以獲取拼音首字母、每個單詞和各自所在的位置,通過解析android聯(lián)系人數據庫的數據,直接獲取漢字的拼音,使用android聯(lián)系人數據庫的sort_key的形成特點,執(zhí)行解析,在解析時,采用從sort_key的末端開始,在解析過程中同時獲取到位置信息、實行T9轉換; 第二步驟:智能匹配: 在系統(tǒng)啟動完成后,完成以上數據的準備工作;系統(tǒng)在循環(huán)查找聯(lián)系人數據庫表的過程中,當一個聯(lián)系人數據匹配結束后,存在聯(lián)系人拼音、拼首、電話號碼,或是因為多音字原因有了多個匹配的結果,但是在設定的排序上各有先后,因此在匹配成功后需要比較獲取最優(yōu)順序,來確定最終呈現的匹配結果; 匹配某個聯(lián)系人的所有T9信息和電話號碼的過程是智能匹配的核心部分,這部分設計采用分治法,并默認按照拼首、全拼和電話號碼的優(yōu)先順序設定各自優(yōu)先順序的基值,這種順序基值是可以按需要設定的; 第三步驟:排序: 根據用戶對拼首、全拼和電話匹配結果的感興趣程度,自定義優(yōu)先順序,系統(tǒng)對不同的內容給予一個基值; 第四步驟:同步聯(lián)系人: 在android系統(tǒng)中,聯(lián)系人數據庫對每個聯(lián)系人維持了一個版本號,當聯(lián)系人數據更新時,該聯(lián)系人的版本號升級,采用監(jiān)聽聯(lián)系人修改,通過聯(lián)系人的lookup值關聯(lián),比較緩存中的版本,從而執(zhí)行對緩存中的聯(lián)系人數據表采取局部同步更新。
2.如權利要求1所述的一種基于android系統(tǒng)的快速查找聯(lián)系人的方法,其特征在于: 所述步驟13中,考慮到中文中的多音字,把多音字形成一個字符串,通過比較可以快速得知是否多音字,如果是,再從多音字庫中獲取拼音,如果一個顯示名中有多個多音字字符,將形成多個拼音信息存儲在聯(lián)系人表SmartItem的拼音信息中,并打上多音字的標記。
3.如權利要求1所述的一種基于android系統(tǒng)的快速查找聯(lián)系人的方法,其特征在于: 所述第二步驟中,對輸入是中文的、或字母的查詢條件進行匹配,在接受參數后,匹配之前對輸入條件進行T9轉換,并存儲,在匹配過程中,分別用輸入條件的拼首匹配聯(lián)系人數據中的拼首,用輸入條件的全拼匹配聯(lián)系人數據中的全拼,用漢字匹配聯(lián)系人數據中顯示 名。
【文檔編號】H04M1/725GK103617204SQ201310574534
【公開日】2014年3月5日 申請日期:2013年11月15日 優(yōu)先權日:2013年11月15日
【發(fā)明者】倪海鷗, 陳嗣文, 許波 申請人:福建星網銳捷通訊股份有限公司