diff --git a/BaseModule/src/main/assets/room_wish_crystal_animation.svga b/BaseModule/src/main/assets/room_wish_crystal_animation.svga new file mode 100644 index 00000000..b9dbea73 Binary files /dev/null and b/BaseModule/src/main/assets/room_wish_crystal_animation.svga differ diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/BeforeJoinRoomCheckBean.kt b/BaseModule/src/main/java/com/xscm/moduleutil/bean/BeforeJoinRoomCheckBean.kt index 5bc65e22..e83d4a6c 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/BeforeJoinRoomCheckBean.kt +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/BeforeJoinRoomCheckBean.kt @@ -5,4 +5,5 @@ import java.io.Serializable class BeforeJoinRoomCheckBean :Serializable { var room_id:String? = null var msg:String? = null + var code:Int = -1 } \ No newline at end of file diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java index f3f1b5b9..aaa14eba 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -555,7 +555,7 @@ public interface ApiServer { @FormUrlEncoded @POST(Constants.JOIN_ROOM) - Call> roomGetIn(@Field("room_id") String roomId, @Field("password") String password); + Call> roomGetIn(@Field("room_id") String roomId, @Field("room_password") String password); @FormUrlEncoded @POST(Constants.BEFORE_JOIN_ROOM_CHECK) Call> beforeJoinRoomCheck(@Field("room_id") String roomId); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index 2243f78c..13c1429f 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -24,6 +24,7 @@ import com.xscm.moduleutil.bean.blindboxwheel.XlhDrawBean; import com.xscm.moduleutil.bean.room.*; import com.xscm.moduleutil.bean.zhuangb.ZhuangBanShangChengBean; import com.xscm.moduleutil.listener.CPListener; +import com.xscm.moduleutil.listener.JoinRoomErrorListener; import com.xscm.moduleutil.listener.MessageListenerSingleton; import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.utils.SystemUtils; @@ -71,6 +72,7 @@ public class RetrofitClient { public ApiServer getApiServer() { return sApiServer; } + public OkHttpClient getHttpClient() { return client; } @@ -329,8 +331,8 @@ public class RetrofitClient { }); } - public void giftWallUserList(String user_id,String gift_id,int page,BaseObserver observer) { - sApiServer.giftWallUserList(user_id,gift_id,page).enqueue(new Callback>() { + public void giftWallUserList(String user_id, String gift_id, int page, BaseObserver observer) { + sApiServer.giftWallUserList(user_id, gift_id, page).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -340,10 +342,10 @@ public class RetrofitClient { observer.onNext(body.getData()); else if (body.getCode() == 0) { ToastUtils.showLong(body.getMsg()); - }else if (body.getCode() == 301) { + } else if (body.getCode() == 301) { setCode301(body.getMsg()); } - }else { + } else { ToastUtils.showLong("请求礼物用户错误", response.code()); LogUtils.e("giftWallUserList", response.message()); } @@ -772,7 +774,7 @@ public class RetrofitClient { @Override public void onResponse(Call> call, Response> response) { - if (response.code() == 200) { + if (response.code() == 200) { BaseModel baseModel = response.body(); if (baseModel.getCode() == 1) observer.onNext(baseModel.getData()); @@ -1338,7 +1340,7 @@ public class RetrofitClient { } else if (baseModel.getCode() == 0) { ToastUtils.showLong(baseModel.getMsg()); } - }else { + } else { ToastUtils.showLong("约她获取礼物出现错误", response.code()); LogUtils.e("getGiftInfoTa", response.message()); } @@ -1350,6 +1352,7 @@ public class RetrofitClient { } }); } + public void meetingTa(String roomId, String userId, String giftId, BaseObserver observer) { sApiServer.meetingTa(roomId, userId, giftId).enqueue(new Callback>() { @@ -1357,7 +1360,7 @@ public class RetrofitClient { public void onResponse(Call> call, Response> response) { if (response.code() == 200) { onNextRetu(response, observer); - }else { + } else { ToastUtils.showLong("约她进房间出现错误", response.code()); LogUtils.e("meetingTa", response.message()); } @@ -2423,8 +2426,8 @@ public class RetrofitClient { }); } - public void setCustomGift(String gift_id, String new_gift_name,String roomId, BaseObserver observer) { - sApiServer.setCustomGift(gift_id, new_gift_name,roomId).enqueue(new Callback>() { + public void setCustomGift(String gift_id, String new_gift_name, String roomId, BaseObserver observer) { + sApiServer.setCustomGift(gift_id, new_gift_name, roomId).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -2762,8 +2765,8 @@ public class RetrofitClient { }); } - public void searchSong(String roomId,String search_user,BaseObserver> observer) { - sApiServer.searchSong(roomId,search_user).enqueue(new Callback>>() { + public void searchSong(String roomId, String search_user, BaseObserver> observer) { + sApiServer.searchSong(roomId, search_user).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { @@ -2828,7 +2831,7 @@ public class RetrofitClient { } else if (listBaseModel.getCode() == 0) { ToastUtils.showShort(listBaseModel.getMsg()); } - }else { + } else { ToastUtils.showLong("客服信息不正确"); LogUtils.e("appCustomerService", response.message()); } @@ -2986,7 +2989,7 @@ public class RetrofitClient { } - public void getBlackRoomList(String roomId,BaseObserver> observer){ + public void getBlackRoomList(String roomId, BaseObserver> observer) { sApiServer.getBlackRoomList(roomId).enqueue(new Callback>>() { @Override @@ -2994,18 +2997,18 @@ public class RetrofitClient { if (response.code() == 200) { BaseModel> listBaseModel = response.body(); if (listBaseModel.getCode() == 1) { - if (listBaseModel.getData()==null){ + if (listBaseModel.getData() == null) { observer.onNext(new ArrayList<>()); - }else { + } else { observer.onNext(listBaseModel.getData()); } } else if (listBaseModel.getCode() == 301) { setCode301(listBaseModel.getMsg()); - }else if (listBaseModel.getCode() == 0) { + } else if (listBaseModel.getCode() == 0) { ToastUtils.showShort(listBaseModel.getMsg()); observer.onNext(new ArrayList<>()); } - }else { + } else { ToastUtils.showLong("请求交友小屋列表错误", response.code()); LogUtils.e("getBlackRoomList", response.message()); } @@ -3075,7 +3078,7 @@ public class RetrofitClient { }); } - public void roomGetIn(String roomId, String password, BaseObserver observer) { + public void roomGetIn(String roomId, String password, BaseObserver observer, JoinRoomErrorListener joinRoomErrorListener) { if (!isNetworkAvailable()) { handleNetworkUnavailable(observer); CommonAppContext.getInstance().isRoomJoininj = false; @@ -3090,17 +3093,22 @@ public class RetrofitClient { BaseModel roomInfoRespBaseModel = response.body(); if (roomInfoRespBaseModel.getCode() == 1) { observer.onNext(roomInfoRespBaseModel.getData()); - } else if (roomInfoRespBaseModel.getCode() == 301) { - setCode301(roomInfoRespBaseModel.getMsg()); - } else if (roomInfoRespBaseModel.getCode() == 0) { - ToastUtils.showShort(roomInfoRespBaseModel.getMsg()); - if (joinRoomLoadListener != null) { - joinRoomLoadListener.onJoinRoomLoad(roomInfoRespBaseModel.getMsg()); - } - } else if (roomInfoRespBaseModel.getCode() == 202) { - observer.onNext(roomInfoRespBaseModel.getData()); } else { - MessageListenerSingleton.getInstance().quitGroup(roomId); + if (roomInfoRespBaseModel.getCode() == 301) { + setCode301(roomInfoRespBaseModel.getMsg()); + } else if (roomInfoRespBaseModel.getCode() == 0) { + ToastUtils.showShort(roomInfoRespBaseModel.getMsg()); + if (joinRoomLoadListener != null) { + joinRoomLoadListener.onJoinRoomLoad(roomInfoRespBaseModel.getMsg()); + } + } else if (roomInfoRespBaseModel.getCode() == 202) { + observer.onNext(roomInfoRespBaseModel.getData()); + } else { + MessageListenerSingleton.getInstance().quitGroup(roomId); + } + if (joinRoomErrorListener != null){ + joinRoomErrorListener.onJoinRoomError(roomInfoRespBaseModel.getCode(), roomInfoRespBaseModel.getMsg()); + } } } else { ToastUtils.showLong("进入房间错误", response.code()); @@ -3143,6 +3151,10 @@ public class RetrofitClient { } else if (beforeJoinRoomCheckBeanBaseModel.getCode() == 202) { observer.onNext(beforeJoinRoomCheckBeanBaseModel.getData()); joinRoomLoadListener.onJoinRoomLoad(beforeJoinRoomCheckBeanBaseModel.getMsg()); + } else if (beforeJoinRoomCheckBeanBaseModel.getCode() == 101) { + BeforeJoinRoomCheckBean beforeJoinRoomCheckBean = new BeforeJoinRoomCheckBean(); + beforeJoinRoomCheckBean.setCode(101); + observer.onNext(beforeJoinRoomCheckBean); } } else { if (joinRoomLoadListener != null) { @@ -3204,8 +3216,8 @@ public class RetrofitClient { } else if (listBaseModel.getCode() == 0) { ToastUtils.showLong(listBaseModel.getMsg()); } - }else { - ToastUtils.showLong("麦位时长数据错误",response.code()); + } else { + ToastUtils.showLong("麦位时长数据错误", response.code()); LogUtils.e("getPitTimeList", response.message()); } } @@ -3916,8 +3928,8 @@ public class RetrofitClient { } public void roomAuctionJoin(String auctionId, String userId, String giftId, String - num, String type,String gift_bag_id, BaseObserver observer) { - sApiServer.roomAuctionJoin(auctionId, userId, giftId, num, type,gift_bag_id) + num, String type, String gift_bag_id, BaseObserver observer) { + sApiServer.roomAuctionJoin(auctionId, userId, giftId, num, type, gift_bag_id) // .enqueue(new ApiResponseCallback(CommonAppContext.getInstance()) { // @Override // public void onSuccess(RoomAuction.AuctionListBean data) { @@ -4262,8 +4274,8 @@ public class RetrofitClient { }); } - public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number, String heart_id,String gift_bag_id, BaseObserver observer) { - sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id,gift_bag_id).enqueue(new Callback>() { + public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number, String heart_id, String gift_bag_id, BaseObserver observer) { + sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id, gift_bag_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.code() == 200) { @@ -4410,7 +4422,7 @@ public class RetrofitClient { } public void applyPit(String roomId, String pitNumber, BaseObserver observer) { - sApiServer.applyPit(roomId, pitNumber,"").enqueue(new Callback>() { + sApiServer.applyPit(roomId, pitNumber, "").enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response, observer); @@ -4424,8 +4436,8 @@ public class RetrofitClient { } // TODO: 2026/1/7 修改了上麦接口,这里重新写一个,是只针对酒吧房使用的 - public void applyPubPit(String roomId, String pitNumber,String gift_id, BaseObserver observer) { - sApiServer.applyPit(roomId, pitNumber,gift_id).enqueue(new Callback>() { + public void applyPubPit(String roomId, String pitNumber, String gift_id, BaseObserver observer) { + sApiServer.applyPit(roomId, pitNumber, gift_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response, observer); @@ -4438,15 +4450,15 @@ public class RetrofitClient { }); } - public void liaoTa(String roomId,String toUserId,String type ,BaseObserver observer) { - sApiServer.liaoTa(roomId,toUserId,type).enqueue(new Callback>() { + public void liaoTa(String roomId, String toUserId, String type, BaseObserver observer) { + sApiServer.liaoTa(roomId, toUserId, type).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.code() == 200) { onNextRetu(response, observer); - }else { - ToastUtils.showLong("撩Ta失败",response.code()); + } else { + ToastUtils.showLong("撩Ta失败", response.code()); LogUtils.e("liaoTa: " + response.message()); } } @@ -4704,8 +4716,8 @@ public class RetrofitClient { }); } - public void setRoomBusinessTime(String roomId,String start_time,String end_time, BaseObserver observer) { - sApiServer.setRoomBusinessTime(roomId,start_time,end_time).enqueue(new Callback>() { + public void setRoomBusinessTime(String roomId, String start_time, String end_time, BaseObserver observer) { + sApiServer.setRoomBusinessTime(roomId, start_time, end_time).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -4716,10 +4728,10 @@ public class RetrofitClient { observer.onNext(""); } else if (baseModel.getCode() == 301) { setCode301(baseModel.getMsg()); - }else if (baseModel.getCode() == 0) { + } else if (baseModel.getCode() == 0) { ToastUtils.showLong(baseModel.getMsg()); } - }else { + } else { ToastUtils.showLong("设置营业时间失败,", response.code()); LogUtils.e("setRoomBusinessTime", response.message()); } @@ -5421,8 +5433,8 @@ public class RetrofitClient { }); } - public void closePkMic(String pk_id ,String type ,String user_id,BaseObserver observer) { - sApiServer.closePkMic(pk_id,type,user_id).enqueue(new Callback>() { + public void closePkMic(String pk_id, String type, String user_id, BaseObserver observer) { + sApiServer.closePkMic(pk_id, type, user_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/listener/JoinRoomErrorListener.kt b/BaseModule/src/main/java/com/xscm/moduleutil/listener/JoinRoomErrorListener.kt new file mode 100644 index 00000000..2a2d6d73 --- /dev/null +++ b/BaseModule/src/main/java/com/xscm/moduleutil/listener/JoinRoomErrorListener.kt @@ -0,0 +1,5 @@ +package com.xscm.moduleutil.listener + +interface JoinRoomErrorListener { + fun onJoinRoomError(errorCode: Int, errorMsg: String) +} \ No newline at end of file diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java index fdd6079a..2734f346 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/ImageUtils.java @@ -410,7 +410,39 @@ public class ImageUtils { } } Glide.with(mImageView).asBitmap().load(path) - .apply(createUrlOnlyOptions(path)) + .apply(createUrlOnlyOptions(path)).listener(new RequestListener() { + @Override + public boolean onResourceReady(Bitmap resource, Object model, + Target target, DataSource dataSource, + boolean isFirstResource) { + // dataSource 是关键参数! + switch (dataSource) { + case DATA_DISK_CACHE: + case RESOURCE_DISK_CACHE: + LogUtils.e("GlideCache", "来自磁盘缓存",path); + break; + case MEMORY_CACHE: + LogUtils.e("GlideCache", "来自内存缓存",path); + break; + case LOCAL: // 本地文件 + LogUtils.e("GlideCache", "来自本地文件",path); + break; + case REMOTE: // 网络下载 + LogUtils.e("GlideCache", "来自网络下载",path); + break; + default: + LogUtils.e("GlideCache", "来自: " + dataSource); + } + return false; + } + + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, + Target target, boolean isFirstResource) { + Log.e("GlideCache", "加载失败"+"path:"+path, e); + return false; + } + }) .error(R.mipmap.default_avatar).placeholder(R.mipmap.default_avatar).centerCrop() .thumbnail(0.3f).into(mImageView); } @@ -487,6 +519,25 @@ public class ImageUtils { @Override public boolean onResourceReady(Bitmap resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + + // dataSource 是关键参数! + switch (dataSource) { + case DATA_DISK_CACHE: + case RESOURCE_DISK_CACHE: + LogUtils.e("GlideCache", "来自磁盘缓存",path); + break; + case MEMORY_CACHE: + LogUtils.e("GlideCache", "来自内存缓存",path); + break; + case LOCAL: // 本地文件 + LogUtils.e("GlideCache", "来自本地文件",path); + break; + case REMOTE: // 网络下载 + LogUtils.e("GlideCache", "来自网络下载",path); + break; + default: + LogUtils.e("GlideCache", "来自: " + dataSource); + } // 加载成功!resource 就是最终的 Bitmap 对象 int imageWidth = resource.getWidth(); // 图片原始宽度 int imageHeight = resource.getHeight(); // 图片原始高度 diff --git a/MainModule/build.gradle b/MainModule/build.gradle index c3d0553c..5f22f804 100644 --- a/MainModule/build.gradle +++ b/MainModule/build.gradle @@ -32,14 +32,13 @@ android { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } - dataBinding { - enabled = true - } + kotlinOptions { jvmTarget = '11' } buildFeatures { + dataBinding true viewBinding true } } diff --git a/MainModule/src/main/AndroidManifest.xml b/MainModule/src/main/AndroidManifest.xml index 9a183c63..38e46cf6 100644 --- a/MainModule/src/main/AndroidManifest.xml +++ b/MainModule/src/main/AndroidManifest.xml @@ -182,6 +182,7 @@ android:exported="false" /> (), var isBackPrivate = false //是否主动返回小黑屋 + /** + * 1:踩头条 + * 2:小时榜 + * 3:MQTT + */ + private var skipRoomType = -1 + override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) { // 拦截返回键,显示退出对话框而不是直接退出 @@ -1660,6 +1667,8 @@ class RoomActivity : BaseMvpActivity(), // } AgoraManager.getInstance().lastRoomId = roomId + skipRoomType = -1 + //进入小黑屋无所谓 MvpPre?.getRoomIn(messageEvent.text.room_id, "") MessageExListenerSingleton.getInstance().joinGroup(messageEvent.text.room_id) if (publicScreenFragment != null) { @@ -2446,6 +2455,8 @@ class RoomActivity : BaseMvpActivity(), MessageListenerSingleton.quitGroup(pendingRoomId) MessageListenerSingleton.getInstance().joinGroup(pendingRoomId) AgoraManager.getInstance().lastRoomId = roomId + skipRoomType = -1 + //交友房卡关系完成进入小黑屋 MvpPre!!.getRoomIn(pendingRoomId, "") lastSwitchedRoomId = pendingRoomId!! @@ -3053,8 +3064,8 @@ class RoomActivity : BaseMvpActivity(), dialog.show() } - fun setRoomTime(roomInfoResp: RoomInfoResp){ - this.mRoomInfoResp=roomInfoResp + fun setRoomTime(roomInfoResp: RoomInfoResp) { + this.mRoomInfoResp = roomInfoResp } @@ -3080,7 +3091,7 @@ class RoomActivity : BaseMvpActivity(), AgoraManager.getInstance().muteLocalAudioStream(false) AgoraManager.getInstance().ClientRole(true) CommonAppContext.getInstance().isMai = true - var userId : String ="" + var userId: String = "" mRoomInfoResp?.room_info?.pit_list?.size?.let { if (it < 9) { return @@ -3353,6 +3364,22 @@ class RoomActivity : BaseMvpActivity(), setView(resp) } + override fun beforeJoinRoomCheck(isJoinRoom: Boolean, errorCode: Int, skipRoomId: String) { + if (errorCode == 0) { + MessageListenerSingleton.getInstance().joinGroup(roomId) + initPublicScreenFragment() + } else { + if (isJoinRoom) { + when (skipRoomType) { + 1,2,3 -> { + roomId2 = skipRoomId + getHour() + } + } + } + } + } + //隐藏视图 private fun instView() { val countText = mRoomInfoResp?.room_info?.queue_number.toString() @@ -3414,8 +3441,10 @@ class RoomActivity : BaseMvpActivity(), // ) // MessageListenerSingleton.getInstance() // .joinGroup(mRoomInfoResp?.room_info?.head_line?.room_id) - roomId2 = mRoomInfoResp?.room_info?.head_line?.room_id - getHour() +// roomId2 = mRoomInfoResp?.room_info?.head_line?.room_id +// getHour() + skipRoomType = 1 + //踩头条加入房间 MvpPre?.getRoomIn(mRoomInfoResp?.room_info?.head_line?.room_id, "") } else { com.blankj.utilcode.util.ToastUtils.showLong("您就在当前房间") @@ -3684,9 +3713,11 @@ class RoomActivity : BaseMvpActivity(), return } - roomId2 = event.room_id - MessageListenerSingleton.getInstance().joinGroup(event.room_id) - getHour() +// roomId2 = event.room_id +// MessageListenerSingleton.getInstance().joinGroup(event.room_id) +// getHour() + skipRoomType = 2 + //小时榜跳转房间 MvpPre?.getRoomIn(event.room_id, "") } @@ -3737,7 +3768,6 @@ class RoomActivity : BaseMvpActivity(), ClickUtils.clearAllClickRecords() AgoraManager.getInstance().cleanup() - roomId = roomId2 // 重新连接房间相关服务 resumeRoomState() publicScreenFragment?.onDestroy() @@ -3825,8 +3855,10 @@ class RoomActivity : BaseMvpActivity(), } fun refreshRoomInfo(roomId: String) { - roomId2 = roomId - getHour() +// roomId2 = roomId +// getHour() + skipRoomType = 3 + //MQTT 进入房间 MvpPre?.getRoomIn(roomId, "") } @@ -3834,13 +3866,13 @@ class RoomActivity : BaseMvpActivity(), // 添加检查房间连接状态的方法 private fun resumeRoomState() { // 恢复房间相关状态 - if (MvpPre != null && roomId != null) { + if (MvpPre != null && roomId2 != null) { // MvpPre!!.postRoomInfo(roomId) } // 重新连接房间相关服务 if (MessageListenerSingleton.getInstance() != null) { - MessageListenerSingleton.getInstance().joinGroup(roomId) + MessageListenerSingleton.getInstance().joinGroup(roomId2) } // 恢复音频状态 @@ -3928,6 +3960,7 @@ class RoomActivity : BaseMvpActivity(), // 只有在没有房间信息时才重新获取 if (mRoomInfoResp == null) { cleanupResources() + skipRoomType = -1 MvpPre!!.getRoomIn(roomId, password) } return @@ -4103,14 +4136,6 @@ class RoomActivity : BaseMvpActivity(), publicScreenFragment?.clearExMessageListener() publicScreenFragment?.setIsPriRoom(false, arrayListOf()) } - -// if (publicScreenFragment != null) { -// publicScreenFragment!!.onFragmentShowDestroy() -// publicScreenFragment = null -// } - -// MvpPre?.getRoomIn(AgoraManager.getInstance().lastRoomId, "") -// AgoraManager.getInstance().lastRoomId = "" } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/contacts/RoomContacts.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/contacts/RoomContacts.java index b8a111e5..8afe4375 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/contacts/RoomContacts.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/contacts/RoomContacts.java @@ -18,6 +18,8 @@ public class RoomContacts { public interface View extends IView { void roomInfo(RoomInfoResp resp); + void beforeJoinRoomCheck(Boolean isJoinRoom,int errorCode,String roomId); + void showPasswordDialog(); void enterFail(); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java index 1c64a811..75764819 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java @@ -661,6 +661,11 @@ public class RoomFragment extends BaseMvpFragment implem MvpRef.get().enterFail(); } } - }); + },null); } @Override diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java index f79b57e6..26d7cee0 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java @@ -4,9 +4,15 @@ import static com.liulishuo.okdownload.OkDownloadProvider.context; import android.content.Context; +import androidx.annotation.NonNull; + import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.LogUtils; +import com.xscm.modulemain.activity.main.activity.MainActivity; import com.xscm.modulemain.activity.room.contacts.RoomContacts; +import com.xscm.modulemain.activity.user.activity.DailyTasksActivity; +import com.xscm.modulemain.activity.user.activity.MyRoomActivity; +import com.xscm.modulemain.dialog.DialogEditRoomPwd; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.bean.BeforeJoinRoomCheckBean; import com.xscm.moduleutil.bean.RedPacketConfig; @@ -20,6 +26,7 @@ import com.xscm.moduleutil.dialog.ConfirmDialog; import com.xscm.moduleutil.http.APIException; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.RetrofitClient; +import com.xscm.moduleutil.listener.JoinRoomErrorListener; import com.xscm.moduleutil.listener.MessageListenerSingleton; import com.xscm.moduleutil.presenter.BasePresenter; import com.xscm.moduleutil.rtc.AgoraManager; @@ -34,11 +41,14 @@ import io.reactivex.disposables.Disposable; public class RoomPresenter extends BasePresenter implements RoomContacts.IRoomPre { RoomContacts.View mView; + private Context mContext; public RoomPresenter(RoomContacts.View view, Context context) { super(view, context); mView = view; + this.mContext = context; } + // TODO: 2025/6/10 加入房间 @Override public void getRoomIn(String roomId, String password) { @@ -50,16 +60,44 @@ public class RoomPresenter extends BasePresenter implements R @Override public void onNext(BeforeJoinRoomCheckBean beforeJoinRoomCheckBean) { - if (beforeJoinRoomCheckBean.getRoom_id() == null || beforeJoinRoomCheckBean.getRoom_id().equals("")) { - joinRoom(roomId, password); - }else { - queren(beforeJoinRoomCheckBean.getRoom_id(), beforeJoinRoomCheckBean.getMsg()); + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); } + + if(beforeJoinRoomCheckBean.getCode() == 101){ + new DialogEditRoomPwd(mContext).show(new DialogEditRoomPwd.OnDialogDismissListener() { + @Override + public void onDialogDismiss() { + MvpRef.get().beforeJoinRoomCheck(false,-1,""); + } + + @Override + public void onPwdListener(@NonNull String pwd) { + if (beforeJoinRoomCheckBean.getRoom_id() == null || beforeJoinRoomCheckBean.getRoom_id().equals("")) { + joinRoom(roomId, pwd); + }else { + queren(beforeJoinRoomCheckBean.getRoom_id(), beforeJoinRoomCheckBean.getMsg()); + } + } + }); + }else { + if (beforeJoinRoomCheckBean.getRoom_id() == null || beforeJoinRoomCheckBean.getRoom_id().equals("")) { + joinRoom(roomId, password); + }else { + queren(beforeJoinRoomCheckBean.getRoom_id(), beforeJoinRoomCheckBean.getMsg()); + } + } + } }); } private void joinRoom(String roomId, String password){ + if (MvpRef == null) { + MvpRef = new WeakReference<>(mView); + } + MvpRef.get().beforeJoinRoomCheck(true,-1,roomId); + api.roomGetIn(roomId, password, new BaseObserver() { @Override public void onSubscribe(Disposable d) { @@ -68,11 +106,9 @@ public class RoomPresenter extends BasePresenter implements R @Override public void onNext(RoomInfoResp resp) { - - if(!resp.getRoom_id().isEmpty()){ - queren(resp.getRoom_id(),resp.getMsg()); - }else { - + if (!resp.getRoom_id().isEmpty()) { + queren(resp.getRoom_id(), resp.getMsg()); + } else { String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId(); String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要 String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID @@ -88,17 +124,16 @@ public class RoomPresenter extends BasePresenter implements R LogUtils.e("roomId:", roomId); AgoraManager.getInstance() .joinRoom(token, roomId, uid, enableMic, enableJs); - if (MvpRef == null) { - MvpRef = new WeakReference<>(mView); - } + MvpRef.get().roomInfo(resp); } } + @Override public void onError(Throwable e) { super.onError(e); - if (MvpRef==null){ - MvpRef=new WeakReference<>(mView); + if (MvpRef == null) { + MvpRef = new WeakReference<>(mView); } if (e instanceof APIException) { APIException apiException = (APIException) e; @@ -111,6 +146,11 @@ public class RoomPresenter extends BasePresenter implements R MvpRef.get().enterFail(); } } + }, (errorCode, errorMsg) -> { + if (MvpRef == null) { + MvpRef = new WeakReference<>(mView); + } + MvpRef.get().beforeJoinRoomCheck(false,errorCode,""); }); } @@ -126,6 +166,10 @@ public class RoomPresenter extends BasePresenter implements R getRoomIn(roomId,""); }, v -> { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } + MvpRef.get().beforeJoinRoomCheck(false,-1,""); // 点击“取消”按钮时什么都不做 }, false, 0).show(); } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java index 732c22f5..a1a93396 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/CreatedRoomActivity.java @@ -14,6 +14,8 @@ import android.text.TextWatcher; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; +import android.view.WindowManager; +import android.widget.CompoundButton; import android.widget.ImageView; import androidx.activity.OnBackPressedCallback; @@ -140,16 +142,16 @@ public class CreatedRoomActivity extends BaseMvpActivity(context) { + + init { + // 设置对话框的宽度为屏幕宽度 + window?.setLayout( + (ScreenUtils.getScreenWidth() * 315f / 375).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + setCancelable(false) + setCanceledOnTouchOutside(false) + } + + override fun getLayoutId(): Int { + return R.layout.dialog_edit_room_pwd_layout + } + + private var onDialogDismissListener:OnDialogDismissListener? = null + + override fun initView() { + mBinding.ivClose.setOnClickListener { + onDialogDismissListener?.onDialogDismiss() + dismiss() + } + + mBinding.tvCancel.setOnClickListener { + onDialogDismissListener?.onDialogDismiss() + dismiss() + } + + mBinding.tvConfirm.setOnClickListener { + if (mBinding.etRoomPwd.text.toString().trim() + .isNotEmpty() && mBinding.etRoomPwd.text.toString().trim().length == 4 + ) { + onDialogDismissListener?.onPwdListener(mBinding.etRoomPwd.text.toString().trim()) + dismiss() + } else { + ToastUtils.showShort("请输入正确密码!") + } + } + + } + + override fun initData() { + + } + + fun show(onDialogDismissListener: OnDialogDismissListener) { + super.show() + this.onDialogDismissListener = onDialogDismissListener + } + + interface OnDialogDismissListener { + fun onPwdListener(pwd: String) + + fun onDialogDismiss() + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/DialogLuckyDraw.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/DialogLuckyDraw.kt new file mode 100644 index 00000000..c06158bd --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/DialogLuckyDraw.kt @@ -0,0 +1,136 @@ +package com.xscm.modulemain.dialog + +import android.content.Context +import android.view.Gravity +import android.view.View +import com.blankj.utilcode.util.ToastUtils +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.opensource.svgaplayer.SVGACallback +import com.opensource.svgaplayer.SVGAParser +import com.opensource.svgaplayer.SVGAVideoEntity +import com.xscm.modulemain.R +import com.xscm.modulemain.databinding.DialogLuckyDrawLayoutBinding +import com.xscm.moduleutil.widget.dialog.BaseDialog + +class DialogLuckyDraw(context: Context) : BaseDialog(context) { + + init { + window?.apply { + setGravity(Gravity.BOTTOM) + } + + setCancelable(false) + setCanceledOnTouchOutside(false) + } + + private var isLottery = false + + override fun getLayoutId(): Int { + return R.layout.dialog_lucky_draw_layout + } + + override fun initView() { + mBinding.ivClose.setOnClickListener { + dismiss() + } + + mBinding.iv1.setOnClickListener { + lottery(1) + } + + mBinding.iv10.setOnClickListener { + lottery(10) + } + + mBinding.iv100.setOnClickListener { + lottery(100) + } + mBinding.ivOnOrOff.tag = 1 + mBinding.ivOnOrOff.setOnClickListener { + if (mBinding.ivOnOrOff.tag == 1) { + mBinding.ivOnOrOff.tag = 0 + mBinding.ivOnOrOff.setImageResource(R.mipmap.icon_lucky_donghua_pre) + } else { + mBinding.ivOnOrOff.tag = 1 + mBinding.ivOnOrOff.setImageResource(R.mipmap.icon_lucky_donghua_nor) + } + } + } +//913073443 13837096053 + private fun lottery(count: Int) { + if (isLottery) { + ToastUtils.showShort("正在抽取中...") + return + } + isLottery = true + + if (mBinding.ivOnOrOff.tag == 1) { + startAnim() + } + + fetchLotteryResult(count) + } + + override fun initData() { + + } + + + private fun fetchLotteryResult(count: Int) { + + } + + + private fun showLotteryResult() { + + } + + private fun startAnim() { + mBinding.svgaAnim.visibility = View.VISIBLE + // 停止并清除当前动画 + mBinding.svgaAnim.stopAnimation() + mBinding.svgaAnim.clear() + // 使用SVGAParser重新解析 + val parser = SVGAParser(context) + parser.decodeFromAssets("room_wish_crystal_animation.svga", + object : SVGAParser.ParseCompletion { + override fun onComplete(videoItem: SVGAVideoEntity) { + mBinding.svgaAnim.setVideoItem(videoItem) + mBinding.svgaAnim.clearsAfterStop = true + + // 设置回调 + mBinding.svgaAnim.callback = object : SVGACallback { + override fun onFinished() { + isLottery = false + mBinding.svgaAnim.visibility = View.GONE + mBinding.ivSvgaBg.visibility = View.VISIBLE + } + + override fun onPause() {} + override fun onRepeat() {} + override fun onStep(frame: Int, percentage: Double) { + if (frame == 1) { + mBinding.ivSvgaBg.visibility = View.INVISIBLE + } + } + } + + // 开始动画 + mBinding.svgaAnim.startAnimation() + } + + override fun onError() { + // 处理错误 + } + }) + } + + + class itemAdapter : BaseQuickAdapter(R.layout.item_lottery_gift_layout) { + override fun convert(helper: BaseViewHolder, item: String) { + helper.setText(R.id.tv_name, item) + } + } + +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomOnlineDialogFragment.java b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomOnlineDialogFragment.java index 9bde3824..7d52b2ed 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomOnlineDialogFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomOnlineDialogFragment.java @@ -211,6 +211,11 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment + + + + android:textSize="@dimen/sp_12" /> + android:background="@drawable/shape_15"> + android:textSize="@dimen/sp_12" /> - - - - - + android:layout_marginTop="@dimen/dp_10" + android:layout_marginBottom="@dimen/dp_10" + android:text="其他设置" + android:paddingHorizontal="@dimen/dp_16" + android:textColor="@color/colorBlack45" + android:textSize="@dimen/sp_14" /> - + + + + + + + + + + + + + + + + + + + + + + + + + - - + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/dialog_edit_room_pwd_layout.xml b/MainModule/src/main/res/layout/dialog_edit_room_pwd_layout.xml new file mode 100644 index 00000000..48f494bd --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_edit_room_pwd_layout.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/dialog_lucky_draw_layout.xml b/MainModule/src/main/res/layout/dialog_lucky_draw_layout.xml new file mode 100644 index 00000000..08506f2f --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_lucky_draw_layout.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/index_rv_item_room_hot0.xml b/MainModule/src/main/res/layout/index_rv_item_room_hot0.xml index 66cfb0d7..50cd3c85 100644 --- a/MainModule/src/main/res/layout/index_rv_item_room_hot0.xml +++ b/MainModule/src/main/res/layout/index_rv_item_room_hot0.xml @@ -38,8 +38,8 @@ android:id="@+id/iv_type" android:layout_width="@dimen/dp_44" android:layout_height="@dimen/dp_23" - android:src="@mipmap/jiaoyou" android:scaleType="fitCenter" + android:src="@mipmap/jiaoyou" app:layout_constraintEnd_toEndOf="@+id/ll" app:layout_constraintTop_toTopOf="@+id/ll" /> @@ -49,20 +49,20 @@ android:layout_height="@dimen/dp_18" android:layout_marginStart="@dimen/dp_12" android:layout_marginEnd="@dimen/dp_12" - tools:text="烟花易冷" - android:textColor="@color/color_FFFFF0F0" - android:textSize="12sp" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" + android:textColor="@color/color_FFFFF0F0" + android:textSize="12sp" app:layout_constraintBottom_toBottomOf="@+id/view_num_bg" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/view_num_bg" + tools:text="烟花易冷" - /> + /> + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_lottery_gift_layout.xml b/MainModule/src/main/res/layout/item_lottery_gift_layout.xml new file mode 100644 index 00000000..b72c44c6 --- /dev/null +++ b/MainModule/src/main/res/layout/item_lottery_gift_layout.xml @@ -0,0 +1,37 @@ + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/room_index_item_chatroom_my_foot.xml b/MainModule/src/main/res/layout/room_index_item_chatroom_my_foot.xml index 23ffe3fa..94395485 100644 --- a/MainModule/src/main/res/layout/room_index_item_chatroom_my_foot.xml +++ b/MainModule/src/main/res/layout/room_index_item_chatroom_my_foot.xml @@ -109,7 +109,16 @@ android:textSize="@dimen/sp_12" /> - + diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_mima.png b/MainModule/src/main/res/mipmap-hdpi/icon_mima.png new file mode 100644 index 00000000..638b7d8e Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_mima.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_1.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_1.png new file mode 100644 index 00000000..0713abd2 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_1.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_10.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_10.png new file mode 100644 index 00000000..7fa0f1d6 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_10.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_100.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_100.png new file mode 100644 index 00000000..5f1cc6ca Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_100.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_biaoti.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_biaoti.png new file mode 100644 index 00000000..42160b8a Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_biaoti.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_close.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_close.png new file mode 100644 index 00000000..1f54e014 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_close.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_donghua_nor.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_donghua_nor.png new file mode 100644 index 00000000..9e86413b Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_donghua_nor.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_donghua_pre.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_donghua_pre.png new file mode 100644 index 00000000..acf25f73 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_donghua_pre.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_rules.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_rules.png new file mode 100644 index 00000000..f5f44f83 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_rules.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_shuijingqiu.png b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_shuijingqiu.png new file mode 100644 index 00000000..1096da4a Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_lucky_shuijingqiu.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_mima.png b/MainModule/src/main/res/mipmap-xhdpi/icon_mima.png new file mode 100644 index 00000000..0962554e Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_mima.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_mima.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_mima.png new file mode 100644 index 00000000..226df2ca Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_mima.png differ diff --git a/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/input/InputView.java b/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/input/InputView.java index 09477c9e..26cd2f8c 100644 --- a/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/input/InputView.java +++ b/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/input/InputView.java @@ -38,6 +38,7 @@ import com.tencent.qcloud.tuicore.interfaces.TUIExtensionInfo; import com.tencent.qcloud.tuicore.interfaces.TUIValueCallback; import com.tencent.qcloud.tuicore.util.SPUtils; import com.tencent.qcloud.tuicore.util.ToastUtil; +import com.tencent.qcloud.tuikit.timcommon.BuildConfig; import com.tencent.qcloud.tuikit.timcommon.bean.ChatFace; import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean; import com.tencent.qcloud.tuikit.timcommon.component.face.FaceManager; @@ -287,7 +288,7 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex e.printStackTrace(); } - if (userInfo != null && mChatInfo.getType()==1 && !mChatInfo.getId().equals("u"+userId) ) { + if (userInfo != null && mChatInfo.getType()==1 && !mChatInfo.getId().equals("u"+userId) && !BuildConfig.DEBUG) { if (userInfo.getIs_can_chat() == 0 && userInfo.getCan_chat_money() > 0) { Toast.makeText(getContext(), "充值不足"+userInfo.getCan_chat_money()+"元,您无法发送消息", Toast.LENGTH_LONG).show(); ARouter.getInstance().build("/modulevocal/RechargeActivity").navigation();