公屏获取历史记录
This commit is contained in:
@@ -2,7 +2,9 @@ package com.yizhuan.erban.avroom.presenter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
@@ -12,9 +14,16 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.netease.nimlib.sdk.NIMClient;
|
||||
import com.netease.nimlib.sdk.RequestCallbackWrapper;
|
||||
import com.netease.nimlib.sdk.ResponseCode;
|
||||
import com.netease.nimlib.sdk.chatroom.ChatRoomService;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomInfo;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
import com.netease.nimlib.sdk.chatroom.model.EnterChatRoomResultData;
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
|
||||
import com.netease.nimlib.sdk.util.Entry;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.yizhuan.erban.avroom.view.IAvRoomView;
|
||||
@@ -28,6 +37,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
|
||||
import com.yizhuan.xchat_android_core.manager.RoomEvent;
|
||||
import com.yizhuan.xchat_android_core.manager.RtcEngineManager;
|
||||
import com.yizhuan.xchat_android_core.manager.event.HistoryMessageEvent;
|
||||
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterInfo;
|
||||
import com.yizhuan.xchat_android_core.monsterhunting.model.MonsterHuntingModel;
|
||||
import com.yizhuan.xchat_android_core.patriarch.exception.PmRoomLimitException;
|
||||
@@ -52,12 +62,14 @@ import com.yizhuan.xchat_android_core.super_admin.SuperAdminDataMrg;
|
||||
|
||||
import com.yizhuan.xchat_android_library.base.PresenterEvent;
|
||||
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
|
||||
import com.yizhuan.xchat_android_library.rxbus.RxBus;
|
||||
import com.yizhuan.xchat_android_library.threadmgr.ThreadPoolManager;
|
||||
import com.yizhuan.xchat_android_library.utils.ListUtils;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@@ -140,6 +152,20 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
|
||||
.subscribe(roomQueueInfoSparseArray -> {
|
||||
long uid = AuthModel.get().getCurrentUid();
|
||||
RtcEngineManager.get().startRtcEngine(uid);
|
||||
if (!roomInfo.isCloseScreen()) {
|
||||
NIMClient.getService(ChatRoomService.class)
|
||||
.pullMessageHistoryExType(String.valueOf(roomInfo.getRoomId()), 0,
|
||||
10, QueryDirectionEnum.QUERY_OLD, new MsgTypeEnum[]{MsgTypeEnum.text})
|
||||
.setCallback(new RequestCallbackWrapper<List<ChatRoomMessage>>() {
|
||||
@Override
|
||||
public void onResult(int code, List<ChatRoomMessage> result, Throwable exception) {
|
||||
if (code == ResponseCode.RES_SUCCESS && result != null && result.size() > 0) {
|
||||
Collections.reverse(result);
|
||||
RxBus.get().post(new HistoryMessageEvent(result));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//成功进入房间发送log 到阿里
|
||||
StatisticManager.Instance().sendAliyunLog(LogFactory.create(
|
||||
|
@@ -4,6 +4,7 @@ import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
@@ -11,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.OrientationHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
@@ -101,6 +103,7 @@ import com.yizhuan.xchat_android_core.magic.bean.MultiMagicReceivedInfo;
|
||||
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
|
||||
import com.yizhuan.xchat_android_core.manager.IMMessageManager;
|
||||
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
|
||||
import com.yizhuan.xchat_android_core.manager.event.HistoryMessageEvent;
|
||||
import com.yizhuan.xchat_android_core.miniworld.bean.MiniWorldInWorldInfo;
|
||||
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterHuntingResult;
|
||||
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterProtocol;
|
||||
@@ -201,6 +204,7 @@ public class MessageView extends FrameLayout {
|
||||
|
||||
private DialogManager mDialogManager;
|
||||
private Disposable subscribe;
|
||||
private Disposable historyDisposable;
|
||||
|
||||
private static final int LOAD_MESSAGE_COUNT = 10;
|
||||
|
||||
@@ -240,21 +244,25 @@ public class MessageView extends FrameLayout {
|
||||
updateGameItemStatus(gameRespondEvent.fromAcount);
|
||||
}
|
||||
});
|
||||
historyDisposable = RxBus.get().toFlowable(HistoryMessageEvent.class)
|
||||
.subscribe(historyMessageEvent -> addHistoryMessages(historyMessageEvent.getMessages()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
disposable.dispose();
|
||||
subscribe.dispose();
|
||||
historyDisposable.dispose();
|
||||
super.onDetachedFromWindow();
|
||||
}
|
||||
|
||||
|
||||
private int imageHeight;
|
||||
private int imageWidth;
|
||||
|
||||
private void init(Context context) {
|
||||
imageHeight= Utils.dip2px(context, 15);
|
||||
imageWidth= Utils.dip2px(context, 59);
|
||||
imageHeight = Utils.dip2px(context, 15);
|
||||
imageWidth = Utils.dip2px(context, 59);
|
||||
|
||||
whiteColor = ContextCompat.getColor(context, R.color.white);
|
||||
greyColor = ContextCompat.getColor(context, R.color.white_transparent_50);
|
||||
@@ -272,7 +280,7 @@ public class MessageView extends FrameLayout {
|
||||
expLevelWidth = expLevelHeight * 22 / 17;//expLevelHeight * 114 / 45
|
||||
giftLength = Utils.dip2px(context, 35);
|
||||
// 内容区域
|
||||
layoutManger = new LinearLayoutManager(context, OrientationHelper.VERTICAL, false);
|
||||
layoutManger = new LinearLayoutManager(context, RecyclerView.VERTICAL, false);
|
||||
FrameLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
messageListView = new RecyclerView(context);
|
||||
messageListView.setLayoutParams(params);
|
||||
@@ -368,6 +376,12 @@ public class MessageView extends FrameLayout {
|
||||
return chatRoomMessages.size() - 1;
|
||||
}
|
||||
|
||||
private void addHistoryMessages(List<ChatRoomMessage> messages) {
|
||||
chatRoomMessages.addAll(chatRoomMessages.size() > 0 ? 1 : 0, messages);
|
||||
mMessageAdapter.notifyDataSetChanged();
|
||||
messageListView.scrollToPosition(mMessageAdapter.getItemCount() - 1);
|
||||
}
|
||||
|
||||
private void keepSizeUnderLimit() {
|
||||
while (chatRoomMessages.size() > MAX_MESSAGE_SIZE) {
|
||||
Log.i("keepSizeUnderLimit", "size" + chatRoomMessages.size());
|
||||
@@ -393,7 +407,6 @@ public class MessageView extends FrameLayout {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改关注状态
|
||||
*
|
||||
@@ -1349,7 +1362,7 @@ public class MessageView extends FrameLayout {
|
||||
SpannableBuilder text = new SpannableBuilder(tvContent)
|
||||
.append("厉害了 ", new ForegroundColorSpan(greyColor))
|
||||
.append(attachment.getNick() + " ", new ForegroundColorSpan(roomTipColor))
|
||||
.append(attachment.getBoxTypeStr()+" ", new ForegroundColorSpan(greyColor))
|
||||
.append(attachment.getBoxTypeStr() + " ", new ForegroundColorSpan(greyColor))
|
||||
.append(attachment.getPrizeName(), new ForegroundColorSpan(Color.WHITE));
|
||||
if (attachment.getPrizeNum() > 1) {
|
||||
text.append(" x" + attachment.getPrizeNum() + " ", new ForegroundColorSpan(roomTipColor));
|
||||
@@ -1519,8 +1532,8 @@ public class MessageView extends FrameLayout {
|
||||
|
||||
SpannableBuilder text = new SpannableBuilder(tvContent);
|
||||
text.append(isOfficial ? ResourcesCompat.getDrawable(getResources(),
|
||||
R.mipmap.ic_user_official_13dp, null) : null,
|
||||
badgeWidth, badgeHeight)
|
||||
R.mipmap.ic_user_official_13dp, null) : null,
|
||||
badgeWidth, badgeHeight)
|
||||
.append(newUser ? Constants.NEW_USER_ICON : "", badgeWidth, badgeHeight)
|
||||
.append(NobleUtil.getLocalResourcePath(userBadge), badgeWidth, badgeHeight);
|
||||
|
||||
@@ -2185,7 +2198,7 @@ public class MessageView extends FrameLayout {
|
||||
|
||||
}
|
||||
});
|
||||
} else if (welcomeInfo.isShowAttentedBtn()){
|
||||
} else if (welcomeInfo.isShowAttentedBtn()) {
|
||||
text.append(" ").append(
|
||||
ResourcesCompat.getDrawable(getResources(),
|
||||
R.drawable.icon_room_attent_gray, null),
|
||||
@@ -2203,9 +2216,9 @@ public class MessageView extends FrameLayout {
|
||||
* 进入公聊大厅页面,加载历史记录
|
||||
*/
|
||||
public void fetchHistory() {
|
||||
IMMessage anchor = MessageBuilder.createEmptyMessage(AvRoomDataManager.get().getRoomId()+"", SessionTypeEnum.P2P, System.currentTimeMillis());
|
||||
IMMessage anchor = MessageBuilder.createEmptyMessage(AvRoomDataManager.get().getRoomId() + "", SessionTypeEnum.P2P, System.currentTimeMillis());
|
||||
InvocationFuture<List<IMMessage>> listInvocationFuture = IMMessageManager.get().pullMessageHistory(anchor, 50, false);
|
||||
Log.e(TAG, "fetchHistory: "+listInvocationFuture );
|
||||
Log.e(TAG, "fetchHistory: " + listInvocationFuture);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -3,11 +3,12 @@ package com.yizhuan.xchat_android_core.manager;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import androidx.annotation.Nullable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.netease.nimlib.sdk.NIMChatRoomSDK;
|
||||
import com.netease.nimlib.sdk.RequestCallback;
|
||||
import com.netease.nimlib.sdk.chatroom.constant.MemberType;
|
||||
|
@@ -0,0 +1,22 @@
|
||||
package com.yizhuan.xchat_android_core.manager.event;
|
||||
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HistoryMessageEvent {
|
||||
|
||||
private List<ChatRoomMessage> messages;
|
||||
|
||||
public HistoryMessageEvent(List<ChatRoomMessage> messages) {
|
||||
this.messages = messages;
|
||||
}
|
||||
|
||||
public List<ChatRoomMessage> getMessages() {
|
||||
return messages;
|
||||
}
|
||||
|
||||
public void setMessages(List<ChatRoomMessage> messages) {
|
||||
this.messages = messages;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user