7月9日
今天做了一些IM功能
首先 从登陆注册重新开始敲得;
一、利用EaseUI 集成与官方得简单UI 界面 以及部分逻辑
1.首先在集成与EaseUI/Uklit
我们得登陆注册都会使用线程来调用,那我们就可以写一个线程池 去随时得回调利用。
接下来我们看线程池得代码:
public class Model {
private Context mcontext;
private static Model instance = new Model();
private ExecutorService executorService = Executors.newCachedThreadPool();
public void init(Context context){
mcontext = context;
}
public ExecutorService getExecutorService(){
return executorService;
}
public static Model getInstance(){
return instance;
}
public ExecutorService getPoll(){
return executorService;
}
}
写好我们得线程池 就可以开始我们得部分功能了:
1.登陆
2.注册
3.通讯录
4.会话列表
5.通讯录
6.单聊
7.群聊
8.添加好友
首先从登陆开始:
Model.getInstance().getPoll().execute(new Runnable() {
@Override
public void run() {
EMClient.getInstance().logout(true);
EMClient.getInstance().login(Edusername,mima,new EMCallBack() {//回调
@Override
public void onSuccess() {
Intent integer = new Intent(DengluActivity.this, MainActivity.class);
startActivity(integer);
}
@Override
public void onProgress(int progress, String status) {
}
@Override
public void onError(int code, final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("main", "登录聊天服务器失败!"+message);
}
});
}
});;
}
});
直接利用我们得线程池去new Runnable 里去实现文档中给的登陆方法 完成登陆效果;
在里面得监听我们可以得到登陆失败 登陆成功得监听方法,如果我们登陆失败得情况下可以去吐司提示一下
或者是登陆成功得情况下 我们可以直接跳转到 主页面 也就是通讯录与会话列表
2.注册:
例:
Model.getInstance().getPoll().execute(new Runnable() {
@Override
public void run() {
try {
EMClient.getInstance().createAccount(Edusername,mima);//同步方法
} catch (HyphenateException e) {
e.printStackTrace();
}
}
});
文档中注册方法只需要去调用他的EmClient.getInstance().createAccount(注册的用户名,注册的密码);
之后会跳转到的通讯录界面,因为是一些Fragment 我们可以去放在一个Viewpager或者FrameLayout
去显示其中的通讯录界面/会话列表
3.通讯录
可以直接去继承 EaseContactListFragment 来显示当前的通讯录界面
首先需要我们自己手动的去获取好友列表
new Thread(new Runnable() {
@Override
public void run() {
try {
List<String> username = EMClient.getInstance().contactManager().getAllContactsFromServer();
final Map<String,EaseUser> map = new HashMap<>();
for (String str: username) {
map.put(str,new EaseUser(str));
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
setContactsMap(map);
refresh();
}
});
} catch (HyphenateException e) {
e.printStackTrace();
}
}
}).start();
完成通讯录的界面
我们要是需要实现单聊群聊的界面 是需要点击当前的Item 去实现聊天界面
setContactListItemClickListener(new EaseContactListItemClickListener() {
@Override
public void onListItemClicked(EaseUser user) {
if (user == null){
return;
}
Intent intent = new Intent(getActivity(),liaotianActivity.class);
intent.putExtra(EaseConstant.EXTRA_USER_ID,user.getUsername());
startActivity(intent);
}
});