From 72ae93fbb2dbd2d8e62c3f109d90fba280a6c740 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A2=81=E5=B0=8F=E6=B1=9F?= <461355754@qq.com>
Date: Mon, 29 Sep 2025 09:05:02 +0800
Subject: [PATCH] =?UTF-8?q?1:=E4=BF=AE=E6=94=B9=E6=8D=A2=E9=BA=A6=E9=80=BB?=
=?UTF-8?q?=E8=BE=91=202=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=97=AA=E5=B1=8F?=
=?UTF-8?q?=E4=B8=8D=E5=9C=A8=E7=9B=B4=E6=8E=A5=E5=85=B3=E9=97=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 32 +-
gradle.properties | 4 +-
.../moduleutil/activity/BaseMvpActivity.java | 5 +-
.../moduleutil/base/CommonAppContext.java | 36 ++
.../com/xscm/moduleutil/http/ApiServer.java | 4 +
.../xscm/moduleutil/http/RetrofitClient.java | 14 +
.../utils/config/EnvironmentPrefs.java | 2 +-
.../xscm/moduleutil/widget/BaseWheatView.java | 57 ++-
.../com/xscm/moduleutil/widget/Constants.java | 1 +
.../widget/RoomFriendshipWheatView.java | 22 +-
.../moduleutil/widget/WheatLayoutManager.java | 2 +-
.../widget/WheatLayoutSingManager.java | 38 +-
.../moduleroom/activity/RoomActivity.kt | 272 +++++++++-----
.../contacts/FriendshipRoomContacts.java | 7 +
.../fragment/FriendshipRoomFragment.java | 347 ++++++++++++------
.../PublicScreenEaseChatFragment.java | 1 +
.../fragment/RoomAuctionFragment.java | 1 +
.../moduleroom/fragment/RoomKtvFragment.java | 6 +-
.../moduleroom/fragment/SingSongFragment.java | 30 +-
.../presenter/FriendshipRoomPresenter.java | 23 ++
.../moduleroom/service/ForegroundService.kt | 1 +
tuichat/src/main/AndroidManifest.xml | 10 +-
22 files changed, 636 insertions(+), 279 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 843ea5f..5e8a8c5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -64,22 +64,22 @@ android {
]
}
- // 测试版配置
- beta {
- dimension "environment"
- // 测试版包名:基础包名 + .beta(com.example.myapp.beta)
- applicationIdSuffix ".beta"
- // 测试版版本名:1.0-beta
- versionNameSuffix "-beta"
-
- // 【测试版应用名称】动态生成带标识的名称
- resValue "string", "app_name", "秘地-测试版"
-
- // 【测试版图标】替换为测试专用图标
- manifestPlaceholders = [
- appIcon: "@mipmap/ic_launcher_app_bat" // 需在main/res/mipmap放置该图标
- ]
- }
+// // 测试版配置
+// beta {
+// dimension "environment"
+// // 测试版包名:基础包名 + .beta(com.example.myapp.beta)
+// applicationIdSuffix ".beta"
+// // 测试版版本名:1.0-beta
+// versionNameSuffix "-beta"
+//
+// // 【测试版应用名称】动态生成带标识的名称
+// resValue "string", "app_name", "秘地-测试版"
+//
+// // 【测试版图标】替换为测试专用图标
+// manifestPlaceholders = [
+// appIcon: "@mipmap/ic_launcher_app_bat" // 需在main/res/mipmap放置该图标
+// ]
+// }
}
signingConfigs {
diff --git a/gradle.properties b/gradle.properties
index ed84208..1580f62 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -28,8 +28,8 @@ isBuildModule=false
#org.gradle.deamon=false
android.injected.testOnly=false
-APP_VERSION_NAME=1.1.3
-APP_VERSION_CODE=165
+APP_VERSION_NAME=1.1.6
+APP_VERSION_CODE=168
org.gradle.jvm.toolchain.useLegacyAdapters=false
#org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java b/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java
index dcc5907..412e74e 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/activity/BaseMvpActivity.java
@@ -124,7 +124,7 @@ public abstract class BaseMvpActivity
onlineMap=new HashMap<>();
+
+ public void setOnlineMap(Map onlineMap) {
+ this.onlineMap = onlineMap;
+ }
+
+ public Map getOnlineMap() {
+ return onlineMap;
+ }
@Setter
@Getter
@@ -441,6 +456,9 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
// 每次启动应用时重置状态
SpUtil.getInstance().setBooleanValue("youth_model_shown", false);
startInitSdk();
+
+ // 启动IM连接服务
+// IMServiceManager.getInstance().startIMService(this);
}
}
// piaoPingManager = PiaoPingManager.getInstance(this);
@@ -790,6 +808,10 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
@Override
public void onActivityStarted(@NonNull Activity activity) {
AppLifecycleUtil.onAppFrontGround();
+
+// if (playId!=null && !playId.equals("")){
+// RetrofitClient.getInstance().userRoomBack(playId, "1");
+// }
}
@Override
@@ -803,6 +825,9 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
// AppStateManager.setRoomActivityMinimized(false);
AppLifecycleUtil.onAppFrontGround();
}
+ if (playId!=null && !playId.equals("")){
+ RetrofitClient.getInstance().userRoomBack(playId, "2");
+ }
activityCount++;
}
@@ -814,6 +839,11 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
if (appStateListener != null) {
appStateListener.onAppBackground();
}
+
+ if (playId!=null && !playId.equals("")){
+ RetrofitClient.getInstance().userRoomBack(playId, "1");
+ }
+
AppLifecycleUtil.onAppBackGround();
// handleAppBackground(activity);
// AppStateManager.setRoomActivityMinimized( true);
@@ -888,4 +918,10 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
// appStateListener.onRoomActivityDestroyed();
// }
}
+
+ @Override
+ public void onTerminate() {
+ super.onTerminate();
+ LogUtils.e("@@@", "onTerminate");
+ }
}
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java
index f10a09b..ed677bb 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java
@@ -102,6 +102,10 @@ public interface ApiServer {
@POST(Constants.BIND_MOBILE)
Call> mobileView2(@Field("new_mobile") String new_mobile, @Field("sms_code") String sms_code);
+ @FormUrlEncoded
+ @POST(Constants.USER_ROOM_BACK)
+ Call userRoomBack(@Field("room_id")String room_id,@Field("type")String type);
+
@FormUrlEncoded
@POST(Constants.USER_LOGIN)
Call>> userLogin(@Field("user_login") String user_login, @Field("password") String password);
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java
index 62beea1..433943f 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java
@@ -292,6 +292,20 @@ public class RetrofitClient {
});
}
+ public void userRoomBack(String room_id,String type){//用户退出前后台保留数据操作 type:1:切后台 2:切前台
+ sApiServer.userRoomBack(room_id,type).enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+
+ }
+ });
+ }
+
public void mobileView2(String new_mobile, String sms_code, BaseObserver observer) {
sApiServer.mobileView2(new_mobile, sms_code).enqueue(new Callback>() {
@Override
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentPrefs.java b/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentPrefs.java
index a757b80..a1d591a 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentPrefs.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentPrefs.java
@@ -51,7 +51,7 @@ public class EnvironmentPrefs {
// }
// 默认使用生产环境
- String envName = sharedPreferences.getString(KEY_ENV, EnvironmentEnum.TEST.name());
+ String envName = sharedPreferences.getString(KEY_ENV, EnvironmentEnum.PRODUCTION.name());
try {
return EnvironmentEnum.valueOf(envName);
} catch (IllegalArgumentException e) {
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/BaseWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/BaseWheatView.java
index ee1d5c1..450f3cc 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/BaseWheatView.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/BaseWheatView.java
@@ -13,6 +13,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import com.opensource.svgaplayer.SVGAImageView;
import com.xscm.moduleutil.R;
+import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.base.RoomRollModel;
import com.xscm.moduleutil.bean.FaceBean;
import com.xscm.moduleutil.bean.RoomMessageEvent;
@@ -39,6 +40,8 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
+import java.util.Map;
+
public abstract class BaseWheatView extends ConstraintLayout implements IBaseWheat {
public ImageView mRiv;
public ImageView mIvGift;
@@ -108,6 +111,9 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
oX = mIvGift.getX();
oY = mIvGift.getY();
initPit(context, attrs);
+ if (!EventBus.getDefault().isRegistered( this)){
+ EventBus.getDefault().register(this);
+ }
}
protected abstract void initPit(Context context, AttributeSet attrs);
@@ -162,11 +168,22 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
setCardiac(pitBean.getCharm(), getTzbl());
setPitData(bean);
- if (bean.getIs_online() == 2 && bean.getUser_id()!=null && !bean.getUser_id().equals("0") && !bean.getUser_id().isEmpty()){
- iv_on_line.setVisibility(VISIBLE);
+
+ if (bean.getUser_id()!=null && !bean.getUser_id().equals("0") && !bean.getUser_id().isEmpty()) {
+ if (CommonAppContext.getInstance().getOnlineMap()!=null&&CommonAppContext.getInstance().getOnlineMap().get(bean.getUser_id())!=null) {
+ iv_on_line.setVisibility(CommonAppContext.getInstance().getOnlineMap().get(bean.getUser_id()) == 1 ? GONE : VISIBLE);
+ }else {
+ iv_on_line.setVisibility(GONE);
+ }
}else {
iv_on_line.setVisibility(GONE);
}
+
+// if (bean.getIs_online() == 2 && bean.getUser_id()!=null && !bean.getUser_id().equals("0") && !bean.getUser_id().isEmpty()){
+// iv_on_line.setVisibility(VISIBLE);
+// }else {
+// iv_on_line.setVisibility(GONE);
+// }
// if (bean.getIs_online() == 0 &&bean.getUser_id() != null && !bean.getUser_id().equals("0") && !bean.getUser_id().isEmpty()) {
// iv_on_line.setVisibility(VISIBLE);
// } else {
@@ -241,6 +258,7 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
if (soundLevel == 0) {
mIvRipple.post(() -> {
mIvRipple.stopAnimation(true);
+ CommonAppContext.getInstance().onlineMap.put(pitBean.getUser_id(),1);
mIvRipple.setVisibility(GONE);
});
mIvRipple.setVisibility(GONE);
@@ -249,8 +267,9 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
mIvRipple.post(() -> {
if (!mIvRipple.isAnimating()) {
mIvRipple.startAnimation();
+ CommonAppContext.getInstance().onlineMap.put(pitBean.getUser_id(),1);
+ iv_on_line.setVisibility(GONE);
}
- iv_on_line.setVisibility(GONE);
});
}
@@ -269,8 +288,9 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
mIvRipple.post(() -> {
if (!mIvRipple.isAnimating()) {
mIvRipple.startAnimation();
+ CommonAppContext.getInstance().onlineMap.put(pitBean.getUser_id(),1);
+ iv_on_line.setVisibility(GONE);
}
- iv_on_line.setVisibility(GONE);
});
}
@@ -351,18 +371,27 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
}
// @Subscribe(threadMode = ThreadMode.MAIN)
+ public void setOnlineStatus() {
+// if (pitBean!=null) {
+// if (pitBean.getUser_id() != null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
+// if (pitBean.getUser_id().equals(isOnline.getUser_id())) {
+// if (isOnline.getIs_online() == 1) {
+// iv_on_line.setVisibility(GONE);
+// } else {
+// iv_on_line.setVisibility(VISIBLE);
+// }
+// }
+// }
+// }
- public void setOnlineStatus(UserOnlineStatusBean isOnline) {
- if (pitBean!=null) {
- if (pitBean.getUser_id() != null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
- if (pitBean.getUser_id().equals(isOnline.getUser_id())) {
- if (isOnline.getIs_online() == 1) {
- iv_on_line.setVisibility(GONE);
- } else {
- iv_on_line.setVisibility(VISIBLE);
- }
- }
+ if (pitBean.getUser_id()!=null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
+ if (CommonAppContext.getInstance().getOnlineMap()!=null&&CommonAppContext.getInstance().getOnlineMap().get(pitBean.getUser_id())!=null) {
+ iv_on_line.setVisibility(CommonAppContext.getInstance().getOnlineMap().get(pitBean.getUser_id()) == 1 ? GONE : VISIBLE);
+ }else {
+ iv_on_line.setVisibility(GONE);
}
+ }else {
+ iv_on_line.setVisibility(GONE);
}
}
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java
index 7ec677c..a3afe55 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java
@@ -390,6 +390,7 @@ public class Constants {
public static final String POST_ROOM_USER_CHARM_LIST = "/api/Room/room_user_charm_list";//房间用户当前魅力值列表
public static final String GET_GIFT_PACK_LIST_COUNT = "/api/UserGiftPack/get_gift_pack_list_count";//背包礼物总价值
public static final String ROOM_USER_RECONNECT = "/api/Room/user_reconnect";//用户重连
+ public static final String USER_ROOM_BACK = "/api/Room/user_in_room_background";//用户在房间内切后台保留数据操作
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java
index ec0ddba..6e3da27 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java
@@ -298,17 +298,17 @@ public class RoomFriendshipWheatView extends BaseWheatView {
}
- public void setOnlineStatus(UserOnlineStatusBean isOnline) {
- if (pitBean.getUser_id() != null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
- if (pitBean.getUser_id().equals(isOnline.getUser_id())) {
- if (isOnline.getIs_online() == 1) {
-// iv_on_line.setVisibility(GONE);
- } else {
-// iv_on_line.setVisibility(VISIBLE);
- }
- }
- }
- }
+// public void setOnlineStatus(UserOnlineStatusBean isOnline) {
+// if (pitBean.getUser_id() != null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
+// if (pitBean.getUser_id().equals(isOnline.getUser_id())) {
+// if (isOnline.getIs_online() == 1) {
+//// iv_on_line.setVisibility(GONE);
+// } else {
+//// iv_on_line.setVisibility(VISIBLE);
+// }
+// }
+// }
+// }
/// 设置是否显示助力按钮
public void setLockZl(boolean lock) {
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutManager.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutManager.java
index 2efcbd7..28a3610 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutManager.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutManager.java
@@ -287,7 +287,7 @@ public class WheatLayoutManager {
int pitNumber = Integer.parseInt(pitBean.getPit_number());
RoomDefaultWheatView wheatView = findWheatViewByPitNumber(pitNumber);
if (wheatView != null) {
- wheatView.setOnlineStatus(bean);
+ wheatView.setOnlineStatus();
}
}
}
diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java
index abb2804..6848252 100644
--- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java
+++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java
@@ -10,8 +10,10 @@ import androidx.annotation.Nullable;
import com.hjq.toast.ToastUtils;
import com.xscm.moduleutil.R;
+import com.xscm.moduleutil.bean.RoomMessageEvent;
import com.xscm.moduleutil.bean.UserOnlineStatusBean;
import com.xscm.moduleutil.bean.room.RoomPitBean;
+import com.xscm.moduleutil.utils.SpUtil;
import java.util.ArrayList;
import java.util.List;
@@ -381,6 +383,40 @@ public class WheatLayoutSingManager {
return metrics.widthPixels;
}
+ public void setUpData(RoomMessageEvent event){
+ String fromPit=event.getText().getFrom_pit_number()!=null?event.getText().getFrom_pit_number():"";
+ String toPitNumber=event.getText().getTo_pit_number()!=null?event.getText().getTo_pit_number():"";
+ if (fromPit.equals("") || toPitNumber.equals("")){
+ return;
+ }
+ RoomSingSongWheatView fromWheatView = findWheatViewByPitNumber(Integer.parseInt(fromPit));
+ RoomSingSongWheatView toWheatView = findWheatViewByPitNumber(Integer.parseInt(toPitNumber));
+ RoomPitBean fromPitBean=fromWheatView.pitBean;
+ RoomPitBean toPitBean=toWheatView.pitBean;
+ String tmpNumber=fromPitBean.getPit_number();
+ fromPitBean.setPit_number(toPitBean.getPit_number());
+ toPitBean.setPit_number(tmpNumber);
+ toWheatView.setData(fromPitBean);
+ fromWheatView.setData(toPitBean);
+ for (RoomSingSongWheatView view : multiWheatViews){
+ if (view.pitBean.getUser_id().equals(event.getText().getFromUserInfo().getUser_id()+"")){
+ if (!view.pitBean.getPit_number().equals(toPitNumber)){
+ RoomPitBean bean=view.pitBean;
+ bean.setCharm("");
+ bean.setUser_id("");
+ bean.setDress("");
+ bean.setAvatar("");
+ bean.setNickname("");
+ bean.setSex("");
+ bean.setUser_code("");
+ bean.setDress_picture("");
+ view.setData(bean);
+ }
+ }
+ }
+ }
+
+
/**
* 更新指定 pitNumber 的麦位信息(用于局部刷新)
*/
@@ -478,7 +514,7 @@ public class WheatLayoutSingManager {
int pitNumber = Integer.parseInt(pitBean.getPit_number());
RoomSingSongWheatView wheatView = findWheatViewByPitNumber(pitNumber);
if (wheatView != null) {
- wheatView.setOnlineStatus(bean); // 刷新数据
+ wheatView.setOnlineStatus(); // 刷新数据
}
}
}
diff --git a/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.kt b/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.kt
index 49e5a84..aa77aac 100644
--- a/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.kt
+++ b/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.kt
@@ -76,6 +76,8 @@ import com.orhanobut.logger.Logger
import com.petterp.floatingx.assist.helper.FxScopeHelper
import com.petterp.floatingx.listener.control.IFxControl
import com.tencent.imsdk.v2.V2TIMManager
+import com.tencent.imsdk.v2.V2TIMSDKListener
+import com.tencent.imsdk.v2.V2TIMUserFullInfo
import com.tencent.imsdk.v2.V2TIMValueCallback
import com.xscm.moduleutil.activity.BaseMvpActivity
import com.xscm.moduleutil.adapter.CommonPageAdapter
@@ -161,8 +163,7 @@ import java.util.stream.Collectors
@Route(path = ARouteConstants.ROOM_DETAILS)
class RoomActivity : BaseMvpActivity(),
- RoomContacts.View, PermissionCallbacks, OnMessageReceivedListener
- {
+ RoomContacts.View, PermissionCallbacks, OnMessageReceivedListener {
private var roomFragment: RoomFragment? = null
var commonPageAdapter: CommonPageAdapter? = null
private var mRoomBean: RoomBean? = null
@@ -670,8 +671,45 @@ class RoomActivity : BaseMvpActivity(),
// 恢复房间状态
resumeRoomState()
}
+
+ V2TIMManager.getInstance().addIMSDKListener(imSdkListener);
}
+
+
+ private val imSdkListener = object : V2TIMSDKListener() {
+ override fun onConnecting() {}
+
+ override fun onConnectSuccess() { //重连成功
+ if (CommonAppContext.getInstance().playId != null) {
+ LogUtils.e("@@@", "重连成功")
+ RetrofitClient.getInstance().roomUserReconnect(CommonAppContext.getInstance().playId)
+ }
+ }
+
+ override fun onConnectFailed(code: Int, error: String?) {
+ LogUtils.e("@@@", "断开连接")
+ CommonAppContext.getInstance().onConnectFailed = true
+ }
+
+ override fun onKickedOffline() {
+ // queren1();
+ if (CommonAppContext.getInstance().playId != null) {
+ ToastUtils.show("您的账号已被挤下线")
+ try {
+ CommonAppContext.getInstance().clearLoginInfo()
+ } catch (e: ClassNotFoundException) {
+ throw RuntimeException(e)
+ }
+ }
+ }
+
+ override fun onUserSigExpired() {}
+
+ override fun onSelfInfoUpdated(info: V2TIMUserFullInfo?) {}
+ }
+
+
private fun setview(resp: RoomInfoResp) {
this.mRoomInfoResp = resp
val roomBean = resp.room_info
@@ -1501,6 +1539,12 @@ class RoomActivity : BaseMvpActivity(),
} else if (msgType == 1028) {
roomFragment!!.handleMsgType1028(messageEvent)
} else if (msgType == 1058) {
+ var userId = messageEvent!!.text!!.user_id!!
+ LogUtils.e("messageEvent!!.text.type"+messageEvent!!.text.type)
+ CommonAppContext.getInstance().onlineMap.set(
+ userId?.toString() ?: "",
+ messageEvent!!.text.type
+ )
if (mRoomInfoResp != null && mRoomInfoResp!!.room_info != null) {
if (mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "3" ||
mRoomInfoResp!!.room_info.type_id == "4" || mRoomInfoResp!!.room_info.type_id == "8"
@@ -1516,6 +1560,8 @@ class RoomActivity : BaseMvpActivity(),
roomFragment!!.friendshipRoomFragmentEvent(messageEvent)
}
}
+
+ CommonAppContext.getInstance().getOnlineMap()
} else if (msgType == 1059) { // 1059清除个人魅力 1058在离线
if (mRoomInfoResp != null && mRoomInfoResp!!.room_info != null) {
if (mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "3" ||
@@ -1664,10 +1710,10 @@ class RoomActivity : BaseMvpActivity(),
val pitList = mRoomInfoResp!!.room_info.pit_list
if (pitList != null && !pitList.isEmpty()) {
- pitMap.clear() // 避免数据累积
- for (roomPitBean in pitList) {
- pitMap[roomPitBean.pit_number] = roomPitBean
- }
+// pitMap.clear() // 避免数据累积
+// for (roomPitBean in pitList) {
+// pitMap[roomPitBean.pit_number] = roomPitBean
+// }
if (text == null) {
return
@@ -1688,104 +1734,97 @@ class RoomActivity : BaseMvpActivity(),
toPitNumber: String,
messageEvent: RoomMessageEvent
) {
- if (TextUtils.isEmpty(fromPitNumber) || TextUtils.isEmpty(toPitNumber)) {
- return
- }
-
- if (mRoomInfoResp == null || mRoomInfoResp!!.room_info == null) {
- LogUtils.e("Room info is null")
- return
- }
-
- val pitList = mRoomInfoResp!!.room_info.pit_list
- if (pitList == null || pitList.isEmpty()) {
- LogUtils.e("pit_list is null or empty")
- return
- }
-
- var fromBean: RoomPitBean? = null
- var toBean: RoomPitBean? = null
- val pitListCopy: MutableList = ArrayList()
-
- for (bean in pitList) {
- if (bean == null) continue
- if (fromPitNumber == bean.pit_number) {
- fromBean = bean
- pitListCopy.add(bean)
- } else if (toPitNumber == bean.pit_number) {
- toBean = bean
- pitListCopy.add(bean)
- }
- }
-
- if (fromBean == null || toBean == null) {
- LogUtils.e("Cannot find pit number: from=$fromPitNumber, to=$toPitNumber")
- return
- }
-
- // 交换 pit_number
- val temp = fromBean.pit_number
- fromBean.pit_number = toBean.pit_number
- toBean.pit_number = temp
-
- // 构造新的 pitList
- val newPitList: MutableList = ArrayList()
- for (bean in pitList) {
- if (!pitListCopy.contains(bean)) {
- newPitList.add(bean)
- }
- }
- newPitList.add(fromBean)
- newPitList.add(toBean)
-// 排序 - 更简洁的 Kotlin 写法
- newPitList.sortWith(compareBy {
- try {
- it.pit_number.toInt()
- } catch (e: NumberFormatException) {
- it.pit_number
- }
- })
-// // 排序
-// newPitList.sort(java.util.Comparator { a: RoomPitBean, b: RoomPitBean ->
+ mRoomInfoResp!!.user_info.pit_number = Integer.parseInt(toPitNumber)
+// if (TextUtils.isEmpty(fromPitNumber) || TextUtils.isEmpty(toPitNumber)) {
+// return
+// }
+////
+// if (mRoomInfoResp == null || mRoomInfoResp!!.room_info == null) {
+// LogUtils.e("Room info is null")
+// return
+// }
+////
+// val pitList = mRoomInfoResp!!.room_info.pit_list
+// if (pitList == null || pitList.isEmpty()) {
+// LogUtils.e("pit_list is null or empty")
+// return
+// }
+////
+// var fromBean: RoomPitBean? = null
+// var toBean: RoomPitBean? = null
+// val pitListCopy: MutableList = ArrayList()
+//
+// for (bean in pitList) {
+// if (bean == null) continue
+// if (fromPitNumber == bean.pit_number) {
+// fromBean = bean
+// pitListCopy.add(bean)
+// } else if (toPitNumber == bean.pit_number) {
+// toBean = bean
+// pitListCopy.add(bean)
+// }
+// }
+//
+// if (fromBean == null || toBean == null) {
+// LogUtils.e("Cannot find pit number: from=$fromPitNumber, to=$toPitNumber")
+// return
+// }
+//
+// // 交换 pit_number
+// val temp = fromBean.pit_number
+// fromBean.pit_number = toBean.pit_number
+// toBean.pit_number = temp
+//
+// // 构造新的 pitList
+// val newPitList: MutableList = ArrayList()
+// for (bean in pitList) {
+// if (!pitListCopy.contains(bean)) {
+// newPitList.add(bean)
+// }
+// }
+// newPitList.add(fromBean)
+// newPitList.add(toBean)
+//// 排序 - 更简洁的 Kotlin 写法
+// newPitList.sortWith(compareBy {
// try {
-// return@sort Integer.compare(a.pit_number.toInt(), b.pit_number.toInt())
+// it.pit_number.toInt()
// } catch (e: NumberFormatException) {
-// return@sort a.pit_number.compareTo(b.pit_number)
+// it.pit_number
// }
// })
-
- mRoomInfoResp!!.room_info.pit_list = newPitList
-
- // 更新当前用户 pit_number
- if (mRoomInfoResp!!.user_info != null) {
- val currentUserId = SpUtil.getUserId().toString()
- val fromUserId = fromBean.user_id
- val toUserId = toBean.user_id
-
- if (fromUserId != null && fromUserId == currentUserId) {
- try {
- mRoomInfoResp!!.user_info.pit_number = fromBean.pit_number.toInt()
- } catch (e: NumberFormatException) {
- LogUtils.e("Invalid pit number: " + toBean.pit_number)
- }
- } else if (toUserId != null && toUserId == currentUserId) {
- try {
- mRoomInfoResp!!.user_info.pit_number = fromBean.pit_number.toInt()
- } catch (e: NumberFormatException) {
- LogUtils.e("Invalid pit number: " + toBean.pit_number)
- }
- }
- }
+//
+// mRoomInfoResp!!.room_info.pit_list = newPitList
+//
+// // 更新当前用户 pit_number
+// if (mRoomInfoResp!!.user_info != null) {
+// val currentUserId = SpUtil.getUserId().toString()
+// val fromUserId = fromBean.user_id
+// val toUserId = toBean.user_id
+//
+// if (fromUserId != null && fromUserId == currentUserId) {
+// try {
+// mRoomInfoResp!!.user_info.pit_number = fromBean.pit_number.toInt()
+// } catch (e: NumberFormatException) {
+// LogUtils.e("Invalid pit number: " + toBean.pit_number)
+// }
+// } else if (toUserId != null && toUserId == currentUserId) {
+// try {
+// mRoomInfoResp!!.user_info.pit_number = fromBean.pit_number.toInt()
+// } catch (e: NumberFormatException) {
+// LogUtils.e("Invalid pit number: " + toBean.pit_number)
+// }
+// }
+// }
dispatchRoomEvent(messageEvent)
}
private fun dispatchRoomEvent(messageEvent: RoomMessageEvent) {
if (mRoomInfoResp == null || mRoomInfoResp!!.room_info == null) return
-
+ roomFragment!!.upRoomInfoData(mRoomInfoResp)
val typeId = mRoomInfoResp!!.room_info.type_id
if ("2" == typeId) {
- roomFragment!!.upRoomInfoData(mRoomInfoResp)
+
roomFragment!!.handleAuctionMessageEvent(messageEvent)
} else if ("3" == typeId || "4" == typeId || "1" == typeId || "8" == typeId) {
val labelId = mRoomInfoResp!!.room_info.label_id
@@ -1886,7 +1925,7 @@ class RoomActivity : BaseMvpActivity(),
}
}
}
-
+ CommonAppContext.getInstance().onlineMap.clear()
MvpPre!!.postRoomInfo(roomId)
}
@@ -1955,6 +1994,8 @@ class RoomActivity : BaseMvpActivity(),
if ("2" == labelId) {
roomFragment!!.KtvFragmentEvent(messageEvent)
} else if ("1" == labelId) {
+ mRoomInfoResp!!.room_info.pit_list.set(pitNumber.toInt()-1, getPitBean(messageEvent))
+ roomFragment!!.upRoomInfoData(mRoomInfoResp)
roomFragment!!.SingSongEvent(messageEvent)
}
} else if ("7" == typeId) {
@@ -2030,6 +2071,8 @@ class RoomActivity : BaseMvpActivity(),
if ("2" == labelId) {
roomFragment!!.KtvFragmentEvent(messageEvent)
} else if ("1" == labelId) {
+ mRoomInfoResp!!.room_info.pit_list.set(pitNumber.toInt()-1, getPitBean2(messageEvent,pitNumber))
+ roomFragment!!.upRoomInfoData(mRoomInfoResp)
roomFragment!!.SingSongEvent(messageEvent)
if (mRoomInfoResp!!.user_info.user_id == SpUtil.getUserId().toString() + "") {
ivSoundEffects(false)
@@ -2113,6 +2156,7 @@ class RoomActivity : BaseMvpActivity(),
if (text == null || text.fromUserInfo == null) return
if (text.fromUserInfo.user_id == SpUtil.getUserId()) {
+ LogUtils.e("退出房间")
MvpPre!!.quitRoom(roomId, SpUtil.getUserId().toString() + "")
}
}
@@ -3340,10 +3384,30 @@ class RoomActivity : BaseMvpActivity(),
mBinding!!.xlhRk.visibility = View.INVISIBLE
releaseCountDownTimer1()
}
-
+// tzblChanged()
// sharedViewModel.setDataForFragment(mRoomInfoResp);
//
}
+ protected fun tzblChanged() {
+// mBinding.dhv9.updateTzbl(SpUtil.getTzbl(roomId));
+
+ val userIds = StringBuilder()
+ for (i in 0 until mRoomInfoResp!!.room_info!!.pit_list!!.size) {
+ val userId = mRoomInfoResp!!.room_info!!.pit_list[i]!!.user_id!!
+ if (userId != null && userId != "0" && userId.isNotEmpty()) {
+ if (userIds.isNotEmpty()) {
+ userIds.append(",")
+ }
+ userIds.append(userId)
+ }
+ }
+
+ if (userIds.isNotEmpty() && roomId != null) {
+ MvpPre!!.userOnlineStatus(userIds.toString(), roomId)
+ } else {
+// updateWheatData()
+ }
+ }
private fun instView() { //隐藏视图
@@ -3623,7 +3687,16 @@ class RoomActivity : BaseMvpActivity(),
CommonAppContext.getInstance().isRoomJoininj = false
// 当Activity恢复时,重置标记
userLeaving = true
+ RetrofitClient.getInstance().roomUserReconnect(CommonAppContext.getInstance().playId)
+ if(CommonAppContext.getInstance().onConnectFailed){//判断是否有有过断开腾讯IM
+ CommonAppContext.getInstance().onConnectFailed=false
+ if (CommonAppContext.getInstance().playId!=null && !CommonAppContext.getInstance().playId.isEmpty()) { //判断是否有roomId
+ LogUtils.e("RoomActivity", "onResume playId:"+CommonAppContext.getInstance().playId)
+ MvpPre!!.postRoomInfo(CommonAppContext.getInstance().playId)//当有过断开,然后重新连接
+ LogUtils.e("RoomActivity", "onResume playId:"+CommonAppContext.getInstance().playId)
+ }
+ }
// // 正常启动或从后台恢复
// if (isInBackground) {
@@ -4064,7 +4137,14 @@ class RoomActivity : BaseMvpActivity(),
if (!list.isEmpty()) {
for (i in list.indices) {
val userOnlineStatusBean = list[i]
+
+ var userId = userOnlineStatusBean!!.user_id
+ CommonAppContext.getInstance().onlineMap.set(
+ userId?.toString() ?: "",
+ userOnlineStatusBean!!.is_online
+ )
EventBus.getDefault().post(userOnlineStatusBean)
+
}
}
}
@@ -4163,6 +4243,7 @@ class RoomActivity : BaseMvpActivity(),
ThreadUtils.cancel()
QXGiftPlayerManager.getInstance(applicationContext).destroyEffectSvga()
stopkeepLiveService() //停止service
+ CommonAppContext.getInstance().onlineMap.clear()
} catch (e: Exception) {
LogUtils.e("cleanupResources error: " + e.message)
}
@@ -4357,7 +4438,8 @@ class RoomActivity : BaseMvpActivity(),
* 停止保活
*/
private fun stopkeepLiveService() {
- val isStartService = isServiceExisted(this, "com.example.modulerroom.service.RoomPlayService")
+ val isStartService =
+ isServiceExisted(this, "com.example.moduleroom.service.RoomPlayService")
if (isStartService) {
val stopIntent = Intent(
this,
diff --git a/moduleroom/src/main/java/com/example/moduleroom/contacts/FriendshipRoomContacts.java b/moduleroom/src/main/java/com/example/moduleroom/contacts/FriendshipRoomContacts.java
index 3e756ee..dbdc3eb 100644
--- a/moduleroom/src/main/java/com/example/moduleroom/contacts/FriendshipRoomContacts.java
+++ b/moduleroom/src/main/java/com/example/moduleroom/contacts/FriendshipRoomContacts.java
@@ -4,8 +4,11 @@ import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
+import com.xscm.moduleutil.bean.UserOnlineStatusBean;
import com.xscm.moduleutil.bean.room.FriendUserBean;
+import java.util.List;
+
public class FriendshipRoomContacts {
public interface View extends IView {
void applyPit();
@@ -13,6 +16,8 @@ public class FriendshipRoomContacts {
void endFriend(FriendUserBean friendUserBean);
void createRelation();
+
+ void userOnlineStatus(List list);
}
public interface IRoomPre extends IPresenter {
@@ -25,5 +30,7 @@ public class FriendshipRoomContacts {
void endFriend(String friend_id,String room_id);
void createRelation(String room_id,String friend_id,String user1_id,String user2_id,String relation_id);
+
+ void userOnlineStatus(String userId, String roomid);
}
}
diff --git a/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java b/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java
index 38981eb..5c049fa 100644
--- a/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java
+++ b/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java
@@ -32,11 +32,14 @@ import com.example.moduleroom.dialog.RoomGiftDialogFragment;
import com.example.moduleroom.dialog.RoomOnlineDialogFragment;
import com.example.moduleroom.dialog.RoomUserInfoFragment;
import com.example.moduleroom.presenter.FriendshipRoomPresenter;
+import com.example.moduleroom.presenter.SingSongPresenter;
import com.orhanobut.logger.Logger;
import com.xscm.moduleutil.base.BaseRoomFragment;
+import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.RoomMessageEvent;
import com.xscm.moduleutil.bean.RoomRelationBean;
import com.xscm.moduleutil.bean.UserInfo;
+import com.xscm.moduleutil.bean.UserOnlineStatusBean;
import com.xscm.moduleutil.bean.room.FriendInfo;
import com.xscm.moduleutil.bean.room.FriendUserBean;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
@@ -48,6 +51,7 @@ import com.xscm.moduleutil.utils.ClickUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.utils.StringUtil;
import com.xscm.moduleutil.widget.RoomFriendshipWheatView;
+import com.xscm.moduleutil.widget.RoomSingSongWheatView;
import com.xscm.moduleutil.widget.SharedViewModel;
import java.util.ArrayList;
@@ -84,6 +88,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment userViewMap = new HashMap<>();
+
/// 底部的
@Override
public void applyPit() {
@@ -109,11 +114,30 @@ public class FriendshipRoomFragment extends BaseRoomFragment list) {
+ if (list != null) {
+ for (int i = 0; i < list.size(); i++) {
+ String userOnlineStatusBean = list.get(i).getUser_id();
+ CommonAppContext.getInstance().onlineMap.put(userOnlineStatusBean, list.get(i).getIs_online());
+
+ }
+ }
+ for (RoomFriendshipWheatView roomFriendshipWheatView : mWheatViews) {
+ if (roomFriendshipWheatView != null) {
+ RoomPitBean pitBean = roomFriendshipWheatView.pitBean;
+ roomFriendshipWheatView.setOnlineStatus();
+ }
+ }
+ }
+
private SharedViewModel sharedViewModel;
@Nullable
@Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup
+ container, @Nullable Bundle savedInstanceState) {
// sharedViewModel = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
//
// // 观察专门给子Fragment的数据
@@ -127,7 +151,8 @@ public class FriendshipRoomFragment extends BaseRoomFragment 0) {
+ userIds.append(",");
+ }
+ userIds.append(userId);
+ }
+ }
+ }
+
+ if (userIds.length() > 0 && roomId != null) {
+ if (MvpPre == null) {
+ MvpPre = new FriendshipRoomPresenter(this, getActivity());
+ }
+ MvpPre.userOnlineStatus(userIds.toString(), roomId);
+ } else {
+// updateWheatData();
+ }
+ }
+
public void upRoomInfo(RoomInfoResp roomInfoResp) {
this.roomInfoResp = roomInfoResp;
}
@@ -270,26 +319,29 @@ public class FriendshipRoomFragment extends BaseRoomFragment pitList = roomInfoResp.getRoom_info().getPit_list();
- if (pitList != null && !pitList.isEmpty()) {
- try {
- RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1);
- pitBean.setUser_id(userId + "");
- pitBean.setAvatar(fromUserInfo.getAvatar());
- pitBean.setNickname(fromUserInfo.getNickname());
- pitBean.setSex(fromUserInfo.getSex() + "");
- pitBean.setCharm(fromUserInfo.getCharm());
- pitBean.setDress(fromUserInfo.getDress());
- pitList.set(Integer.parseInt(pitNumber) - 1, pitBean);
- if (userId==SpUtil.getUserId() && pitNumber.equals("9")){
- myPitNumber=9;
- configGameOptionBtn();
+// List pitList = roomInfoResp.getRoom_info().getPit_list();
+// if (pitList != null && !pitList.isEmpty()) {
+// try {
+// RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1);
+ RoomPitBean pitBean = mWheatViews.get(Integer.parseInt(pitNumber) - 1).pitBean;
+ pitBean.setUser_id(userId + "");
+ pitBean.setAvatar(fromUserInfo.getAvatar());
+ pitBean.setNickname(fromUserInfo.getNickname());
+ pitBean.setSex(fromUserInfo.getSex() + "");
+ pitBean.setCharm(fromUserInfo.getCharm());
+ pitBean.setDress(fromUserInfo.getDress());
+// pitList.set(Integer.parseInt(pitNumber) - 1, pitBean);
+ mWheatViews.get(Integer.parseInt(pitNumber) - 1).pitBean = pitBean;
+ if (userId == SpUtil.getUserId() && pitNumber.equals("9")) {
+ myPitNumber = 9;
+ configGameOptionBtn();
// if (getActivity() instanceof RoomActivity) {
// ((RoomActivity) getActivity()).ivSoundEffects(true);
// }
- }
- for (int i = 0; i < mWheatViews.size(); i++){
- if (i==Integer.parseInt(pitNumber) - 1){
- mWheatViews.get(i).setData(pitBean);
- break;
- }
- }
-
-
- } catch (NumberFormatException e) {
- // Handle exception
+ }
+ for (int i = 0; i < mWheatViews.size(); i++) {
+ if (i == Integer.parseInt(pitNumber) - 1) {
+ mWheatViews.get(i).setData(pitBean);
+ break;
}
}
+
+
+// } catch (NumberFormatException e) {
+// // Handle exception
+// }
+// }
+
initUserViewMap();
}
- public void event1004(RoomMessageEvent messageEvent){
+ public void event1004(RoomMessageEvent messageEvent) {
String pitNumber = messageEvent.getText().getPit_number();
- List pitList = roomInfoResp.getRoom_info().getPit_list();
- if (pitList != null && !pitList.isEmpty()) {
- try {
- RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1);
- pitBean.setUser_id("");
- pitBean.setAvatar("");
- pitBean.setNickname("");
- pitBean.setSex("");
- pitBean.setCharm("");
- pitBean.setDress("");
- pitList.set(Integer.parseInt(pitNumber) - 1, pitBean);
- if (pitNumber.equals("9")){
- myPitNumber=0;
- configGameOptionBtn();
+// List pitList = roomInfoResp.getRoom_info().getPit_list();
+// if (pitList != null && !pitList.isEmpty()) {
+// try {
+// RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1);
+ RoomPitBean pitBean = mWheatViews.get(Integer.parseInt(pitNumber) - 1).pitBean;
+ pitBean.setUser_id("");
+ pitBean.setAvatar("");
+ pitBean.setNickname("");
+ pitBean.setSex("");
+ pitBean.setCharm("");
+ pitBean.setDress("");
+ mWheatViews.get(Integer.parseInt(pitNumber) - 1).pitBean = pitBean;
+ if (pitNumber.equals("9")) {
+ myPitNumber = 0;
+ configGameOptionBtn();
// if (getActivity() instanceof RoomActivity) {
// ((RoomActivity) getActivity()).ivSoundEffects(false);
// }
- }
- for (int i = 0; i < mWheatViews.size(); i++){
- if (i==Integer.parseInt(pitNumber) - 1){
- mWheatViews.get(i).setData(pitBean);
- break;
- }
- }
- } catch (NumberFormatException e) {
- // Handle exception
+ }
+ for (int i = 0; i < mWheatViews.size(); i++) {
+ if (i == Integer.parseInt(pitNumber) - 1) {
+ mWheatViews.get(i).setData(pitBean);
+ break;
}
+// }
+// } catch (NumberFormatException e) {
+// // Handle exception
+// }
}
initUserViewMap();
}
+
public void event1035(RoomMessageEvent message) {
for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) {
@@ -510,28 +567,69 @@ public class FriendshipRoomFragment extends BaseRoomFragment 10) {
- continue;
- }
- RoomFriendshipWheatView object = mWheatViews.get(Integer.parseInt(roomPitBean.getPit_number()) - 1);
+ public void event1039(RoomMessageEvent messageEvent) {
- if (object != null) {
- object.setData(roomPitBean);
- } else {
- continue;
+ String fromPit = messageEvent.getText().getFrom_pit_number();
+ String toPitNumber = messageEvent.getText().getTo_pit_number();
+ if (fromPit.equals("") || toPitNumber.equals("")) {
+ return;
+ }
+ RoomFriendshipWheatView fromWheatView = mWheatViews.get(Integer.parseInt(fromPit) - 1);
+ RoomFriendshipWheatView toWheatView = mWheatViews.get(Integer.parseInt(toPitNumber) - 1);
+ RoomPitBean fromPitBean = fromWheatView.pitBean;
+ RoomPitBean toPitBean = toWheatView.pitBean;
+ String tmpNumber = fromPitBean.getPit_number();
+ fromPitBean.setPit_number(toPitBean.getPit_number());
+// roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(fromPit) - 1, fromPitBean);
+ toPitBean.setPit_number(tmpNumber);
+ toWheatView.setData(fromPitBean);
+ fromWheatView.setData(toPitBean);
+ for (RoomFriendshipWheatView view : mWheatViews) {
+ if (view == null) {
+ return;
+ }
+ if (view.pitBean != null && view.pitBean.getUser_id() != null) {
+ if (view.pitBean.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
+ if (!view.pitBean.getPit_number().equals(toPitNumber)) {
+ RoomPitBean bean = view.pitBean;
+ bean.setCharm("");
+ bean.setUser_id("");
+ bean.setDress("");
+ bean.setAvatar("");
+ bean.setNickname("");
+ bean.setSex("");
+ bean.setUser_code("");
+ bean.setDress_picture("");
+ view.setData(bean);
+// roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(view.pitBean.getPit_number()) - 1, bean);
+ }
+ }
}
}
+
+
+// for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) {
+// RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i);
+// if (roomPitBean.getPit_number().equals("7") || roomPitBean.getPit_number().equals("8")) {
+// continue;
+// }
+// if (Integer.parseInt(!roomPitBean.getPit_number().isEmpty() ? roomPitBean.getPit_number() : "0") > 10) {
+// continue;
+// }
+//
+// RoomFriendshipWheatView object = mWheatViews.get(Integer.parseInt(roomPitBean.getPit_number()) - 1);
+//
+// if (object != null) {
+// object.setData(roomPitBean);
+// } else {
+// continue;
+// }
+// }
}
// 在 initData() 方法中初始化映射关系
- //初始化对应的map
+//初始化对应的map
private void initUserViewMap() {
userViewMap.clear();
// 注意:这里需要确保 pitBean 和 getUser_id() 在初始化时已经设置
@@ -545,6 +643,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment toUserInfos = messageEvent.getText().getToUserInfos();
@@ -948,7 +1048,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment heartLists) {
- if (roomInfoResp.getFriend_info()!=null) {
+ if (roomInfoResp.getFriend_info() != null) {
// 更新心动数值显示
roomInfoResp.getFriend_info().setHeart_list(heartLists);
}
@@ -962,9 +1062,9 @@ public class FriendshipRoomFragment extends BaseRoomFragment pitArr) { // 使用实际的麦位模型类
- boolean isHaveMe=false;
+ boolean isHaveMe = false;
if (myPitNumber == 9 || myPitNumber == 10) {
- isHaveMe=true;
+ isHaveMe = true;
} else {
myPitNumber = -1;
}
@@ -983,16 +1083,16 @@ public class FriendshipRoomFragment extends BaseRoomFragment 0 && mBinding.wheatView6.pitBean != null) {
// 弹出礼物视图
songGift(pitBean);
- }else {
+ } else {
ToastUtils.showShort("暂未有心动连线,快去送TA礼物");
}
return;
}
- if (pitBean.getPit_number().equals("2")){
+ if (pitBean.getPit_number().equals("2")) {
if (md1 != null && md1.getHeartNum() > 0 && mBinding.wheatView5.pitBean != null) {
songGift(pitBean);
- }else {
+ } else {
ToastUtils.showShort("暂未有心动连线,快去送TA礼物");
}
return;
}
- if (pitBean.getPit_number().equals("3")){
+ if (pitBean.getPit_number().equals("3")) {
if (md3 != null && md3.getHeartNum() > 0 && mBinding.wheatView4.pitBean != null) {
songGift(pitBean);
- }else {
+ } else {
ToastUtils.showShort("暂未有心动连线,快去送TA礼物");
}
return;
}
- if (pitBean.getPit_number().equals("4")){
+ if (pitBean.getPit_number().equals("4")) {
if (md3 != null && md3.getHeartNum() > 0 && mBinding.wheatView3.pitBean != null) {
songGift(pitBean);
- }else {
+ } else {
ToastUtils.showShort("暂未有心动连线,快去送TA礼物");
}
return;
}
- if (pitBean.getPit_number().equals("5")){
+ if (pitBean.getPit_number().equals("5")) {
if (md1 != null && md1.getHeartNum() > 0 && mBinding.wheatView2.pitBean != null) {
songGift(pitBean);
- }else {
+ } else {
ToastUtils.showShort("暂未有心动连线,快去送TA礼物");
}
return;
}
- if (pitBean.getPit_number().equals("6")){
+ if (pitBean.getPit_number().equals("6")) {
if (md2 != null && md2.getHeartNum() > 0 && mBinding.wheatView1.pitBean != null) {
songGift(pitBean);
- }else {
+ } else {
ToastUtils.showShort("暂未有心动连线,快去送TA礼物");
}
return;
@@ -1309,7 +1410,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment list) {
+// if (list != null) {
+// for (int i = 0; i < list.size(); i++) {
+// if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
+// wheatLayoutSingManager.updateSingleOnlineWheat(list.get(i));
+// } else {
+// wheatLayoutManager1.updateSingleOnlineWheat(list.get(i));
+// }
+//// EventBus.getDefault().post(list.get(i));
+// }
+// }
+
if (list != null) {
for (int i = 0; i < list.size(); i++) {
- if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
- wheatLayoutSingManager.updateSingleOnlineWheat(list.get(i));
- } else {
- wheatLayoutManager1.updateSingleOnlineWheat(list.get(i));
- }
-// EventBus.getDefault().post(list.get(i));
+ String userOnlineStatusBean = list.get(i).getUser_id();
+ CommonAppContext.getInstance().onlineMap.put(userOnlineStatusBean, list.get(i).getIs_online());
}
}
}
@@ -1337,9 +1346,10 @@ public class SingSongFragment extends BaseRoomFragment>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addDisposable(d);
+ }
+
+ @Override
+ public void onNext(List userOnlineStatusBean) {
+ if (MvpRef==null){
+ MvpRef=new WeakReference<>(mView);
+ }
+ MvpRef.get().userOnlineStatus(userOnlineStatusBean);
+ }
+ });
+ }
+
}
diff --git a/moduleroom/src/main/java/com/example/moduleroom/service/ForegroundService.kt b/moduleroom/src/main/java/com/example/moduleroom/service/ForegroundService.kt
index 1b2ad0c..413820c 100644
--- a/moduleroom/src/main/java/com/example/moduleroom/service/ForegroundService.kt
+++ b/moduleroom/src/main/java/com/example/moduleroom/service/ForegroundService.kt
@@ -4,6 +4,7 @@ import android.app.Service
import android.content.Intent
import android.os.IBinder
import android.util.Log
+import com.tencent.imsdk.v2.V2TIMManager
import java.util.*
//前台服务
diff --git a/tuichat/src/main/AndroidManifest.xml b/tuichat/src/main/AndroidManifest.xml
index 1c09e94..62a3619 100644
--- a/tuichat/src/main/AndroidManifest.xml
+++ b/tuichat/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
-
+
@@ -93,7 +94,12 @@
-
+
\ No newline at end of file