diff --git a/common/src/main/java/com/yunbao/common/bean/RoomMicStatusModel.java b/common/src/main/java/com/yunbao/common/bean/RoomMicStatusModel.java new file mode 100644 index 000000000..6292156a5 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/RoomMicStatusModel.java @@ -0,0 +1,27 @@ +package com.yunbao.common.bean; + +import com.google.gson.annotations.SerializedName; + +public class RoomMicStatusModel extends BaseModel{ + + @SerializedName("mic_status") + private String micStatus; + @SerializedName("im_status") + private String imStatus; + + public String getMicStatus() { + return micStatus; + } + + public void setMicStatus(String micStatus) { + this.micStatus = micStatus; + } + + public String getImStatus() { + return imStatus; + } + + public void setImStatus(String imStatus) { + this.imStatus = imStatus; + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/LiberalBattlePassPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/LiberalBattlePassPopupWindow.java index dd57c1503..d01dc42a7 100644 --- a/common/src/main/java/com/yunbao/common/dialog/LiberalBattlePassPopupWindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/LiberalBattlePassPopupWindow.java @@ -14,6 +14,7 @@ import com.yunbao.common.R; import com.yunbao.common.http.ResponseModel; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.live.LiveNetManager; +import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; @@ -75,6 +76,7 @@ public class LiberalBattlePassPopupWindow extends CenterPopupView { if (mPassCallback != null) { mPassCallback.onCallback(data.getData().getCode(), data.getData().getMsg()); } + IMLoginManager.get(getContext()).upDataUserInfo(); } @Override diff --git a/common/src/main/java/com/yunbao/common/dialog/SudGameInputPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/SudGameInputPopupWindow.java index 08c1f08d5..44444ea1e 100644 --- a/common/src/main/java/com/yunbao/common/dialog/SudGameInputPopupWindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/SudGameInputPopupWindow.java @@ -48,15 +48,16 @@ public class SudGameInputPopupWindow extends BottomPopupView { ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.send), new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { - dialog.dismiss(); + if (sudGameInputCallBack != null) { - String textMessageStr = textMessage.getText().toString(); + String textMessageStr = textMessage.getText().toString().trim(); if (!TextUtils.isEmpty(textMessageStr)) { if (textMessageStr.length() > 100) { ToastUtil.show(WordUtil.isNewZh() ? "超出字數限制" : "Exceed word limit"); } else { sudGameInputCallBack.sendMessage(textMessageStr); } + dialog.dismiss(); } else { ToastUtil.show(WordUtil.getNewString(R.string.cannot_be_empty)); } diff --git a/common/src/main/java/com/yunbao/common/dialog/SudGameSmallPopupPindow.java b/common/src/main/java/com/yunbao/common/dialog/SudGameSmallPopupPindow.java index 5c2d527d8..e7bec0482 100644 --- a/common/src/main/java/com/yunbao/common/dialog/SudGameSmallPopupPindow.java +++ b/common/src/main/java/com/yunbao/common/dialog/SudGameSmallPopupPindow.java @@ -48,7 +48,7 @@ public class SudGameSmallPopupPindow extends AttachPopupView { return; } if (sudGameUserModel.getMicStatus() == 3) { - ToastUtil.show("对方未开麦!"); + ToastUtil.show(WordUtil.isNewZh() ? "對方未開麥!" : "The other side did not turn on the microphone"); return; } if (!mute) { diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index 6d0c57c72..fc1f78a04 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -58,6 +58,7 @@ import com.yunbao.common.bean.RedPacketDetailsBean; import com.yunbao.common.bean.RedPacketGiftModel; import com.yunbao.common.bean.RedPacketInfoModel; import com.yunbao.common.bean.RedPacketListBean; +import com.yunbao.common.bean.RoomMicStatusModel; import com.yunbao.common.bean.SearchModel; import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.SlideInBannerModel; @@ -1146,12 +1147,19 @@ public interface PDLiveApi { @GET("/api/public/?service=Sudgameserver.joinMic") Observable>> joinMic(@Query("room_id") String roomId); + @GET("/api/public/?service=Sudgameserver.onMic") Observable>> onMic(@Query("room_id") String roomId); + @GET("/api/public/?service=Sudgameserver.offMic") Observable>> offMic(@Query("room_id") String roomId); + @GET("/api/public/?service=Sudgameserver.leaveMic") Observable>> leaveMic(@Query("room_id") String roomId); + @GET("/api/public/?service=Sudgameserver.getRoomMicData") Observable>> getRoomMicData(@Query("room_id") String roomId); + + @GET("/api/public/?service=Sudgameserver.getRoomMicStatus") + Observable> getRoomMicStatus(); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index 2a27a2328..040407c0d 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -56,6 +56,7 @@ import com.yunbao.common.bean.RedPacketDetailsBean; import com.yunbao.common.bean.RedPacketGiftModel; import com.yunbao.common.bean.RedPacketInfoModel; import com.yunbao.common.bean.RedPacketListBean; +import com.yunbao.common.bean.RoomMicStatusModel; import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.StarChallengeStatusModel; import com.yunbao.common.bean.SudGameUserModel; @@ -2908,6 +2909,30 @@ public class LiveNetManager { }).isDisposed(); } + public void getRoomMicStatus(HttpCallback callback) { + API.get().pdLiveApi(mContext) + .getRoomMicStatus() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer>() { + @Override + public void accept(ResponseModel roomMicStatusModelResponseModel) throws Exception { + if (callback != null) { + callback.onSuccess(roomMicStatusModelResponseModel.getData().getInfo()); + } + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + throwable.printStackTrace(); + if (callback != null) { + callback.onError(mContext.getString(R.string.net_error)); + } + } + }).isDisposed(); + + } + /** * 直播间取消网络请求 */ diff --git a/common/src/main/java/com/yunbao/common/manager/imrongcloud/GameMicManager.java b/common/src/main/java/com/yunbao/common/manager/imrongcloud/GameMicManager.java index efd2497e3..09da6f188 100644 --- a/common/src/main/java/com/yunbao/common/manager/imrongcloud/GameMicManager.java +++ b/common/src/main/java/com/yunbao/common/manager/imrongcloud/GameMicManager.java @@ -245,7 +245,7 @@ public class GameMicManager { try { - getView().onSubscribeSuccess(userID,mute,position); + getView().onSubscribeSuccess(userID, mute, position); } catch (IllegalStateException e) { e.printStackTrace(); } @@ -355,35 +355,39 @@ public class GameMicManager { RCRTCEngine.getInstance().getDefaultAudioStream().setAudioQuality(RCRTCParamsType.AudioQuality.MUSIC_HIGH, RCRTCParamsType.AudioScenario.MUSIC_CHATROOM); } - public void joinRoom(String roomId) { + public void joinRoom(String roomId, boolean imOff) { mRoomID = roomId; - RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create() - // 根据实际场景,选择音视频直播:LIVE_AUDIO_VIDEO 或音频直播:LIVE_AUDIO - .setRoomType(RCRTCRoomType.MEETING) + if (imOff) { - .build(); - RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback() { - @Override - public void onSuccess(final RCRTCRoom rcrtcRoom) { - GameMicManager.this.mRtcRoom = rcrtcRoom; - // 注册房间回调 - rcrtcRoom.registerRoomListener(roomEventsListener); - try { - getView().onJoinRoomSuccess(rcrtcRoom); - } catch (IllegalStateException e) { - e.printStackTrace(); - } - } + RCRTCRoomConfig roomConfig = RCRTCRoomConfig.Builder.create() + // 根据实际场景,选择音视频直播:LIVE_AUDIO_VIDEO 或音频直播:LIVE_AUDIO + .setRoomType(RCRTCRoomType.MEETING) - @Override - public void onFailed(RTCErrorCode rtcErrorCode) { - try { - getView().onJoinRoomFailed(rtcErrorCode); - } catch (IllegalStateException e) { - e.printStackTrace(); + .build(); + RCRTCEngine.getInstance().joinRoom("v" + roomId, roomConfig, new IRCRTCResultDataCallback() { + @Override + public void onSuccess(final RCRTCRoom rcrtcRoom) { + GameMicManager.this.mRtcRoom = rcrtcRoom; + // 注册房间回调 + rcrtcRoom.registerRoomListener(roomEventsListener); + try { + getView().onJoinRoomSuccess(rcrtcRoom); + } catch (IllegalStateException e) { + e.printStackTrace(); + } } - } - }); + + @Override + public void onFailed(RTCErrorCode rtcErrorCode) { + try { + getView().onJoinRoomFailed(rtcErrorCode); + } catch (IllegalStateException e) { + e.printStackTrace(); + } + } + }); + } + RongChatRoomClient.getInstance().joinChatRoom("v" + roomId, -1, new IRongCoreCallback.OperationCallback() { @Override public void onSuccess() { @@ -490,7 +494,7 @@ public class GameMicManager { @Override public void onError(Message message, RongIMClient.ErrorCode errorCode) { - + Log.i("tx", "发送成功"+errorCode.toString()); } }); } @@ -515,9 +519,11 @@ public class GameMicManager { void onSubscribeSuccess(List inputStreamList); void onSubscribeFailed(); - void onSubscribeSuccess(String userID,boolean mute, int position); + + void onSubscribeSuccess(String userID, boolean mute, int position); void onSubscribeFailed(String userID); + void onUserJoined(RCRTCRemoteUser rcrtcRemoteUser); void onUserLeft(RCRTCRemoteUser rcrtcRemoteUser); diff --git a/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java b/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java index 1b69c3fe6..01776f158 100644 --- a/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java +++ b/common/src/main/java/com/yunbao/common/views/LiveSudGamePopup.java @@ -98,8 +98,10 @@ public class LiveSudGamePopup extends BottomPopupView { ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.exit), new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { + gameViewModel.onDestroy(); Bus.get().post(new LiveSudGamePopupShowOrHideEvent().setType(2)); + dismiss(); } }); ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.sud_history), new ViewClicksAntiShake.ViewClicksCallBack() { diff --git a/lib_google/src/main/java/com/shayu/lib_google/utils/GoogleBillingManage.java b/lib_google/src/main/java/com/shayu/lib_google/utils/GoogleBillingManage.java index 492603269..0ba4267aa 100644 --- a/lib_google/src/main/java/com/shayu/lib_google/utils/GoogleBillingManage.java +++ b/lib_google/src/main/java/com/shayu/lib_google/utils/GoogleBillingManage.java @@ -204,10 +204,6 @@ public class GoogleBillingManage implements PurchasesUpdatedListener { } } - public boolean getGoogleService() { - int code = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(mContext); - return code == 0; - } int resultCode = -1; String resultToken = ""; diff --git a/live/src/main/java/com/yunbao/live/activity/SudGameActivity.java b/live/src/main/java/com/yunbao/live/activity/SudGameActivity.java index 9c9f5d7ea..1a24684c3 100644 --- a/live/src/main/java/com/yunbao/live/activity/SudGameActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/SudGameActivity.java @@ -27,6 +27,7 @@ import com.yunbao.common.bean.CreateSudRoomModel; import com.yunbao.common.bean.CustomSidebarChildModel; import com.yunbao.common.bean.CustomSidebarInfoModel; import com.yunbao.common.bean.HttpCallbackModel; +import com.yunbao.common.bean.RoomMicStatusModel; import com.yunbao.common.bean.SudGameChatImModel; import com.yunbao.common.bean.SudGameUserModel; import com.yunbao.common.dialog.SudGameInputPopupWindow; @@ -83,6 +84,7 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti private SudGameUserListAdapter sudGameUserListAdapter; private ProcessResultUtil mProcessResultUtil; private List muteUser = new ArrayList<>(); + private boolean imOff; @Override protected int getLayoutId() { @@ -118,36 +120,74 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti } }); - gameMicManager = new GameMicManager(); - gameMicManager.attachView(this); - gameMicManager.config(this); - gameMicManager.joinRoom(mLiveUid); + // 设置禁用麦克风采集 RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); ImgLoader.display(mContext, R.mipmap.icon_game_close_wheat, gameCloseWheat); gameCloseWheat.setVisibility(View.INVISIBLE); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - if (!mProcessResultUtil.checkPermissions(new String[]{Manifest.permission.RECORD_AUDIO})) { - ToastUtil.show("拒绝权限将无法使用上麦功能"); - mProcessResultUtil.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, new Runnable() { - @Override - public void run() { - } - }); - } - } - }, 1500); mProcessResultUtil = new ProcessResultUtil(this); + LiveNetManager.get(mContext) + .getRoomMicStatus(new HttpCallback() { + @Override + public void onSuccess(RoomMicStatusModel data) { + gameMicManager = new GameMicManager(); + gameMicManager.attachView(SudGameActivity.this); + gameMicManager.config(SudGameActivity.this); + //语音 + if (TextUtils.equals(data.getMicStatus(), "1")) { + imOff = true; + gameSeat.setVisibility(View.VISIBLE); + userList.setVisibility(View.VISIBLE); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + if (!mProcessResultUtil.checkPermissions(new String[]{Manifest.permission.RECORD_AUDIO})) { + ToastUtil.show("拒绝权限将无法使用上麦功能"); + mProcessResultUtil.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, new Runnable() { + @Override + public void run() { + + } + }); + } + } + }, 1500); + } else { + imOff = false; + gameSeat.setVisibility(View.GONE); + userList.setVisibility(View.GONE); + } + if (TextUtils.equals(data.getImStatus(), "1")) { + findViewById(R.id.game_review_input).setVisibility(View.VISIBLE); + chatList.setVisibility(View.VISIBLE); + } else { + findViewById(R.id.game_review_input).setVisibility(View.GONE); + chatList.setVisibility(View.GONE); + } + gameMicManager.joinRoom(mLiveUid, imOff); + } + + @Override + public void onError(String error) { + imOff = false; + //文字 + findViewById(R.id.game_review_input).setVisibility(View.GONE); + chatList.setVisibility(View.GONE); + //语音 + gameCloseWheat.setVisibility(View.GONE); + gameSeat.setVisibility(View.GONE); + userList.setVisibility(View.GONE); + } + }); } @Override protected void onDestroy() { + LiveNetManager.get(mContext) .leaveMic(mLiveUid, new HttpCallback() { @Override @@ -160,9 +200,13 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti } }); + + if (gameMicManager != null) { + gameMicManager.leaveRoom(); + gameMicManager.detachView(); + } Bus.getOff(this); - gameMicManager.leaveRoom(); - gameMicManager.detachView(); + super.onDestroy(); } @@ -256,28 +300,30 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.game_seat), new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { - if (mProcessResultUtil.checkPermissions(new String[]{Manifest.permission.RECORD_AUDIO})) { - if (publishDefault) { - disable = true; - // 设置禁用麦克风采集 - RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); - ImgLoader.display(mContext, R.mipmap.icon_game_close_wheat, gameCloseWheat); - gameMicManager.unPublishStreams(); - } else { - if (sudGameUserListAdapter.isMicMax()) { - ToastUtil.show(WordUtil.isNewZh() ? "上麥人數最大7人" : "The maximum number of people on the microphone is 7"); + if (imOff && gameMicManager != null) { + if (mProcessResultUtil.checkPermissions(new String[]{Manifest.permission.RECORD_AUDIO})) { + if (publishDefault) { + disable = true; + // 设置禁用麦克风采集 + RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); +// ImgLoader.display(mContext, R.mipmap.icon_game_close_wheat, gameCloseWheat); + gameMicManager.unPublishStreams(); } else { - gameMicManager.publishDefaultAVStream(); - } + if (sudGameUserListAdapter.isMicMax()) { + ToastUtil.show(WordUtil.isNewZh() ? "上麥人數最大7人" : "The maximum number of people on the microphone is 7"); + } else { + gameMicManager.publishDefaultAVStream(); + } + } + } else { + mProcessResultUtil.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, new Runnable() { + @Override + public void run() { + + } + }); } - } else { - mProcessResultUtil.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, new Runnable() { - @Override - public void run() { - - } - }); } @@ -286,54 +332,57 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti ViewClicksAntiShake.clicksAntiShake(gameCloseWheat, new ViewClicksAntiShake.ViewClicksCallBack() { @Override public void onViewClicks() { - if (mProcessResultUtil.checkPermissions(new String[]{Manifest.permission.RECORD_AUDIO})) { - if (disable) { - disable = false; - // 设置禁用麦克风采集 - RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); - ImgLoader.display(mContext, R.mipmap.icon_game_open_wheat, gameCloseWheat); - LiveNetManager.get(mContext) - .onMic(mLiveUid, new HttpCallback() { - @Override - public void onSuccess(HttpCallbackModel data) { + if (imOff && gameMicManager != null) { + if (mProcessResultUtil.checkPermissions(new String[]{Manifest.permission.RECORD_AUDIO})) { + if (disable) { + disable = false; + // 设置禁用麦克风采集 + RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); + ImgLoader.display(mContext, R.mipmap.icon_game_open_wheat, gameCloseWheat); + LiveNetManager.get(mContext) + .onMic(mLiveUid, new HttpCallback() { + @Override + public void onSuccess(HttpCallbackModel data) { - } + } - @Override - public void onError(String error) { + @Override + public void onError(String error) { - } - }); - ToastUtil.show(WordUtil.isNewZh() ? "麥克風已開啟" : "Microphone turned on"); - } else { - disable = true; - // 设置禁用麦克风采集 - RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); - ImgLoader.display(mContext, R.mipmap.icon_game_close_wheat, gameCloseWheat); - LiveNetManager.get(mContext) - .offMic(mLiveUid, new HttpCallback() { - @Override - public void onSuccess(HttpCallbackModel data) { + } + }); + ToastUtil.show(WordUtil.isNewZh() ? "麥克風已開啟" : "Microphone turned on"); + } else { + disable = true; + // 设置禁用麦克风采集 + RCRTCEngine.getInstance().getDefaultAudioStream().setMicrophoneDisable(disable); + ImgLoader.display(mContext, R.mipmap.icon_game_close_wheat, gameCloseWheat); + LiveNetManager.get(mContext) + .offMic(mLiveUid, new HttpCallback() { + @Override + public void onSuccess(HttpCallbackModel data) { - } + } - @Override - public void onError(String error) { - - } - }); - ToastUtil.show(WordUtil.isNewZh() ? "麥克風已關閉" : "Microphone turned off"); - } - - } else { - mProcessResultUtil.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, new Runnable() { - @Override - public void run() { + @Override + public void onError(String error) { + } + }); + ToastUtil.show(WordUtil.isNewZh() ? "麥克風已關閉" : "Microphone turned off"); } - }); + + } else { + mProcessResultUtil.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, new Runnable() { + @Override + public void run() { + + } + }); + } } + } }); ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.game_review_input), new ViewClicksAntiShake.ViewClicksCallBack() { @@ -406,7 +455,7 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti LiveNetManager.get(mContext).checkRemainingBalance(mCreateSudRoomModel.getSudGameRoomId(), new HttpCallback() { @Override public void onSuccess(CheckRemainingBalance data) { - if (TextUtils.equals(String.valueOf(data.getGoldenBeanRemainingBalance() ),"1")) { + if (TextUtils.equals(String.valueOf(data.getGoldenBeanRemainingBalance()), "1")) { gameViewModel.sudFSTAPPDecorator.notifyAPPCommonSelfIn(true, event.getSeatIndex(), true, 1); } else { if (IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) { @@ -466,6 +515,7 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti LiveNetManager.get(mContext).getRoomMicData(mLiveUid, new HttpCallback>() { @Override public void onSuccess(List data) { + gameMicManager.refreshStreams(data); sudGameUserListAdapter.refreshSudGameUserList(data, muteUser); } @@ -481,7 +531,7 @@ public class SudGameActivity extends AbsActivity implements GameMicManager.Meeti @Override public void onJoinRoomFailed(RTCErrorCode rtcErrorCode) { - ToastUtil.show("加入失败 "+rtcErrorCode.toString()); + ToastUtil.show("加入失败 " + rtcErrorCode.toString()); } @Override diff --git a/main/src/main/java/com/yunbao/main/fragment/BattlePassMissionFragment.java b/main/src/main/java/com/yunbao/main/fragment/BattlePassMissionFragment.java index 781b51200..bfa6b0d28 100644 --- a/main/src/main/java/com/yunbao/main/fragment/BattlePassMissionFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/BattlePassMissionFragment.java @@ -78,7 +78,6 @@ public class BattlePassMissionFragment extends BaseFragment { return; } long maxExp=userInfoBean.getMaxLevelExp() - userInfoBean.getBattlePassExp(); - ToastUtil.showDebug("max = "+maxExp+"|"+userInfoBean.getNextLevelExp()); new XPopup.Builder(getContext()) .enableDrag(false)