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