private synchronized void postReceiveMessage(ECMessage ecMessage, boolean showNotice) { int userId = Integer.parseInt(ecMessage.getSessionId()); Friend friend = FriendCache.getInstance(mContext).getFriend(userId); String message = ((ECTextMessageBody) ecMessage.getBody()).getMessage(); History history = new History(message, userId, mContext); HistoryCache.getInstance(mContext).updateHistory(history, friend); ConversationCache.getInstance() .updateConversation( new Conversation( userId, String.format(mContext.getString(R.string.send_bomb_message), history.getTime()))); if (history.getStatus() == History.accepted) { AlarmSetManager.setAlarm(mContext, history, friend); } else if (history.getStatus() == History.failed) { AlarmHelper.getInstance(mContext).stopAudio(); } LogUtil.d(TAG, ecMessage.getBody().toString()); if (mOnMessageReportCallback != null) { ArrayList<ECMessage> messages = new ArrayList<>(); messages.add(ecMessage); mOnMessageReportCallback.onPushMessage(); } // 是否状态栏提示 if (showNotice) showNotification(ecMessage); }
private static void showNotification(ECMessage msg) { if (checkNeedNotification(msg.getSessionId())) { ECNotificationManager.getInstance().forceCancelNotification(); String lastMsg = ""; if (msg.getType() == ECMessage.Type.TXT) { lastMsg = ((ECTextMessageBody) msg.getBody()).getMessage(); } ECContacts contact = ContactSqlManager.getContact(msg.getForm()); if (contact == null) { return; } ECNotificationManager.getInstance() .showCustomNewMessageNotification( CCPAppManager.getContext(), lastMsg, contact.getNickname(), msg.getSessionId(), msg.getType().ordinal()); } }
private void showNotification(ECMessage ecMessage) { CallUpNotificationManager.getInstance().forceCancelNotification(); int userId = Integer.parseInt(ecMessage.getForm()); Friend friend = FriendCache.getInstance(mContext).getFriend(userId); if (friend == null) { return; } CallUpNotificationManager.getInstance() .showCustomNewMessageNotification( BaseInfoUtil.getContext(), friend, ecMessage.getSessionId(), ecMessage.getType().ordinal()); }
@Override public void onSendMessageComplete(ECError error, ECMessage message) { if (message == null) { return; } // 处理ECMessage的发送状态 if (message != null) { if (message.getType() == ECMessage.Type.VOICE) { try { DemoUtils.playNotifycationMusic( CCPAppManager.getContext(), "sound/voice_message_sent.mp3"); } catch (IOException e) { e.printStackTrace(); } } IMessageSqlManager.setIMessageSendStatus( message.getMsgId(), message.getMsgStatus().ordinal()); IMessageSqlManager.notifyMsgChanged(message.getSessionId()); if (mOnMessageReportCallback != null) { mOnMessageReportCallback.onMessageReport(error, message); } return; } }
/** * 处理接收消息 * * @param msg * @param showNotice */ private synchronized void postReceiveMessage(ECMessage msg, boolean showNotice) { // 接收到的IM消息,根据IM消息类型做不同的处理 // IM消息类型:ECMessage.Type if (msg.getType() != ECMessage.Type.TXT) { ECFileMessageBody body = (ECFileMessageBody) msg.getBody(); FileAccessor.initFileAccess(); if (!TextUtils.isEmpty(body.getRemoteUrl())) { boolean thumbnail = false; String fileExt = DemoUtils.getExtensionName(body.getRemoteUrl()); if (msg.getType() == ECMessage.Type.VOICE) { body.setLocalUrl( new File( FileAccessor.getVoicePathName(), DemoUtils.md5(String.valueOf(System.currentTimeMillis())) + ".amr") .getAbsolutePath()); } else if (msg.getType() == ECMessage.Type.IMAGE) { ECImageMessageBody imageBody = (ECImageMessageBody) body; thumbnail = !TextUtils.isEmpty(imageBody.getThumbnailFileUrl()); imageBody.setLocalUrl( new File( FileAccessor.getImagePathName(), DemoUtils.md5( thumbnail ? imageBody.getThumbnailFileUrl() : imageBody.getRemoteUrl()) + "." + fileExt) .getAbsolutePath()); } else { body.setLocalUrl( new File( FileAccessor.getFilePathName(), DemoUtils.md5(String.valueOf(System.currentTimeMillis())) + "." + fileExt) .getAbsolutePath()); } if (syncMessage != null) { syncMessage.put(msg.getMsgId(), new SyncMsgEntry(showNotice, thumbnail, msg)); } if (mChatManager != null) { if (thumbnail) { mChatManager.downloadThumbnailMessage(msg, this); } else { mChatManager.downloadMediaMessage(msg, this); } } if (TextUtils.isEmpty(body.getFileName()) && !TextUtils.isEmpty(body.getRemoteUrl())) { body.setFileName(FileAccessor.getFileName(body.getRemoteUrl())); } msg.setUserData("fileName=" + body.getFileName()); if (IMessageSqlManager.insertIMessage(msg, msg.getDirection().ordinal()) > 0) { return; } } else { LogUtil.e(TAG, "ECMessage fileUrl: null"); } } if (IMessageSqlManager.insertIMessage(msg, msg.getDirection().ordinal()) <= 0) { return; } if (mOnMessageReportCallback != null) { ArrayList<ECMessage> msgs = new ArrayList<ECMessage>(); msgs.add(msg); mOnMessageReportCallback.onPushMessage(msg.getSessionId(), msgs); } // 是否状态栏提示 if (showNotice) showNotification(msg); }