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