Android撥號盤,支援T9搜尋和號碼搜尋

來源:互聯網
上載者:User

之前做通訊錄軟體,其中在做撥號盤的時候一直為怎麼實現T9輸入煩惱,上網找了很多文章,都沒有滿意的答案。
不過最後終於是實現了,看社區內好像也有不少朋友需要,在此分享一下。
這個是在我項目中提取出來的撥號盤案例,功能上完全實現了目前其他通訊錄中撥號盤的功能,但在載入效率上還有不足,請各位大俠指教。

有圖有真相:

   

 目前我用1g單核cpu的索愛mt15i的測試機,1500多的連絡人,載入時間大概在8秒左右,當然,一般使用者不會有這麼多連絡人的。
由於我做的程式不是在一開始的介面就是撥號盤,所以我在程式已開始就在後台非同步載入連絡人,
等到撥號盤的介面,連絡人載入也差不多完成了。
不過我覺得每次在程式開始都讀取連絡人的資料,把他們整理成t9搜尋需要的資料有些慢,
最好還是自己建張表來存放,然後監聽連絡人表的變化動態更新t9資料。

如果大家有更好更快的想法,希望能分享一下!

部分代碼:

public class ToPinYin {        /**     * 將傳遞的漢字list轉換成拼音List     * @param list     */    public static List<String> getPinyinList(List<String> list){        List<String> pinyinList = new ArrayList<String>();        for(Iterator<String> i=list.iterator(); i.hasNext();) {            String str = (String)i.next();            try {                String pinyin = getPinYin(str);                pinyinList.add(pinyin);            } catch (BadHanyuPinyinOutputFormatCombination e) {                e.printStackTrace();            }        }        return pinyinList;    }        /**     * 將中文轉換成拼音     * @param 拼音-漢字     * @return     */    public static String getPinYin(String zhongwen)               throws BadHanyuPinyinOutputFormatCombination {             String zhongWenPinYin = "";           char[] chars = zhongwen.toCharArray();             for (int i = 0; i < chars.length; i++) {               String[] pinYin = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultOutputFormat());               // 當轉換不是中文字元時,返回null               if (pinYin != null) {                   zhongWenPinYin += pinYin[0];               } else {                   zhongWenPinYin += chars[i];               }           }           return zhongWenPinYin;       }         /**       * 輸出格式       *        * @return       */      private static HanyuPinyinOutputFormat getDefaultOutputFormat() {           HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();           format.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 大寫           format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 沒有音調數字           format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u顯示           return format;       }   

源碼下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.