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


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