Here are the examples of the java api com.yuantian.com.easeuitransplant.EaseUI taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
16
Source : HuanXinHelper.java
with GNU General Public License v3.0
from tianyuan168326
with GNU General Public License v3.0
from tianyuan168326
public clreplaced HuanXinHelper {
/**
* 数据同步listener
*/
static public interface DataSyncListener {
/**
* 同步完毕
* @param success true:成功同步到数据,false失败
*/
public void onSyncComplete(boolean success);
}
protected static final String TAG = "DemoHelper";
private EaseUI easeUI;
/**
* EMEventListener
*/
protected EMMessageListener messageListener = null;
private UserProfileManager userProManager;
private static HuanXinHelper instance = null;
private DemoModel demoModel = null;
private boolean alreadyNotified = false;
private String username;
private Context appContext;
private EMConnectionListener connectionListener;
private HuanXinHelper() {
}
public synchronized static HuanXinHelper getInstance() {
if (instance == null) {
instance = new HuanXinHelper();
}
return instance;
}
/**
* init helper
*
* @param context
* application context
*/
public void init(Context context) {
demoModel = new DemoModel(context);
EMOptions options = initChatOptions();
// options传null则使用默认的
if (EaseUI.getInstance().init(context, options)) {
appContext = context;
// 设为调试模式,打成正式包时,最好设为false,以免消耗额外的资源
EMClient.getInstance().setDebugMode(false);
// get easeui instance
easeUI = EaseUI.getInstance();
// 调用easeui的api设置providers
setEaseUIProviders();
// 初始化PreferenceManager
PreferenceManager.init(context);
// 初始化用户管理类
getUserProfileManager().init(context);
// 设置全局监听
setGlobalListeners();
initDbDao();
}
}
private EMOptions initChatOptions() {
Log.d(TAG, "init HuanXin Options");
// 获取到EMChatOptions对象
EMOptions options = new EMOptions();
// 默认添加好友时,是不需要验证的,改成需要验证
options.setAcceptInvitationAlways(false);
// 设置是否需要已读回执
options.setRequireAck(true);
// 设置是否需要已送达回执
options.setRequireDeliveryAck(false);
// 设置从db初始化加载时, 每个conversation需要加载msg的个数
// options.setNumberOfMessagesLoaded(1);
// 使用gcm和mipush时,把里面的参数替换成自己app申请的
// 设置google推送,需要的GCM的app可以设置此参数
options.setGCMNumber("324169311137");
// 在小米手机上当app被kill时使用小米推送进行消息提示,同GCM一样不是必须的
options.setMipushConfig("2882303761517426801", "5381742660801");
options.allowChatroomOwnerLeave(getModel().isChatroomOwnerLeaveAllowed());
options.setDeleteMessagesAsExitGroup(getModel().isDeleteMessagesAsExitGroup());
options.setAutoAcceptGroupInvitation(getModel().isAutoAcceptGroupInvitation());
return options;
// notifier.setNotificationInfoProvider(getNotificationListener());
}
protected void setEaseUIProviders() {
// 需要easeui库显示用户头像和昵称设置此provider
easeUI.setUserProfileProvider(new EaseUI.EaseUserProfileProvider() {
@Override
public EaseUser getUser(String username) {
return getUserInfo(username);
}
});
// 不设置,则使用easeui默认的
easeUI.setSettingsProvider(new EaseUI.EaseSettingsProvider() {
@Override
public boolean isSpeakerOpened() {
return demoModel.getSettingMsgSpeaker();
}
@Override
public boolean isMsgVibrateAllowed(EMMessage message) {
return demoModel.getSettingMsgVibrate();
}
@Override
public boolean isMsgSoundAllowed(EMMessage message) {
return demoModel.getSettingMsgSound();
}
@Override
public boolean isMsgNotifyAllowed(EMMessage message) {
if (message == null) {
return demoModel.getSettingMsgNotification();
}
if (!demoModel.getSettingMsgNotification()) {
return false;
} else {
return true;
}
}
});
// 设置表情provider
easeUI.setEmojiconInfoProvider(new EaseUI.EaseEmojiconInfoProvider() {
@Override
public EaseEmojicon getEmojiconInfo(String emojiconIdenreplacedyCode) {
return null;
}
@Override
public Map<String, Object> getTextEmojiconMapping() {
// 返回文字表情emoji文本和图片(resource id或者本地路径)的映射map
return null;
}
});
// 不设置,则使用easeui默认的
easeUI.getNotifier().setNotificationInfoProvider(new EaseNotifier.EaseNotificationInfoProvider() {
@Override
public String getreplacedle(EMMessage message) {
// 修改标题,这里使用默认
return null;
}
@Override
public int getSmallIcon(EMMessage message) {
// 设置小图标,这里为默认
return 0;
}
@Override
public String getDisplayedText(EMMessage message) {
// 设置状态栏的消息提示,可以根据message的类型做相应提示
String ticker = EaseCommonUtils.getMessageDigest(message, appContext);
if (message.getType() == Type.TXT) {
ticker = ticker.replaceAll("\\[.{2,3}\\]", "[表情]");
}
EaseUser user = getUserInfo(message.getFrom());
if (user != null) {
return getUserInfo(message.getFrom()).getNick() + ": " + ticker;
} else {
return message.getFrom() + ": " + ticker;
}
}
@Override
public String getLatestText(EMMessage message, int fromUsersNum, int messageNum) {
return null;
// return fromUsersNum + "个基友,发来了" + messageNum + "条消息";
}
@Override
public Intent getLaunchIntent(EMMessage message) {
if (message.getBody() instanceof EMCmdMessageBody) {
Intent intent = new Intent().setClreplaced(MyApp.getInstance().getApplicationContext(), NotifyActivity.clreplaced);
return intent;
}
// 设置点击通知栏跳转事件
Intent intent = new Intent(appContext, ChatActivity.clreplaced);
// 有电话时优先跳转到通话页面
{
ChatType chatType = message.getChatType();
if (chatType == ChatType.Chat) {
// 单聊信息
intent.putExtra("userId", message.getFrom());
intent.putExtra("chatType", Constant.CHATTYPE_SINGLE);
} else {
// 群聊信息
// message.getTo()为群聊id
intent.putExtra("userId", message.getTo());
if (chatType == ChatType.GroupChat) {
intent.putExtra("chatType", Constant.CHATTYPE_GROUP);
} else {
intent.putExtra("chatType", Constant.CHATTYPE_CHATROOM);
}
}
}
return intent;
}
});
}
/**
* 设置全局事件监听
*/
protected void setGlobalListeners() {
// create the global connection listener
connectionListener = new EMConnectionListener() {
@Override
public void onDisconnected(int error) {
if (error == EMError.USER_REMOVED) {
onCurrentAccountRemoved();
} else if (error == EMError.USER_LOGIN_ANOTHER_DEVICE) {
onConnectionConflict();
}
}
@Override
public void onConnected() {
// in case group and contact were already synced, we supposed to notify sdk we are ready to receive the events
if (true) {
new Thread() {
@Override
public void run() {
HuanXinHelper.getInstance().notifyForRecevingEvents();
}
}.start();
} else {
}
}
};
// 注册连接监听
EMClient.getInstance().addConnectionListener(connectionListener);
// 注册消息事件监听
registerEventListener();
}
private void initDbDao() {
}
/**
* 账号在别的设备登录
*/
protected void onConnectionConflict() {
Intent intent = new Intent(appContext, MainActivity.clreplaced);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Constant.ACCOUNT_CONFLICT, true);
appContext.startActivity(intent);
}
/**
* 账号被移除
*/
protected void onCurrentAccountRemoved() {
Intent intent = new Intent(appContext, MainActivity.clreplaced);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Constant.ACCOUNT_REMOVED, true);
appContext.startActivity(intent);
}
private EaseUser getUserInfo(String username) {
// 获取user信息,demo是从内存的好友列表里获取,
// 实际开发中,可能还需要从服务器获取用户信息,
// 从服务器获取的数据,最好缓存起来,避免频繁的网络请求
EaseUser user = HuanXinUserManager.get(username);
if (user == null) {
user = new EaseUser(username);
HuanXinUserManager.put(username, user);
}
if (TextUtils.isEmpty(user.getNick())) {
user.setNick("不知名的小同学");
}
return user;
}
/**
* 全局事件监听
* 因为可能会有UI页面先处理到这个消息,所以一般如果UI页面已经处理,这里就不需要再次处理
* activityList.size() <= 0 意味着所有页面都已经在后台运行,或者已经离开Activity Stack
*/
protected void registerEventListener() {
messageListener = new EMMessageListener() {
private BroadcastReceiver broadCastReceiver = null;
@Override
public void onMessageReceived(List<EMMessage> messages) {
for (EMMessage message : messages) {
EMLog.d(TAG, "onMessageReceived id : " + message.getMsgId());
// 应用在后台,不需要刷新UI,通知栏提示新消息
if (!easeUI.hasForegroundActivies()) {
getNotifier().onNewMsg(message);
}
}
}
@Override
public void onCmdMessageReceived(List<EMMessage> messages) {
for (EMMessage message : messages) {
try {
String message_replacedle = message.getStringAttribute("message_replacedle");
String message_abstract = message.getStringAttribute("message_abstract");
String logo = message.getStringAttribute("logo");
String message_detail = message.getStringAttribute("message_detail");
NotificationBean notificationBean = new Gson().fromJson(message_detail, new TypeToken<NotificationBean>() {
}.getType());
NotificationDataModel notificationDataModel = new NotificationDataModel();
notificationDataModel.hasRead = false;
notificationDataModel.dataTime = notificationBean.notification_data;
notificationDataModel.questionAbstract = notificationBean.question_abstract;
notificationDataModel.answerAbstract = notificationBean.key_abstract;
notificationDataModel.otherSideUserRealName = notificationBean.other_side_user_real_name;
notificationDataModel.answerId = notificationBean.answer_id;
notificationDataModel.questionId = notificationBean.question_id;
notificationDataModel.otherSideUserId = notificationBean.other_side_user_id;
notificationDataModel.notificationHistoryType = Integer.valueOf(notificationBean.notify_history_type);
notificationDataModel.commentId = notificationBean.comment_id;
notificationDataModel.commentAbstract = notificationBean.comment_abstract;
MyApp.getInstance().getNotificationDataModelList().add(0, notificationDataModel);
} catch (Exception e) {
e.printStackTrace();
}
NotificationDataModel.broadAddNotification();
// 应用在后台,不需要刷新UI,通知栏提示新消息
if (!easeUI.hasForegroundActivies()) {
getNotifier().onNewCmd(message);
}
}
}
@Override
public void onMessageReadAckReceived(List<EMMessage> messages) {
}
@Override
public void onMessageDeliveryAckReceived(List<EMMessage> message) {
}
@Override
public void onMessageChanged(EMMessage message, Object change) {
}
};
EMClient.getInstance().chatManager().addMessageListener(messageListener);
}
/**
* 是否登录成功过
*
* @return
*/
public boolean isLoggedIn() {
return EMClient.getInstance().isLoggedInBefore();
}
/**
* 退出登录
*
* @param unbindDeviceToken
* 是否解绑设备token(使用GCM才有)
* @param callback
* callback
*/
public void logout(boolean unbindDeviceToken, final EMCallBack callback) {
Log.d(TAG, "logout: " + unbindDeviceToken);
EMClient.getInstance().logout(unbindDeviceToken, new EMCallBack() {
@Override
public void onSuccess() {
Log.d(TAG, "logout: onSuccess");
reset();
if (callback != null) {
callback.onSuccess();
}
}
@Override
public void onProgress(int progress, String status) {
if (callback != null) {
callback.onProgress(progress, status);
}
}
@Override
public void onError(int code, String error) {
Log.d(TAG, "logout: onSuccess");
reset();
if (callback != null) {
callback.onError(code, error);
}
}
});
}
/**
* 获取消息通知类
* @return
*/
public EaseNotifier getNotifier() {
return easeUI.getNotifier();
}
public DemoModel getModel() {
return (DemoModel) demoModel;
}
/**
* 设置当前用户的环信id
* @param username
*/
public void setCurrentUserName(String username) {
this.username = username;
demoModel.setCurrentUserName(username);
}
/**
* 获取当前用户的环信id
*/
public String getCurrentUsernName() {
if (username == null) {
username = demoModel.getCurrentUsernName();
}
return username;
}
public UserProfileManager getUserProfileManager() {
if (userProManager == null) {
userProManager = new UserProfileManager();
}
return userProManager;
}
public synchronized void notifyForRecevingEvents() {
if (alreadyNotified) {
return;
}
// 通知sdk,UI 已经初始化完毕,注册了相应的receiver和listener, 可以接受broadcast了
alreadyNotified = true;
}
synchronized void reset() {
demoModel.setGroupsSynced(false);
demoModel.setContactSynced(false);
demoModel.setBlacklistSynced(false);
alreadyNotified = false;
getUserProfileManager().reset();
DemoDBManager.getInstance().closeDB();
}
public void pushActivity(Activity activity) {
easeUI.pushActivity(activity);
}
public void popActivity(Activity activity) {
easeUI.popActivity(activity);
}
}