messageEx

This commit is contained in:
2026-01-08 14:09:20 +08:00
parent 26a40f8ffb
commit ac09992b01
6 changed files with 761 additions and 28 deletions

View File

@@ -155,6 +155,7 @@ import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.http.RetrofitClient.TasksMessageListener
import com.xscm.moduleutil.interfaces.OnMusicItemClickListener
import com.xscm.moduleutil.listener.MessageExListenerSingleton
import com.xscm.moduleutil.listener.MessageListenerSingleton
import com.xscm.moduleutil.listener.MessageListenerSingleton.OnMessageReceivedListener
import com.xscm.moduleutil.rtc.AgoraManager
@@ -1580,11 +1581,16 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} else if (msgType == EMMessageInfo.QXRoomMessageTypeFlirtatious) { //酒吧房撩ta推送的信息
roomFragment?.handleRoomMessage(messageEvent)
} else if (msgType == EMMessageInfo.QXRoomMessageTypeFlirtatiousRoom) {//酒吧房约她进入小黑屋
if (mRoomInfoResp?.user_info?.user_id == messageEvent.text.user_id.toInt() || mRoomInfoResp?.user_info?.user_id == messageEvent.text.meet_user_id.toInt()) {
if (mRoomInfoResp?.user_info?.user_id.toString() == messageEvent.text.user_id
|| mRoomInfoResp?.user_info?.user_id.toString() == messageEvent.text.meet_user_id) {
if (mRoomInfoResp?.user_info?.pit_number !=0) {
MvpPre?.downPit(roomId, mRoomInfoResp?.user_info?.pit_number.toString())
}
MvpPre?.postRoomInfo(messageEvent.text.room_id)
if (publicScreenFragment != null){
MessageExListenerSingleton.getInstance().joinGroup(messageEvent.text.room_id)
publicScreenFragment?.setupExMessageListener()
}
}
}
}
@@ -2766,7 +2772,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
// 执行退出房间逻辑
CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false
// QXGiftPlayerManager.getInstance(this).destroyEffectSvga()
// QXGiftPlayerManager.getInstance(this).destroyEffectSvga()
AgoraManager.getInstance().cleanup()
MyRoomSingleton.getInstance().onExitRoom()
@@ -2911,6 +2917,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (voive) View.VISIBLE else View.GONE
mBinding!!.clFirstCharge.visibility =
if (voive) View.VISIBLE else View.GONE
mBinding!!.rlMessage.visibility =
if (voive) View.VISIBLE else View.GONE
mBinding!!.rlMai.visibility =
if (voive) View.VISIBLE else View.VISIBLE
}
/** 进入小黑屋将所有的底部隐藏 */

View File

@@ -1,6 +1,8 @@
package com.xscm.modulemain.activity.room.contacts
import android.app.Activity
import android.media.Image
import android.widget.ImageView
import com.xscm.moduleutil.activity.IPresenter
import com.xscm.moduleutil.activity.IView
import com.xscm.moduleutil.bean.GiftBean
@@ -13,7 +15,7 @@ class PrivateContacts {
fun wallet(list:List<String>,walletBean: WalletBean?)
fun sendGiftResult(success:Boolean)
fun sendGiftResult(success:Boolean,imageView: ImageView)
fun getGiftList(list: List<RoonGiftModel>)
}
@@ -23,7 +25,7 @@ class PrivateContacts {
fun getGiftList(roomId: String)
fun sendGift(mRoomId:String,giftId: String,mUserId:String)
fun sendGift(mRoomId:String,giftId: String,mUserId:String,imageView: ImageView)
fun wallet(list:List<String>)

View File

@@ -41,6 +41,7 @@ import com.xscm.moduleutil.bean.room.RoomInfoResp;
import com.xscm.moduleutil.bean.room.RoomUserBean;
import com.xscm.moduleutil.event.RoomJoinMountModel;
import com.xscm.moduleutil.event.RoomTaskEvent;
import com.xscm.moduleutil.listener.MessageExListenerSingleton;
import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.rtc.MusicPlayBean;
import com.xscm.moduleutil.utils.SpUtil;
@@ -55,6 +56,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import lombok.Setter;
/**
* @author qx
* @data 2025/6/17
@@ -69,6 +72,9 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
private EaseChatAdapter easeChatAdapter;
private String roomId;
private MessageListenerSingleton.PublicScreenMessageListener messageListener;
private MessageExListenerSingleton.PublicScreenMessageListener messageExListener;
@Setter
private boolean isPriRoom = false;
// 在需要的地方调用 Activity 的方法
public void someMethod() {
@@ -166,6 +172,25 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
}
/**
* 设置消息监听器
*/
public void setupExMessageListener() {
// 创建并添加监听器
messageExListener = message -> {
// 确保在主线程更新 UI
if (getActivity() != null) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
handleRoomMessage(message);
}
});
}
};
MessageExListenerSingleton.getInstance().addPublicScreenMessageListener(messageExListener);
}
/**
* 检查并处理缓存的消息
*/

View File

@@ -22,6 +22,8 @@ import com.xscm.moduleutil.bean.room.RoomCpUserBean
import com.xscm.moduleutil.bean.room.RoomInfoResp
import com.xscm.moduleutil.bean.room.RoomPitBean
import com.xscm.moduleutil.bean.room.RoomUserBean
import com.xscm.moduleutil.listener.MessageExListenerSingleton
import com.xscm.moduleutil.listener.MessageListenerSingleton
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import java.util.concurrent.TimeUnit
@@ -58,11 +60,6 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
private val cpUserBean: RoomCpUserBean? = mRoomInfoResp?.cp_user
private var currSendGiftImageView: ImageView? = null
override fun initData() {
MvpPre?.getGiftList(mRoomId)
}
override fun initView() {
giftViewList.clear()
@@ -75,15 +72,9 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
giftViewList.forEach { it ->
it.setOnClickListener {
val sendGiftUserId =
if (mUserInfo?.user_id!!.toString() == mBinding.rpwv1.pitBean.user_id) {
mBinding.rpwv2.pitBean.user_id
} else {
mBinding.rpwv1.pitBean.user_id
}
MvpPre.sendGift(mRoomId, it.tag.toString(), sendGiftUserId)
val sendGiftUserId = mBinding.rpwv2.pitBean.user_id
MvpPre.sendGift(mRoomId, it.tag.toString(), sendGiftUserId,it as ImageView)
it.visibility = View.INVISIBLE
currSendGiftImageView = it as? ImageView
}
}
@@ -95,7 +86,6 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
}
// 定义两个 RoomPitBean 对象,分别用于显示在 roomMakeWheat1 和 roomMakeWheat2
val selfBean = RoomPitBean() // 自己的 bean
val otherBean = RoomPitBean() // 另一个用户的 bean
@@ -142,8 +132,10 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
countDownTime(cpUserBean.time_day.toLong())
}
}
override fun initData() {
MvpPre?.getGiftList(mRoomId)
}
fun roomInfoUpdate(roomInfoResp: RoomInfoResp) {
@@ -171,10 +163,9 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
}
override fun sendGiftResult(success: Boolean) {
override fun sendGiftResult(success: Boolean,itemImage: ImageView) {
// 随机选择一个礼物
val showList = giftList.shuffled().take(1)
val itemImage = currSendGiftImageView
val price = showList[0].gift_price.toInt()
// 根据价格设置不同的宽高
val (width, height) = when {
@@ -186,18 +177,18 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
val layoutParams = itemImage?.layoutParams
layoutParams?.width = width.dpToPx() // 需要实现dp转px的扩展函数
layoutParams?.height = height.dpToPx()
itemImage?.layoutParams = layoutParams
itemImage.layoutParams = layoutParams
// 假设 padding 值单位dp
val paddingDp = 8
val paddingPx = paddingDp.dpToPx() // 转换为 px
// 设置 padding左、上、右、下
itemImage?.setPadding(paddingPx, paddingPx, paddingPx, paddingPx)
currSendGiftImageView?.tag = showList[0].gift_id
itemImage.setPadding(paddingPx, paddingPx, paddingPx, paddingPx)
itemImage.tag = showList[0].gift_id
Glide.with(itemImage!!)
.load(showList[0].base_image)
.into(itemImage)
currSendGiftImageView?.visibility = View.VISIBLE
itemImage.visibility = View.VISIBLE
}
override fun getGiftList(list: List<RoonGiftModel>) {
@@ -205,7 +196,7 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) :
giftList = list.toMutableList()
val showList = list.shuffled().take(6)
for (i in 0 until showList.size) {
for (i in showList.indices) {
val itemImage = giftViewList[i]
val price = showList[i].gift_price.toInt()
itemImage.tag = showList[i].gift_id

View File

@@ -1,6 +1,7 @@
package com.xscm.modulemain.activity.room.presenter
import android.content.Context
import android.widget.ImageView
import com.xscm.modulemain.activity.room.contacts.MentorShipContacts
import com.xscm.modulemain.activity.room.contacts.PrivateContacts
import com.xscm.modulemain.activity.room.contacts.PubContacts
@@ -48,7 +49,7 @@ class PrivatePresenter(context: Context, val view: PrivateContacts.View?) :
})
}
override fun sendGift(mRoomId:String,giftId: String,mUserId:String) {
override fun sendGift(mRoomId:String,giftId: String,mUserId:String,imageView: ImageView) {
RetrofitClient.getInstance().roomGift(mRoomId,giftId,"1",mUserId,"1","","","",object : BaseObserver<RoomGiftData>() {
override fun onSubscribe(d: Disposable) {
}
@@ -57,7 +58,7 @@ class PrivatePresenter(context: Context, val view: PrivateContacts.View?) :
if (MvpRef == null) {
MvpRef = WeakReference(view)
}
MvpRef.get()?.sendGiftResult(true)
MvpRef.get()?.sendGiftResult(true,imageView)
}
})
}