package com.fanxin.app; import java.util.Map; import android.content.Intent; import android.content.IntentFilter; import com.fanxin.applib.controller.HXSDKHelper; import com.fanxin.applib.model.HXSDKModel; import com.easemob.EMCallBack; import com.easemob.chat.EMChatManager; import com.easemob.chat.EMMessage; import com.easemob.chat.EMMessage.ChatType; import com.easemob.chat.EMMessage.Type; import com.easemob.chat.OnMessageNotifyListener; import com.easemob.chat.OnNotificationClickListener; import com.fanxin.app.domain.User; import com.fanxin.app.fx.ChatActivity; import com.fanxin.app.fx.MainActivity; import com.fanxin.app.fx.others.TopUser; import com.fanxin.app.receiver.VoiceCallReceiver; import com.fanxin.app.utils.CommonUtils; /** * Demo UI HX SDK helper class which subclass HXSDKHelper * * @author easemob * */ public class DemoHXSDKHelper extends HXSDKHelper { /** * contact list in cache */ private Map<String, User> contactList; private Map<String, TopUser> topUserList; @Override protected void initHXOptions() { super.initHXOptions(); // you can also get EMChatOptions to set related SDK options // EMChatOptions options = EMChatManager.getInstance().getChatOptions(); } @Override protected OnMessageNotifyListener getMessageNotifyListener() { // 取消注释,app在后台,有新消息来时,状态栏的消息提示换成自己写的 return new OnMessageNotifyListener() { @Override public String onNewMessageNotify(EMMessage message) { // 设置状态栏的消息提示,可以根据message的类型做相应提示 String ticker = CommonUtils.getMessageDigest(message, appContext); if (message.getType() == Type.TXT) ticker = ticker.replaceAll("\\[.{2,3}\\]", "[表情]"); String nick = message.getFrom(); User user = MYApplication.getInstance().getContactList() .get(nick); if (user != null && user.getNick() != null) { nick = user.getNick(); } return nick + ": " + ticker; } @Override public String onLatestMessageNotify(EMMessage message, int fromUsersNum, int messageNum) { return fromUsersNum + "个好友,发来了" + messageNum + "条消息"; } @Override public String onSetNotificationTitle(EMMessage message) { // 修改标题,这里使用默认 return null; } @Override public int onSetSmallIcon(EMMessage message) { // 设置小图标 return 0; } }; } @Override protected OnNotificationClickListener getNotificationClickListener() { return new OnNotificationClickListener() { @Override public Intent onNotificationClick(EMMessage message) { Intent intent = new Intent(appContext, ChatActivity.class); ChatType chatType = message.getChatType(); if (chatType == ChatType.Chat) { // 单聊信息 intent.putExtra("userId", message.getFrom()); intent.putExtra("chatType", ChatActivity.CHATTYPE_SINGLE); } else { // 群聊信息 // message.getTo()为群聊id intent.putExtra("groupId", message.getTo()); intent.putExtra("chatType", ChatActivity.CHATTYPE_GROUP); } return intent; } }; } @Override protected void onConnectionConflict() { Intent intent = new Intent(appContext, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("conflict", true); appContext.startActivity(intent); } @Override protected void onCurrentAccountRemoved() { Intent intent = new Intent(appContext, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Constant.ACCOUNT_REMOVED, true); appContext.startActivity(intent); } @Override protected void initListener() { super.initListener(); IntentFilter callFilter = new IntentFilter(EMChatManager.getInstance() .getIncomingVoiceCallBroadcastAction()); appContext.registerReceiver(new VoiceCallReceiver(), callFilter); } @Override protected HXSDKModel createModel() { return new DemoHXSDKModel(appContext); } /** * get demo HX SDK Model */ public DemoHXSDKModel getModel() { return (DemoHXSDKModel) hxModel; } /** * 获取内存中好友user list * * @return */ public Map<String, User> getContactList() { if (getHXId() != null && contactList == null) { contactList = ((DemoHXSDKModel) getModel()).getContactList(); } return contactList; } /** * 获取内存中置顶好友 t * * @return */ public Map<String, TopUser> getTopUserList() { if (getHXId() != null && topUserList == null) { topUserList = ((DemoHXSDKModel) getModel()).getTopUserList(); } return topUserList; } /** * 设置置顶好友到内存中 * * @param contactList */ public void setTopUserList(Map<String, TopUser> topUserList) { this.topUserList = topUserList; } /** * 设置好友user list到内存中 * * @param contactList */ public void setContactList(Map<String, User> contactList) { this.contactList = contactList; } @Override public void logout(final EMCallBack callback) { super.logout(new EMCallBack() { @Override public void onSuccess() { // TODO Auto-generated method stub setContactList(null); getModel().closeDB(); if (callback != null) { callback.onSuccess(); } } @Override public void onError(int code, String message) { // TODO Auto-generated method stub } @Override public void onProgress(int progress, String status) { // TODO Auto-generated method stub if (callback != null) { callback.onProgress(progress, status); } } }); } }