@Override public void onProgress(Message message, int progress) { //发送进度 message.setExtra(progress + ""); updateMessageStatus(message); }
private void updateMessageStatus(Message message) { for (int i = 0; i < mData.size(); i++) { Message msg = mData.get(i); if (msg.getMessageId() == message.getMessageId()) { mData.remove(i); mData.add(i, message); mAdapter.notifyDataSetChangedWrapper(); break; } } }
public static void startRedPacket(FragmentActivity activity, UserInfo toUserInfo, RPSendPacketCallback callback) { if (toUserInfo == null) return; RPRedPacketUtil.getInstance().startRedPacket(activity, RPConstant.RP_ITEM_TYPE_SINGLE, genPersonalRedPacketInfo(toUserInfo.getUserId(), toUserInfo.getName(), toUserInfo.getPortraitUri().toString()), callback); }
/** * app中获取用户头像的接口 * 这个方法不涉及读数据库,头像空时直接生成默认头像 */ public String getPortraitUri(UserInfo userInfo) { if (userInfo != null) { if (userInfo.getPortraitUri() != null) { if (TextUtils.isEmpty(userInfo.getPortraitUri().toString())) { if (userInfo.getName() != null) { return RongGenerate.generateDefaultAvatar(userInfo); } else { return null; } } else { return userInfo.getPortraitUri().toString(); } } else { if (userInfo.getName() != null) { return RongGenerate.generateDefaultAvatar(userInfo); } else { return null; } } } return null; }
private void setAvatar(LQRViewHolderForRecyclerView helper, Message item, int position) { ImageView ivAvatar = helper.getView(R.id.ivAvatar); UserInfo userInfo = DBManager.getInstance().getUserInfo(item.getSenderUserId()); if (userInfo != null) { Glide.with(mContext).load(userInfo.getPortraitUri()).centerCrop().into(ivAvatar); } }
private void recallMessageAndInsertMessage(RecallNotificationMessage recallNotificationMessage, int position) { RongIMClient.getInstance().insertMessage(mConversationType, mSessionId, UserCache.getId(), recallNotificationMessage); mData.remove(position); mData.add(Message.obtain(mSessionId, mConversationType, recallNotificationMessage)); mAdapter.notifyDataSetChangedWrapper(); } }
private void setTime(LQRViewHolderForRecyclerView helper, Message item, int position) { boolean isSend = item.getMessageDirection() == Message.MessageDirection.SEND ? true : false; long msgTime = isSend ? item.getSentTime() : item.getReceivedTime(); if (position > 0) { Message preMsg = mData.get(position - 1); boolean isSendForPreMsg = preMsg.getMessageDirection() == Message.MessageDirection.SEND ? true : false; long preMsgTime = isSendForPreMsg ? preMsg.getSentTime() : preMsg.getReceivedTime(); if (msgTime - preMsgTime > (5 * 60 * 1000)) { helper.setViewVisibility(R.id.tvTime, View.VISIBLE).setText(R.id.tvTime, TimeUtils.getMsgFormatTime(msgTime)); } else { helper.setViewVisibility(R.id.tvTime, View.GONE); } } else { helper.setViewVisibility(R.id.tvTime, View.VISIBLE).setText(R.id.tvTime, TimeUtils.getMsgFormatTime(msgTime)); } }
private void jumpToSetAlias() { Intent intent = new Intent(this, SetAliasActivity.class); intent.putExtra("userId", mUserInfo.getUserId()); jumpToActivity(intent); }
@Override public void initListener() { mIvHeader.setOnClickListener(v -> { Intent intent = new Intent(MyInfoActivity.this, ShowBigImageActivity.class); intent.putExtra("url", mPresenter.mUserInfo.getPortraitUri().toString()); jumpToActivity(intent); }); mLlHeader.setOnClickListener(v -> { Intent intent = new Intent(this, ImageGridActivity.class); startActivityForResult(intent, REQUEST_IMAGE_PICKER); }); mOivQRCodeCard.setOnClickListener(v -> jumpToActivity(QRCodeCardActivity.class)); mOivName.setOnClickListener(v -> jumpToActivity(ChangeMyNameActivity.class)); }
private void setTitle() { if (mConversationType == Conversation.ConversationType.PRIVATE) { UserInfo userInfo = DBManager.getInstance().getUserInfo(mSessionId); if (userInfo != null) setToolbarTitle(userInfo.getName()); } else if (mConversationType == Conversation.ConversationType.GROUP) { Groups groups = DBManager.getInstance().getGroupsById(mSessionId); if (groups != null) setToolbarTitle(groups.getName()); } }
@Override public void convert(LQRViewHolderForRecyclerView helper, Message item, int position) { setTime(helper, item, position); setView(helper, item, position); if (!(item.getContent() instanceof GroupNotificationMessage) && !(item.getContent() instanceof RecallNotificationMessage) && (getItemViewType(position) != UNDEFINE_MSG)) { setAvatar(helper, item, position); setName(helper, item, position); setStatus(helper, item, position); setOnClick(helper, item, position); } }
public void getRemoteHistoryMessages() { //消息中的 sentTime;第一次可传 0,获取最新 count 条。 long dateTime = 0; if (mData.size() > 0) { dateTime = mData.get(0).getSentTime(); } else { dateTime = 0; } RongIMClient.getInstance().getRemoteHistoryMessages(mConversationType, mSessionId, dateTime, mMessageCount, new RongIMClient.ResultCallback<List<Message>>() { @Override public void onSuccess(List<Message> messages) { saveHistoryMsg(messages); } @Override public void onError(RongIMClient.ErrorCode errorCode) { loadMessageError(errorCode); } }); }
@Override public void onReceive(Context context, Intent intent) { Message message = intent.getParcelableExtra("result"); if (message != null) { if (message.getTargetId().equals(mSessionId)) { mPresenter.receiveNewMessage(message); } } } });
private void setName(LQRViewHolderForRecyclerView helper, Message item, int position) { if (item.getConversationType() == Conversation.ConversationType.PRIVATE) { helper.setViewVisibility(R.id.tvName, View.GONE); } else { helper.setViewVisibility(R.id.tvName, View.GONE); // .setText(R.id.tvName, item.getContent().getUserInfo().getName()); } }
/** * 模拟获取当前用户信息的方法 * * @return RedPacketInfo */ public static RedPacketInfo getCurrentUserInfo() { RedPacketInfo redPacketInfo = new RedPacketInfo(); UserInfo userInfo = DBManager.getInstance().getUserInfo(UserCache.getId()); //红包发送者昵称 不可为空 redPacketInfo.fromNickName = userInfo != null ? userInfo.getName() : "CSDN_LQR"; //红包发送者头像url 不可为空 redPacketInfo.fromAvatarUrl = userInfo != null ? userInfo.getPortraitUri().toString() : "http://avatar.csdn.net/6/6/F/1_csdn_lqr.jpg"; return redPacketInfo; }
public void sendFileMsg(File file) { Message fileMessage = Message.obtain(mSessionId, mConversationType, FileMessage.obtain(Uri.fromFile(file))); RongIMClient.getInstance().sendMediaMessage(fileMessage, mPushCotent, mPushData, new IRongCallback.ISendMediaMessageCallback() { @Override public void onProgress(Message message, int progress) { //发送进度 message.setExtra(progress + ""); updateMessageStatus(message); } @Override public void onCanceled(Message message) { } @Override public void onAttached(Message message) { //保存数据库成功 mAdapter.addLastItem(message); rvMoveToBottom(); } @Override public void onSuccess(Message message) { //发送成功 updateMessageStatus(message); } @Override public void onError(Message message, RongIMClient.ErrorCode errorCode) { //发送失败 updateMessageStatus(message); } }); }
public void recallMessageFromListener(int messageId, RecallNotificationMessage recallNotificationMessage) { for (int i = 0; i < mData.size(); i++) { Message message = mData.get(i); if (message.getMessageId() == messageId) { recallMessageAndInsertMessage(recallNotificationMessage, i); break; } } }
public void sendLocationMessage(LocationData locationData) { LocationMessage message = LocationMessage.obtain(locationData.getLat(), locationData.getLng(), locationData.getPoi(), Uri.parse(locationData.getImgUrl())); RongIMClient.getInstance().sendLocationMessage(Message.obtain(mSessionId, mConversationType, message), mPushCotent, mPushData, new IRongCallback.ISendMessageCallback() { @Override public void onAttached(Message message) { //保存数据库成功 mAdapter.addLastItem(message); rvMoveToBottom(); } @Override public void onSuccess(Message message) { //发送成功 updateMessageStatus(message); } @Override public void onError(Message message, RongIMClient.ErrorCode errorCode) { //发送失败 updateMessageStatus(message); } }); }
public void getLocalHistoryMessage() { //没有消息第一次调用应设置为:-1。 int messageId = -1; if (mData.size() > 0) { messageId = mData.get(0).getMessageId(); } else { messageId = -1; } RongIMClient.getInstance().getHistoryMessages(mConversationType, mSessionId, messageId, mMessageCount, new RongIMClient.ResultCallback<List<Message>>() { @Override public void onSuccess(List<Message> messages) { getView().getRefreshLayout().endRefreshing(); if (messages == null || messages.size() == 0) getRemoteHistoryMessages(); else saveHistoryMsg(messages); } @Override public void onError(RongIMClient.ErrorCode errorCode) { getView().getRefreshLayout().endRefreshing(); loadMessageError(errorCode); } }); }