1:修改换麦逻辑

2:添加闪屏不在直接关闭
This commit is contained in:
2025-09-29 09:05:02 +08:00
parent 046a24a842
commit 72ae93fbb2
22 changed files with 636 additions and 279 deletions

View File

@@ -124,7 +124,7 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
//initLocation();
}
});
V2TIMManager.getInstance().addIMSDKListener(imSdkListener);
// V2TIMManager.getInstance().addIMSDKListener(imSdkListener);
}
@@ -136,12 +136,15 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
@Override
public void onConnectSuccess() {//重连成功
if (CommonAppContext.getInstance().playId!=null){
LogUtils.e("@@@", "重连成功");
RetrofitClient.getInstance().roomUserReconnect(CommonAppContext.getInstance().playId);
}
}
@Override
public void onConnectFailed(int code, String error) {
LogUtils.e("@@@", "断开连接");
CommonAppContext.getInstance().onConnectFailed=true;
}
@Override

View File

@@ -42,6 +42,7 @@ import com.xscm.moduleutil.bean.UserBean;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.event.AppLifecycleEvent;
import com.xscm.moduleutil.event.UnreadCountEvent;
import com.xscm.moduleutil.http.RetrofitClient;
import com.xscm.moduleutil.interfaces.AppLifecycleUtil;
import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.rtc.AgoraManager;
@@ -52,6 +53,7 @@ import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.utils.UtilConfig;
import com.xscm.moduleutil.utils.config.EnvironmentEnum;
import com.xscm.moduleutil.utils.config.EnvironmentPrefs;
import com.xscm.moduleutil.utils.IMServiceManager;
import com.xscm.moduleutil.widget.CommonAppConfig;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
@@ -70,7 +72,9 @@ import org.greenrobot.eventbus.EventBus;
import java.lang.reflect.Method;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
@@ -126,6 +130,17 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
private AppStateListener appStateListener;
private boolean isListeningUnreadCount = false;
public boolean onConnectFailed=false;//是否重连
public Map<String, Integer> onlineMap=new HashMap<>();
public void setOnlineMap(Map<String, Integer> onlineMap) {
this.onlineMap = onlineMap;
}
public Map<String, Integer> 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");
}
}

View File

@@ -102,6 +102,10 @@ public interface ApiServer {
@POST(Constants.BIND_MOBILE)
Call<BaseModel<String>> mobileView2(@Field("new_mobile") String new_mobile, @Field("sms_code") String sms_code);
@FormUrlEncoded
@POST(Constants.USER_ROOM_BACK)
Call<ResponseBody> userRoomBack(@Field("room_id")String room_id,@Field("type")String type);
@FormUrlEncoded
@POST(Constants.USER_LOGIN)
Call<BaseModel<List<UserBean>>> userLogin(@Field("user_login") String user_login, @Field("password") String password);

View File

@@ -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<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
public void mobileView2(String new_mobile, String sms_code, BaseObserver<String> observer) {
sApiServer.mobileView2(new_mobile, sms_code).enqueue(new Callback<BaseModel<String>>() {
@Override

View File

@@ -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) {

View File

@@ -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);
}
}

View File

@@ -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";//用户在房间内切后台保留数据操作

View File

@@ -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) {

View File

@@ -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();
}
}
}

View File

@@ -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(); // 刷新数据
}
}
}