Android初級篇筆記-通訊錄聯想功能的實現


ContactslistDictionary.java

實現3件事:

● OpenContact()

   通過調用了PinyinDecoder.java中的opencontact()函數;

● Load info from Contacts list;

   逐個獲取通訊錄的訊息,並且通過Pinyin4j類,獲得漢字對應的拼音;再調用了PinyinDecoder.java中的put_lemma()函數;

● CloseContact();

   調用了PinyinDecoder.java中的closecntact()函數;


PinyinDecoder.java

實現了3件事:

● 調用了PinyinAPI.java 中的openContact()函數;

● 調用了PinyinAPI.java 中的append_lemma()函數;

● 調用了PinyinAPI.java 中的closeContact()函數;

 

PinyinAPI.java 聲明瞭部分native函數;

● 在openContact()函數中,將得到的通訊錄詞典的絕對地址 String類型轉化爲Byte[] ;調用了Native函數,先將對應的通訊錄詞典刪除nativeRemoveExtDict(),再重新創建

nativeOpenContactslist();

●在closeContact()函數中,調用了nativeCloseContactslist();關閉通訊錄詞典,再將該詞典內容添加到詞庫中openExtDict_();

● 在append_lemma()函數中,調用nativeAppendContactslist()函數;

當傳遞的參數是 String類型的漢字,則類型不變,當是字符串,則變換成對應的byte[]數組。

 

Jni_pinyin.cpp

註冊並定義了native函數,

●nativeOpenContactslist()函數調用了Pinyinime.cpp 中的 im_open_contract_list()函數;

●nativeAppendContactslist()函數調用了im_append_contacts_list()函數;

●nativeCloseContactslist()函數調用了im_close_contacts_list()函數;

 

Pinyinime.cpp

● im_open_contract_list()函數執行了load_dict()函數;

● im_append_contacts_list()函數執行put_lemma()函數;

● delete指向該通訊錄詞典的指針;

 

ContactActivity.java

利用AsyncTask 類將導入通訊錄信息在後臺運行;

 

 

                                                                                                                fmoonstar 更新至2012.7.29


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章