修改KTV房间编码模式

修改点唱房编码模式
优化展示麦位布局
优化Mqtt,变更成单例模式
This commit is contained in:
2025-08-30 19:02:09 +08:00
parent 04da1917d5
commit fe4ff5655a
18 changed files with 2950 additions and 1612 deletions

View File

@@ -41,9 +41,9 @@
<!-- android:exported="true" -->
<!-- tools:ignore="Instantiatable" /> -->
<!-- <service android:name=".service.EMqttService" />-->
<service
android:name=".service.MyMqttService"
android:foregroundServiceType="dataSync" />
<!-- <service-->
<!-- android:name=".service.MyMqttService"-->
<!-- android:foregroundServiceType="dataSync" />-->
</application>
</manifest>

View File

@@ -109,7 +109,14 @@ public class CommonAppContext extends MultiDexApplication {
AgoraManager.getInstance(this).init(currentEnvironment.getSwSdkAppId());
MessageListenerSingleton.getInstance();
CrashReport.initCrashReport(this, "ac3ed4d89f", true);/*bugly初始化*/
ServiceUtils.startService(MyMqttService.class);/*Mqtt初始化*/
// ServiceUtils.startService(MyMqttService.class);/*Mqtt初始化*/
// 初始化MQTT服务
// 获取单例实例
MyMqttService mqttService = MyMqttService.getInstance(this);
// 启动服务
mqttService.startService();
// 每次启动应用时重置状态
SpUtil.getInstance().setBooleanValue("youth_model_shown", false);
}

View File

@@ -1,27 +1,20 @@
package com.xscm.moduleutil.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ServiceInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ServiceUtils;
import com.orhanobut.logger.Logger;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.event.RoomGiftRunable;
@@ -35,35 +28,32 @@ import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MyMqttService extends Service implements MyEmqttConnectListener, MyEmqttMesgListener, MyEmqttSubscribeListener {
public class MyMqttService implements MyEmqttConnectListener, MyEmqttMesgListener, MyEmqttSubscribeListener {
private final static String TAG = "lxj";
private static int qos = 2;
// private static String HOST ="tcp://81.70.45.221";//正式
private static String HOST = "tcp://1.13.181.248";//测试
// private static String HOST = "tcp://47.120.21.132";//测试
private static MqttAndroidClient mqttAndroidClient;
private MqttConnectOptions mMqttConnectOptions;
private static boolean b = true;
// 使用单例模式
private static MyMqttService instance;
private static MyEmqttConnectListener mMyEmqttConnectListener;
private static MyEmqttMesgListener mMyEmqttMesgListener;
private static MyEmqttSubscribeListener mMyEmqttSubscribeListener;
// 使用线程安全的集合存储监听器
private static final CopyOnWriteArrayList<MyEmqttMesgListener> messageListeners = new CopyOnWriteArrayList<>();
private static final CopyOnWriteArrayList<MyEmqttConnectListener> connectListeners = new CopyOnWriteArrayList<>();
private static final CopyOnWriteArrayList<MyEmqttSubscribeListener> subscribeListeners = new CopyOnWriteArrayList<>();
private static final String TOPIC_BOSS = "qx_room_topic";
private static final String TOPIC_XLH = "qx_xunlehui";
private static final int NOTIFICATION_ID = 1;
// 添加后台线程处理
private HandlerThread mqttHandlerThread;
@@ -74,27 +64,31 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
private static final int MAX_RETRY_ATTEMPTS = 5;
private int retryCount = 0;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // API 31+
// 设置前台服务类型为 "connectedDevice" 或其他合适类型
setForegroundServiceBehavior(ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST);
// 服务状态
private static boolean isServiceRunning = false;
private Context mContext;
// 私有构造函数
private MyMqttService(Context context) {
this.mContext = context.getApplicationContext();
initService();
}
public static MyMqttService getInstance(Context context) {
if (instance == null) {
synchronized (MyMqttService.class) {
if (instance == null) {
instance = new MyMqttService(context);
}
}
}
// ⚠️ 必须在这个方法开始就调用 startForeground()
Notification notification = createNotification();
startForeground(NOTIFICATION_ID, notification);
return START_STICKY;
return instance;
}
private void setForegroundServiceBehavior(int foregroundServiceTypeManifest) {
// 空实现,仅用于兼容性处理
}
private void initService() {
isServiceRunning = true;
@Override
public void onCreate() {
super.onCreate();
// 创建专用的HandlerThread处理MQTT操作
mqttHandlerThread = new HandlerThread("MqttServiceThread");
mqttHandlerThread.start();
@@ -105,77 +99,127 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
try {
init();
} catch (MqttException e) {
throw new RuntimeException(e);
Log.e(TAG, "MQTT初始化异常", e);
}
}
private Notification createNotification() {
// 创建你的前台通知
// Notification.Builder builder = null;
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// builder = new Notification.Builder(this, "channel_id")
// .setContentTitle("MQTT Service")
// .setSmallIcon(R.mipmap.default_avatar);
// }
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// NotificationChannel channel = new NotificationChannel(
// "channel_id", "MQTT Channel",
// NotificationManager.IMPORTANCE_LOW);
// NotificationManager manager = getSystemService(NotificationManager.class);
// manager.createNotificationChannel(channel);
// }
// return builder.build();
// 创建你的前台通知
Notification.Builder builder = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder = new Notification.Builder(this, "mqtt_channel")
.setContentTitle("消息服务")
.setContentText("正在接收实时消息")
.setSmallIcon(R.mipmap.default_avatar);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
"mqtt_channel", "MQTT Channel",
NotificationManager.IMPORTANCE_LOW);
NotificationManager manager = getSystemService(NotificationManager.class);
if (manager != null) {
manager.createNotificationChannel(channel);
}
}
return builder != null ? builder.build() : null;
}
/**
* 开启服务
* 启动MQTT连接
*/
public static void startService(Context mContext) {
public void startService() {
b = true;
boolean serviceRunning = ServiceUtils.isServiceRunning(MyMqttService.class.getCanonicalName());
if (!serviceRunning) {
mContext.startService(new Intent(mContext, MyMqttService.class));
if (!isServiceRunning) {
initService();
}
}
public static void stopService(Context context) {
/**
* 停止MQTT服务
*/
public void stopService() {
b = false;
boolean serviceRunning = ServiceUtils.isServiceRunning(MyMqttService.class.getCanonicalName());
if (serviceRunning) {
try {
context.stopService(new Intent(context, MyMqttService.class));
} catch (Exception e) {
Log.e(TAG, "Failed to stop MQTT service", e);
}
isServiceRunning = false;
cleanup();
}
/**
* 初始化
*/
private void init() throws MqttException {
String CLIENTID = "android-" + MqttClient.generateClientId();
mqttAndroidClient = new MqttAndroidClient(mContext, HOST, CLIENTID);
mqttAndroidClient.setCallback(mqttCallback); //设置监听订阅消息的回调
mMqttConnectOptions = new MqttConnectOptions();
mMqttConnectOptions.setCleanSession(true); //设置是否清除缓存
mMqttConnectOptions.setConnectionTimeout(10); //设置超时时间,单位:秒
mMqttConnectOptions.setKeepAliveInterval(10); //设置心跳包发送间隔,单位:秒
mMqttConnectOptions.setUserName("public"); //设置用户名
mMqttConnectOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
if (mqttAndroidClient != null && !mqttAndroidClient.isConnected()) {
doClientConnection();
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
private void doClientConnection() throws MqttException {
// 在后台线程执行连接操作
mqttHandler.post(() -> {
if (mqttAndroidClient != null && !mqttAndroidClient.isConnected() && isConnectIsNomarl() && b) {
try {
mqttAndroidClient.connect(mMqttConnectOptions, null, iMqttActionListener);
} catch (Exception e) {
Log.e(TAG, "MQTT连接异常", e);
handleConnectionFailure();
}
}
});
}
private void handleConnectionFailure() {
retryCount++;
if (retryCount < MAX_RETRY_ATTEMPTS) {
// 延迟重试
mqttHandler.postDelayed(() -> {
if (b) {
try {
doClientConnection();
} catch (MqttException e) {
Log.e(TAG, "MQTT连接异常", e);
}
}
}, 5000); // 5秒后重试
} else {
Log.w(TAG, "达到最大重试次数,停止重试");
retryCount = 0;
}
}
public static void closeConnection() {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> {
try {
if (mqttAndroidClient != null && mqttAndroidClient.isConnected()) {
IMqttToken disconnect = mqttAndroidClient.disconnect();
disconnect.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Logger.e(TAG, "断开链接", "断开链接成功");
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Logger.e(TAG, "断开链接", "断开链接失败" + exception.getMessage());
}
});
}
} catch (Exception e) {
Log.e(TAG, "关闭连接异常", e);
}
});
}
/**
* 判断网络是否连接
*/
private boolean isConnectIsNomarl() {
try {
ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.i(TAG, "当前网络名称:" + name);
return true;
} else {
Log.i(TAG, "没有可用网络");
return false;
}
}
} catch (Exception e) {
Log.e(TAG, "检查网络状态异常", e);
}
return false;
}
/**
* 发布 (模拟其他客户端发布消息)
@@ -221,8 +265,10 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
subToken.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
if (mMyEmqttSubscribeListener != null) {
mMyEmqttSubscribeListener.onSubscribeSuccess(topic);
for (MyEmqttSubscribeListener listener : subscribeListeners) {
if (listener != null) {
listener.onSubscribeSuccess(topic);
}
}
Logger.e(TAG, "订阅成功:" + topic);
}
@@ -230,9 +276,12 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
@Override
public void onFailure(IMqttToken asyncActionToken,
Throwable exception) {
if ((!TOPIC_BOSS.equals(topic) && mMyEmqttSubscribeListener != null)
|| (!TOPIC_XLH.equals(topic) && mMyEmqttSubscribeListener != null)) {
mMyEmqttSubscribeListener.onSubscribeFailure();
for (MyEmqttSubscribeListener listener : subscribeListeners) {
if (listener != null &&
!TOPIC_BOSS.equals(topic) &&
!TOPIC_XLH.equals(topic)) {
listener.onSubscribeFailure();
}
}
Logger.e(TAG, "订阅失败:" + topic + ", error: " + exception.getMessage());
}
@@ -270,118 +319,20 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
});
}
/**
* 初始化
*/
private void init() throws MqttException {
String CLIENTID = "android-" + MqttClient.generateClientId();
mqttAndroidClient = new MqttAndroidClient(this, HOST, CLIENTID);
mqttAndroidClient.setCallback(mqttCallback); //设置监听订阅消息的回调
mMqttConnectOptions = new MqttConnectOptions();
mMqttConnectOptions.setCleanSession(true); //设置是否清除缓存
mMqttConnectOptions.setConnectionTimeout(10); //设置超时时间,单位:秒
mMqttConnectOptions.setKeepAliveInterval(10); //设置心跳包发送间隔,单位:秒
mMqttConnectOptions.setUserName("public"); //设置用户名
// mMqttConnectOptions.setPassword(new char[0]); //设置密码
mMqttConnectOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
if (mqttAndroidClient != null && !mqttAndroidClient.isConnected()) {
doClientConnection();
}
}
private void doClientConnection() throws MqttException {
// 在后台线程执行连接操作
mqttHandler.post(() -> {
if (mqttAndroidClient != null && !mqttAndroidClient.isConnected() && isConnectIsNomarl() && b) {
try {
mqttAndroidClient.connect(mMqttConnectOptions, null, iMqttActionListener);
} catch (Exception e) {
Log.e(TAG, "MQTT连接异常", e);
handleConnectionFailure();
}
}
});
}
private void handleConnectionFailure() {
retryCount++;
if (retryCount < MAX_RETRY_ATTEMPTS) {
// 延迟重试
mqttHandler.postDelayed(() -> {
if (b) {
try {
doClientConnection();
} catch (MqttException e) {
throw new RuntimeException(e);
}
}
}, 5000); // 5秒后重试
} else {
Log.w(TAG, "达到最大重试次数,停止重试");
retryCount = 0;
}
}
public static void closeConnection() {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> {
try {
if (mqttAndroidClient != null && mqttAndroidClient.isConnected()) {
IMqttToken disconnect = mqttAndroidClient.disconnect();
disconnect.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Logger.e(TAG, "断开链接", "断开链接成功");
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Logger.e(TAG, "断开链接", "断开链接失败" + exception.getMessage());
}
});
}
} catch (Exception e) {
Log.e(TAG, "关闭连接异常", e);
}
});
}
/**
* 判断网络是否连接
*/
private boolean isConnectIsNomarl() {
try {
ConnectivityManager connectivityManager = (ConnectivityManager) this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.i(TAG, "当前网络名称:" + name);
return true;
} else {
Log.i(TAG, "没有可用网络");
return false;
}
}
} catch (Exception e) {
Log.e(TAG, "检查网络状态异常", e);
}
return false;
}
//MQTT是否连接成功的监听
private IMqttActionListener iMqttActionListener = new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken arg0) {
retryCount = 0; // 重置重试计数
if (mMyEmqttConnectListener != null) {
mMyEmqttConnectListener.onConnectSuccess();
// 通知所有连接监听器
for (MyEmqttConnectListener listener : connectListeners) {
if (listener != null) {
listener.onConnectSuccess();
}
}
Logger.e(TAG, "链接状态:", "链接成功");
subscribe(TOPIC_BOSS);
subscribe(TOPIC_XLH);
@@ -389,12 +340,15 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
@Override
public void onFailure(IMqttToken arg0, Throwable arg1) {
if (mMyEmqttConnectListener != null) {
mMyEmqttConnectListener.onConnectFailure();
// 通知所有连接监听器
for (MyEmqttConnectListener listener : connectListeners) {
if (listener != null) {
listener.onConnectFailure();
}
}
// if (arg0 instanceof MqttException) {
//// Logger.e(TAG, "链接状态:", "链接失败" + ((MqttException) arg1).getMessage());
// }
Logger.e(TAG, "链接状态:", "链接失败: " + arg1.getMessage());
// 在后台线程处理重连
mqttHandler.postDelayed(() -> {
if (b) {
@@ -404,7 +358,6 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
}
};
//订阅主题的回调
private MqttCallback mqttCallback = new MqttCallback() {
@@ -417,23 +370,29 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
Logger.e(TAG, "收到的消息", "主题:" + topic + " 收到的消息:" + messageStr);
if (topic.equals(TOPIC_BOSS)) {
// 处理消息
receiveMessage(topic, messageStr);
// receiveMessage(topic, messageStr);
// new Handler(Looper.getMainLooper()).post(() -> {
receiveMessage(topic, messageStr);
// });
// 通知监听器
if (mMyEmqttMesgListener != null) {
// 切换到主线程通知
new Handler(Looper.getMainLooper()).post(() -> {
mMyEmqttMesgListener.messageArrived(topic, messageStr);
});
}
// for (MyEmqttMesgListener listener : messageListeners) {
// if (listener != null) {
// // 切换到主线程通知
//// new Handler(Looper.getMainLooper()).post(() -> {
////// listener.messageArrived(topic, messageStr);
//// });
// }
// }
} else if (topic.equals(TOPIC_XLH)) {
receiveXlhMessage(messageStr);
// receiveXlhMessage(messageStr);
// new Handler(Looper.getMainLooper()).post(() -> {
receiveXlhMessage(messageStr);
// });
}
} catch (Exception e) {
Log.e(TAG, "处理MQTT消息异常", e);
}
});
}
@Override
@@ -443,9 +402,13 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
@Override
public void connectionLost(Throwable arg0) {
if (mMyEmqttConnectListener != null) {
mMyEmqttConnectListener.onConnectFailure();
// 通知所有连接监听器
for (MyEmqttConnectListener listener : connectListeners) {
if (listener != null) {
listener.onConnectFailure();
}
}
Logger.e(TAG, "链接状态:", "链接断开: " + arg0.getMessage());
// 在后台线程处理重连
@@ -454,7 +417,7 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
try {
doClientConnection();
} catch (MqttException e) {
throw new RuntimeException(e);
Log.e(TAG, "MQTT连接异常", e);
}
}
}, 1000);
@@ -463,14 +426,12 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
private void receiveXlhMessage(String messageStr) {
try {
String newdata = messageStr;//TextLengthUtil.decode(data);
String newdata = messageStr;
JSONObject jsonObject = JSON.parseObject(newdata);
int type = jsonObject.getIntValue("type");
String message = jsonObject.getString("msg");
// 将事件处理放到主线程执行
new Handler(Looper.getMainLooper()).post(() -> {
processMessageType(type, message);
@@ -482,7 +443,7 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
private void receiveMessage(String topic, String data) {
try {
String newdata = data;//TextLengthUtil.decode(data);
String newdata = data;
JSONObject jsonObject = JSON.parseObject(newdata);
int type = jsonObject.getIntValue("type");
@@ -644,10 +605,10 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
}
}
@Override
public void onDestroy() {
b = false;
/**
* 清理资源
*/
public void cleanup() {
try {
// 清理资源
if (messageExecutorService != null) {
@@ -658,6 +619,7 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
}
} catch (InterruptedException e) {
messageExecutorService.shutdownNow();
Thread.currentThread().interrupt();
}
}
@@ -672,47 +634,61 @@ public class MyMqttService extends Service implements MyEmqttConnectListener, My
mqttAndroidClient.unregisterResources();
mqttAndroidClient = null;
}
stopForeground(true); // 停止前台服务
Logger.e(TAG, "服务关闭", "资源释放成功");
} catch (Exception e) {
Log.e(TAG, "服务关闭异常", e);
}
super.onDestroy();
}
// 修改监听器管理方法
public static void addMyEmqttMesgListener(MyEmqttMesgListener myEmqttMesgListener) {
mMyEmqttMesgListener = myEmqttMesgListener;
if (myEmqttMesgListener != null && !messageListeners.contains(myEmqttMesgListener)) {
messageListeners.add(myEmqttMesgListener);
}
}
public static void removeMyEmqttMesgListener(MyEmqttMesgListener myEmqttMesgListener) {
messageListeners.remove(myEmqttMesgListener);
}
public static void addMyEmqttConnectListener(MyEmqttConnectListener myEmqttConnectListener) {
mMyEmqttConnectListener = myEmqttConnectListener;
if (myEmqttConnectListener != null && !connectListeners.contains(myEmqttConnectListener)) {
connectListeners.add(myEmqttConnectListener);
}
}
public static void removeMyEmqttConnectListener(MyEmqttConnectListener myEmqttConnectListener) {
connectListeners.remove(myEmqttConnectListener);
}
public static void addMyEmqttSubscribeListener(MyEmqttSubscribeListener myEmqttSubscribeListener) {
mMyEmqttSubscribeListener = myEmqttSubscribeListener;
if (myEmqttSubscribeListener != null && !subscribeListeners.contains(myEmqttSubscribeListener)) {
subscribeListeners.add(myEmqttSubscribeListener);
}
}
public static void removeMyEmqttSubscribeListener(MyEmqttSubscribeListener myEmqttSubscribeListener) {
subscribeListeners.remove(myEmqttSubscribeListener);
}
@Override
public void onConnectSuccess() {
// 实现接口方法
}
@Override
public void onConnectFailure() {
// 实现接口方法
}
@Override
public void messageArrived(String topic, String mesg) {
LogUtils.e("lxj", "messageArrived:"+mesg);
LogUtils.e("lxj", "messageArrived:" + mesg);
}
@Override
public void onSubscribeSuccess(String topic) {
LogUtils.e("lxj", "onSubscribeSuccess:"+topic);
LogUtils.e("lxj", "onSubscribeSuccess:" + topic);
}
@Override

View File

@@ -40,9 +40,15 @@ public class RoomSingSongWheatView extends BaseWheatView {
@Override
protected void initPit(Context context, AttributeSet attrs) {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoomDefaultWheatView);
pitNumber = typedArray.getString(R.styleable.RoomDefaultWheatView_room_wheat_number);
typedArray.recycle();
TypedArray typedArray = null;
try {
typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoomDefaultWheatView);
pitNumber = typedArray.getString(R.styleable.RoomDefaultWheatView_room_wheat_number);
} finally {
if (typedArray != null) {
typedArray.recycle();
}
}
mIvTagBoss = findViewById(R.id.iv_tag_boos);
mTvTime = findViewById(R.id.tv_time);
tv_time_pk = findViewById(R.id.tv_time_pk);
@@ -55,83 +61,96 @@ public class RoomSingSongWheatView extends BaseWheatView {
@Override
protected void setPitData(RoomPitBean bean) {
if (bean == null) return;
sex = bean.getSex();
pitBean = bean; // 统一使用参数 bean
if (isOn()) {
//开启声浪
mIvRipple.stopAnimation();
mIvRipple.setVisibility(VISIBLE);
mTvName.setText(bean.getNickname());
ImageUtils.loadHeadCC(bean.getAvatar(), mRiv);
if (TextUtils.isEmpty(pitBean.getDress())) {
mIvFrame.setVisibility(INVISIBLE);
} else {
mIvFrame.setVisibility(VISIBLE);
mIvFrame.setSource(pitBean.getDress(), 1);
// ImageUtils.loadDecorationAvatar(pitBean.getDress_picture(), mIvFrame);
}
if (showBoss && WHEAT_BOSS.equals(pitNumber)) {
mIvTagBoss.setVisibility(GONE);
}
handleOnState(bean);
} else {
mTvName.setText(
"-1".equals(pitNumber) ? "" :
"9".equals(pitNumber) ? "主持位" :
"10".equals(pitNumber) ? "嘉宾位" :
pitNumber + "号麦位"
);
//麦位上锁
if (showBoss && WHEAT_BOSS.equals(pitNumber)) {
mIvTagBoss.setVisibility(VISIBLE);
ImageUtils.loadRes(isLocked() ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.room_ic_wheat_default, mRiv);
} else {
// mIvTagBoss.setVisibility(GONE);
// @DrawableRes int origin = getOriginImage();
// ImageUtils.loadRes(isLocked() ? R.mipmap.room_ic_wheat_default_suo :
// (origin == 0 ? R.mipmap.room_ic_wheat_default : origin), mRiv);
mRiv.setImageResource(bean.getIs_lock() == 1 ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.room_ic_wheat_default);
// ImageUtils.loadRes(isLocked() ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.room_ic_wheat_default, mRiv);
}
if (isMute()) {
ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex);
}
mIvFrame.setVisibility(INVISIBLE);
mIvFace.remove();
//停止声浪
mIvRipple.stopAnimation();
mIvRipple.setVisibility(GONE);
handleOffState(bean);
}
updateSexIcon();
updateCharmViewVisibility(bean);
updatePkState(bean);
}
private void handleOnState(RoomPitBean bean) {
stopAndClearAnimation(); // 清理之前的动画资源
mIvRipple.setVisibility(VISIBLE);
mTvName.setText(bean.getNickname());
ImageUtils.loadHeadCC(bean.getAvatar(), mRiv);
if (TextUtils.isEmpty(bean.getDress())) {
mIvFrame.setVisibility(INVISIBLE);
} else {
mIvFrame.setVisibility(VISIBLE);
mIvFrame.setSource(bean.getDress(), 1);
}
if (showBoss && TextUtils.equals(WHEAT_BOSS, pitNumber)) {
mIvTagBoss.setVisibility(GONE);
}
}
private void handleOffState(RoomPitBean bean) {
stopAndClearAnimation(); // 下麦时停止并清理动画
mTvName.setText(getPitNumberText());
if (showBoss && TextUtils.equals(WHEAT_BOSS, pitNumber)) {
mIvTagBoss.setVisibility(VISIBLE);
int resId = bean.getIs_lock() == 1 ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.room_ic_wheat_default;
mRiv.setImageResource(resId);
} else {
mRiv.setImageResource(bean.getIs_lock() == 1 ? R.mipmap.room_ic_wheat_default_suo : R.mipmap.room_ic_wheat_default);
}
if (isMute()) {
ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex);
}
mIvFrame.setVisibility(INVISIBLE);
mIvFace.remove();
mIvRipple.setVisibility(GONE);
}
private String getPitNumberText() {
if ("-1".equals(pitNumber)) return "";
if ("9".equals(pitNumber)) return "主持位";
if ("10".equals(pitNumber)) return "嘉宾位";
return pitNumber + "号麦位";
}
private void updateSexIcon() {
if (showSexIcon) {
checkSex();
}
if (pitBean.getNickname() == null || pitBean.getNickname().isEmpty()) {
mCharmView.setVisibility(GONE);
} else {
mCharmView.setVisibility(VISIBLE);
}
}
if (pitBean.is_pk() ){
if (pitBean.getUser_id()!=null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
private void updateCharmViewVisibility(RoomPitBean bean) {
boolean isEmptyNickname = bean.getNickname() == null || bean.getNickname().isEmpty();
mCharmView.setVisibility(isEmptyNickname ? GONE : VISIBLE);
}
private void updatePkState(RoomPitBean bean) {
if (bean.is_pk()) {
String userId = bean.getUser_id();
if (userId != null && !userId.equals("0") && !userId.isEmpty()) {
tv_time_pk.setVisibility(VISIBLE);
setSex(pitBean.getCharm(),false);
setSex(bean.getCharm(), false);
mCharmView.setVisibility(GONE);
}else {
} else {
tv_time_pk.setVisibility(GONE);
}
// ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mCharmView.getLayoutParams();
// params.width = 35;
// mCharmView.setLayoutParams(params);
}else {
} else {
tv_time_pk.setVisibility(GONE);
mCharmView.setVisibility(VISIBLE);
// ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mCharmView.getLayoutParams();
// params.width = 52;
// mCharmView.setLayoutParams(params);
}
// setCardiac(pitBean.getPit_number(), 0.0f);
}
public void setSex( String value, boolean format) {
public void setSex(String value, boolean format) {
if (format) {
tv_time_pk.setText(value);
} else {
@@ -139,12 +158,12 @@ public class RoomSingSongWheatView extends BaseWheatView {
long xd = Long.parseLong(value);
if (xd > 9999 || xd < -9999) {
tv_time_pk.setText(String.format("%.2fw", xd / 10000.0f));
// mBinding.tvValue.setText(String.valueOf(xd));
} else {
tv_time_pk.setText(value);
}
} catch (Exception e) {
e.printStackTrace();
tv_time_pk.setText("0"); // 设置默认值防止UI异常
}
}
}
@@ -210,38 +229,91 @@ public class RoomSingSongWheatView extends BaseWheatView {
if (maozi != null) maozi.setVisibility(GONE);
}
// 添加内存释放方法
public void releaseResources() {
stopAndClearAnimation();
// 清理头像加载
if (mRiv != null) {
mRiv.setImageBitmap(null);
}
// 清理框架视图
if (mIvFrame != null) {
mIvFrame.release(); // 清理SVGA资源
}
// 清理表情视图
if (mIvFace != null) {
mIvFace.remove();
}
// 清理其他图片资源
if (mIvSex != null) {
mIvSex.setImageBitmap(null);
}
if (mIvTagBoss != null) {
mIvTagBoss.setImageBitmap(null);
}
}
// 停止并清理动画资源
private void stopAndClearAnimation() {
if (mIvRipple != null) {
mIvRipple.stopAnimation();
// 清理SVGA资源避免内存泄漏
mIvRipple.clear();
}
}
@Override
protected void onDetachedFromWindow() {
// 视图从窗口分离时释放资源
releaseResources();
super.onDetachedFromWindow();
}
@Override
public void onRemoteSoundLevelUpdate(String userId, int soundLevel) {
// 暂无实现
}
@Override
public void onLocalSoundLevelUpdate(int volume) {
if (volume==0){
mIvRipple.stopAnimation();
} else {
if (pitBean.getUser_id().equals(SpUtil.getUserId()) && closePhone) {
if (volume == 0) {
if (mIvRipple != null) {
mIvRipple.stopAnimation();
}else {
mIvRipple.post(() -> {
if (!mIvRipple.isAnimating()) {
mIvRipple.startAnimation();
}
mIvRipple.setVisibility(VISIBLE);
});
}
} else {
// 增加空指针检查
if (pitBean != null && pitBean.getUser_id() != null &&
pitBean.getUser_id().equals(SpUtil.getUserId()) && closePhone) {
if (mIvRipple != null) {
mIvRipple.stopAnimation();
}
} else {
if (mIvRipple != null) {
mIvRipple.post(() -> {
if (mIvRipple != null && !mIvRipple.isAnimating()) {
mIvRipple.startAnimation();
}
if (mIvRipple != null) {
mIvRipple.setVisibility(VISIBLE);
}
});
}
}
}
}
@Override
public void userJoined(int userId, int elapsd) {
// 暂无实现
}
@Override
public void userOffline(int userId, int reason) {
// 暂无实现
}
}

View File

@@ -22,13 +22,12 @@ public class WheatLayoutManager {
private int currentSinglePit = -1;
private RoomDefaultWheatView singleWheatView;
// 麦位索引映射9,10,1~8
private final int[] pitIndexMap = {9, 10, 1, 2, 3, 4, 5, 6, 7, 8};
public interface OnWheatClickListener {
void onWheatClick(RoomDefaultWheatView view, int pitNumber);
void onMakeWheatClick(RoomDefaultWheatView view, int pitNumber);
}
private @Nullable OnWheatClickListener wheatClickListener;
@@ -39,11 +38,13 @@ public class WheatLayoutManager {
}
public void setWheatData(List<RoomPitBean> pitList) {
if (pitList == null || pitList.size() < 10) return;
this.pitList = pitList;
restoreMultiWheat();
}
public void setWheatDataPk(List<RoomPitBean> pitList, int layoutType) {
if (pitList == null || pitList.size() < 10) return;
this.pitList = pitList;
restoreMultiWheatPk(layoutType);
}
@@ -54,19 +55,15 @@ public class WheatLayoutManager {
public void showSingleWheat(int pitNumber) {
if (isSingleMode && this.currentSinglePit == pitNumber) return;
if (pitNumber < 1 || pitNumber > 10 || pitList == null || pitList.size() < 10) return;
container.removeAllViews();
if (pitNumber < 1 || pitNumber > 10 || pitList == null || pitList.size() < 10)
return;
RoomPitBean bean = pitList.get(pitNumber - 1);
singleWheatView = new RoomDefaultWheatView(context);
singleWheatView.pitNumber = String.valueOf(pitNumber);
singleWheatView.setData(bean);
// 默认设置为 MATCH_PARENT也可以自定义
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
@@ -74,7 +71,6 @@ public class WheatLayoutManager {
params.setMargins(20, 20, 20, 20);
singleWheatView.setLayoutParams(params);
// 添加点击事件
singleWheatView.setOnClickListener(v -> {
if (wheatClickListener != null) {
wheatClickListener.onWheatClick(singleWheatView, pitNumber);
@@ -91,42 +87,24 @@ public class WheatLayoutManager {
container.removeAllViews();
int screenWidth = getScreenWidth();
int itemWidth = screenWidth / 4; // 每个控件宽度为屏幕宽度的 1/4
int itemWidth = screenWidth / 4;
LinearLayout row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
for (int i = 0; i < 10; i++) {
int pitNumber = pitIndexMap[i];
RoomDefaultWheatView wheatView = new RoomDefaultWheatView(context);
wheatView.pitNumber = String.valueOf(pitNumber);
wheatView.setData(pitList.get(pitNumber - 1));
RoomDefaultWheatView wheatView = createWheatView(pitNumber);
LinearLayout.LayoutParams params;
if (i == 0) {
int fixedHeightInDp = 110; // 固定高度为 100dp
int fixedHeightInPx = dpToPx(fixedHeightInDp); // 调用已有的 dpToPx 方法
// 第一个控件:左边距 86dp右边距 100dp
params = new LinearLayout.LayoutParams(itemWidth, fixedHeightInPx);
params.rightMargin = dpToPx(50);
} else if (i == 1) {
int fixedHeightInDp = 110; // 固定高度为 100dp
int fixedHeightInPx = dpToPx(fixedHeightInDp); // 调用已有的 dpToPx 方法
// 第二个控件:右边距 86dp
if (i == 0 || i == 1) {
int fixedHeightInPx = dpToPx(110);
params = new LinearLayout.LayoutParams(itemWidth, fixedHeightInPx);
if (i == 0) params.rightMargin = dpToPx(50);
} else {
int fixedHeightInDp = 90; // 固定高度为 100dp
int fixedHeightInPx = dpToPx(fixedHeightInDp); // 调用已有的 dpToPx 方法
int fixedHeightInPx = dpToPx(90);
params = new LinearLayout.LayoutParams(itemWidth - 30, fixedHeightInPx + 30);
// 其他控件保持原有逻辑
// if (i > 1 && (i - 2) % 4 != 0) {
// params.leftMargin = 12;
// params.rightMargin = 12;
// }
params.setMargins(0, 0, 0, 0); // 不设右边距,由 row padding 控制
params.setMargins(0, 0, 0, 0);
}
wheatView.setLayoutParams(params);
@@ -134,143 +112,48 @@ public class WheatLayoutManager {
if (wheatClickListener != null) {
wheatClickListener.onWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber));
}
// showSingleWheat(Integer.parseInt(wheatView.pitNumber));
});
row.addView(wheatView);
// 第一行添加两个后换行
if (i == 1) {
container.addView(row);
row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
} else if (i > 1 && (i - 2) % 4 == 3) {
if (i == 1 || (i > 1 && (i - 2) % 4 == 3)) {
container.addView(row);
row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
}
}
// 添加最后一行可能存在的剩余 view
if (row.getChildCount() > 0) {
container.addView(row);
}
isSingleMode = false;
currentSinglePit = -1;
}
// public void restoreMultiWheatPk(int layoutType, int width) {
// container.removeAllViews();
//
// int screenWidth = getScreenWidth();
// int itemWidth = screenWidth / 8; // 每个控件宽度为屏幕宽度的 1/4
//
// LinearLayout row = new LinearLayout(context);
// row.setOrientation(LinearLayout.HORIZONTAL);
//
// for (int i = 0; i < 10; i++) {
// int pitNumber = pitIndexMap[i];
// RoomDefaultWheatView wheatView = new RoomDefaultWheatView(context);
// wheatView.pitNumber = String.valueOf(pitNumber);
// wheatView.setData(pitList.get(pitNumber - 1));
//
// LinearLayout.LayoutParams params;
//
// if (i == 0) {
// int fixedHeightInDp = 110; // 固定高度为 100dp
// int fixedHeightInPx =context.getResources().getDimensionPixelSize(R.dimen.dp_80); // 调用已有的 dpToPx 方法
// // 第一个控件:左边距 86dp右边距 100dp
// params = new LinearLayout.LayoutParams(itemWidth, fixedHeightInPx);
// params.rightMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_50);
// } else if (i == 1) {
// int fixedHeightInDp = 110; // 固定高度为 100dp
// int fixedHeightInPx = context.getResources().getDimensionPixelSize(R.dimen.dp_80); // 调用已有的 dpToPx 方法
// // 第二个控件:右边距 86dp
// params = new LinearLayout.LayoutParams(itemWidth, fixedHeightInPx);
// } else {
// int fixedHeightInDp = 90; // 固定高度为 100dp
// int fixedHeightInPx = context.getResources().getDimensionPixelSize(R.dimen.dp_60); // 调用已有的 dpToPx 方法
// params = new LinearLayout.LayoutParams(itemWidth -10, fixedHeightInPx + 30);
// // 其他控件保持原有逻辑
//
//
//// if (i > 1 && (i - 2) % 4 != 0) {
//// params.leftMargin = 12;
//// params.rightMargin = 12;
//// }
// params.setMargins(0, 0, 0, 0); // 不设右边距,由 row padding 控制
// }
//
// wheatView.setLayoutParams(params);
// wheatView.setOnClickListener(v -> {
// if (wheatClickListener != null) {
// wheatClickListener.onWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber));
// }
//// showSingleWheat(Integer.parseInt(wheatView.pitNumber));
// });
//
// row.addView(wheatView);
//
// // 第一行添加两个后换行
// if (i == 1) {
// container.addView(row);
// row = new LinearLayout(context);
// row.setOrientation(LinearLayout.HORIZONTAL);
// } else if (i > 1 && (i - 2) % 4 == 3) {
// container.addView(row);
// row = new LinearLayout(context);
// row.setOrientation(LinearLayout.HORIZONTAL);
// }
// }
//
//// 添加最后一行可能存在的剩余 view
// if (row.getChildCount() > 0) {
// container.addView(row);
// }
// isSingleMode = false;
// currentSinglePit = -1;
// }
public void restoreMultiWheatPk(int layoutType) {
if (layoutType == 1) {
container.removeAllViews();
}
container.removeAllViews();
int screenWidth = getScreenWidth();
int itemWidth = screenWidth / 8;
LinearLayout row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
// 根据 layoutType 调整前两个控件的顺序
int firstPitNumber, secondPitNumber;
if (layoutType == 1) {
firstPitNumber = 10; // 第一个显示 10
secondPitNumber = 9; // 第二个显示 9
} else if (layoutType == 2) {
firstPitNumber = 9; // 第一个显示 9
secondPitNumber = 10; // 第二个显示 10
} else {
firstPitNumber = 9;
secondPitNumber = 10;
}
int firstPitNumber = layoutType == 1 ? 10 : 9;
int secondPitNumber = layoutType == 1 ? 9 : 10;
// 添加第一个控件10 或 9
addWheatViewItem(row, firstPitNumber, itemWidth*2, layoutType);
// 添加第二个控件9 或 10
addWheatViewItem(row, secondPitNumber, itemWidth*2, layoutType);
addWheatViewItem(row, firstPitNumber, itemWidth * 2, layoutType);
addWheatViewItem(row, secondPitNumber, itemWidth * 2, layoutType);
container.addView(row);
row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
// 添加其余 8 个控件1~8
for (int i = 2; i < 10; i++) {
int pitNumber = pitIndexMap[i];
addWheatViewItem(row, pitNumber, itemWidth, layoutType);
if (i > 1 && (i - 2) % 4 == 3) {
if ((i - 2) % 4 == 3) {
container.addView(row);
row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
@@ -285,43 +168,29 @@ public class WheatLayoutManager {
currentSinglePit = -1;
}
// 抽取公共方法:添加单个控件
private void addWheatViewItem(LinearLayout row, int pitNumber, int itemWidth, int layoutType) {
RoomDefaultWheatView wheatView = new RoomDefaultWheatView(context);
wheatView.pitNumber = String.valueOf(pitNumber);
wheatView.setData(pitList.get(pitNumber - 1));
RoomDefaultWheatView wheatView = createWheatView(pitNumber);
LinearLayout.LayoutParams params;
if (pitNumber == 9 || pitNumber == 10) {
int fixedHeightInPx = context.getResources().getDimensionPixelSize(R.dimen.dp_90);
if (pitNumber == 9) {
params = new LinearLayout.LayoutParams(itemWidth-40, fixedHeightInPx);
params = new LinearLayout.LayoutParams(itemWidth - 40, fixedHeightInPx);
if (layoutType == 1) {
// 9号在右边右边距10dp
params.rightMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_1);
params.setMargins(20, -30, -20, 0);
} else if (layoutType == 2) {
// 9号在左边左边距10dp
} else {
params.leftMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_1);
params.setMargins(-30, -20, 0, 0);
}
} else {
params = new LinearLayout.LayoutParams(itemWidth - 80, fixedHeightInPx);
if (layoutType == 1) {
// 10号在左边左边距15dp
// params.leftMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_5);
params.setMargins(-30, 10, 0, 0);
} else if (layoutType == 2) {
// 10号在右边右边距15dp
// params.rightMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_5);
} else {
params.setMargins(0, 10, -30, 0);
}
}
} else {
int fixedHeightInPx = context.getResources().getDimensionPixelSize(R.dimen.dp_60);
params = new LinearLayout.LayoutParams(itemWidth + 15, fixedHeightInPx + 20);
@@ -331,9 +200,9 @@ public class WheatLayoutManager {
wheatView.setLayoutParams(params);
wheatView.setOnClickListener(v -> {
if (wheatClickListener != null) {
if (layoutType==1) {
if (layoutType == 1) {
wheatClickListener.onWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber));
}else {
} else {
wheatClickListener.onMakeWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber));
}
}
@@ -342,7 +211,6 @@ public class WheatLayoutManager {
row.addView(wheatView);
}
private RoomDefaultWheatView createWheatView(int pitNumber) {
RoomDefaultWheatView wheatView = new RoomDefaultWheatView(context);
wheatView.pitNumber = String.valueOf(pitNumber);
@@ -350,14 +218,6 @@ public class WheatLayoutManager {
return wheatView;
}
private RoomMakeWheatView createRoomMakeWheatView(int pitNumber) {
RoomMakeWheatView wheatView = new RoomMakeWheatView(context);
wheatView.pitNumber = String.valueOf(pitNumber);
wheatView.setData(pitList.get(pitNumber - 1));
return wheatView;
}
private int dpToPx(int dp) {
return Math.round(dp * context.getResources().getDisplayMetrics().density);
}
@@ -367,21 +227,13 @@ public class WheatLayoutManager {
return metrics.widthPixels;
}
/**
* 更新指定 pitNumber 的麦位信息(用于局部刷新)
*/
public void updateSingleWheat(RoomPitBean pitBean, int pitNumber) {
if (pitList == null || pitList.isEmpty() || pitNumber < 1 || pitNumber > 10) return;
// 如果是单个展示模式且不是当前麦位,不处理
if (isSingleMode && this.currentSinglePit != pitNumber) return;
RoomDefaultWheatView wheatView = findWheatViewByPitNumber(pitNumber);
if (wheatView != null) {
// RoomPitBean bean = pitList.get(pitNumber - 1);
RoomPitBean bean = pitBean;
wheatView.setData(bean); // 刷新数据
wheatView.setData(pitBean);
}
}
@@ -410,22 +262,37 @@ public class WheatLayoutManager {
return null;
}
/**
* 批量刷新多个麦位状态
*/
public void refreshWheatData(List<RoomPitBean> newPitList, List<Integer> changedPits) {
this.pitList = newPitList;
for (int pitNumber : changedPits) {
// updateSingleWheat(pitNumber);
updateSingleWheat(pitList.get(pitNumber - 1), pitNumber);
}
}
public void updateSingleOnlineWheat(UserOnlineStatusBean bean) {
if (pitList == null || pitList.isEmpty()) return;
if (pitList == null || pitList.isEmpty() || bean == null) return;
for (RoomPitBean pitBean : pitList) {
int pitNumber = Integer.parseInt(pitBean.getPit_number());
RoomDefaultWheatView wheatView = findWheatViewByPitNumber(pitNumber);
wheatView.setOnlineStatus(bean); // 刷新数据
if (wheatView != null) {
wheatView.setOnlineStatus(bean);
}
}
}
public void clear() {
container.removeAllViews();
pitList = null;
singleWheatView = null;
isSingleMode = false;
currentSinglePit = -1;
}
public void clearData() {
pitList = null;
singleWheatView = null;
isSingleMode = false;
currentSinglePit = -1;
}
}

View File

@@ -44,11 +44,21 @@ public class WheatLayoutSingManager {
}
public void setWheatData(List<RoomPitBean> pitList) {
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
this.pitList = pitList;
restoreMultiWheat();
}
public void setWheatDataPk(List<RoomPitBean> pitList, int layoutType) {
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
this.pitList = pitList;
restoreMultiWheatPk(layoutType);
}
@@ -58,9 +68,19 @@ public class WheatLayoutSingManager {
}
public void showSingleWheat(int pitNumber) {
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
if (isSingleMode && this.currentSinglePit == pitNumber) return;
container.removeAllViews();
try {
container.removeAllViews();
} catch (Exception e) {
// 忽略异常,继续执行
return;
}
if (pitNumber < 1 || pitNumber > 10 || pitList == null || pitList.size() < 10)
return;
@@ -93,7 +113,21 @@ public class WheatLayoutSingManager {
}
public void restoreMultiWheat() {
container.removeAllViews();
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
try {
container.removeAllViews();
} catch (Exception e) {
// 忽略异常,继续执行
return;
}
if (pitList == null || pitList.size() < 10) {
return;
}
int screenWidth = getScreenWidth();
int itemWidth = screenWidth / 4; // 每个控件宽度为屏幕宽度的 1/4
@@ -126,11 +160,6 @@ public class WheatLayoutSingManager {
params = new LinearLayout.LayoutParams(itemWidth - 30, fixedHeightInPx + 30);
// 其他控件保持原有逻辑
// if (i > 1 && (i - 2) % 4 != 0) {
// params.leftMargin = 12;
// params.rightMargin = 12;
// }
params.setMargins(0, 0, 0, 0); // 不设右边距,由 row padding 控制
}
@@ -139,7 +168,6 @@ public class WheatLayoutSingManager {
if (wheatClickListener != null) {
wheatClickListener.onWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber));
}
// showSingleWheat(Integer.parseInt(wheatView.pitNumber));
});
row.addView(wheatView);
@@ -156,91 +184,33 @@ public class WheatLayoutSingManager {
}
}
// 添加最后一行可能存在的剩余 view
// 添加最后一行可能存在的剩余 view
if (row.getChildCount() > 0) {
container.addView(row);
}
isSingleMode = false;
currentSinglePit = -1;
}
// public void restoreMultiWheatPk(int layoutType, int width) {
// container.removeAllViews();
//
// int screenWidth = getScreenWidth();
// int itemWidth = screenWidth / 8; // 每个控件宽度为屏幕宽度的 1/4
//
// LinearLayout row = new LinearLayout(context);
// row.setOrientation(LinearLayout.HORIZONTAL);
//
// for (int i = 0; i < 10; i++) {
// int pitNumber = pitIndexMap[i];
// RoomDefaultWheatView wheatView = new RoomDefaultWheatView(context);
// wheatView.pitNumber = String.valueOf(pitNumber);
// wheatView.setData(pitList.get(pitNumber - 1));
//
// LinearLayout.LayoutParams params;
//
// if (i == 0) {
// int fixedHeightInDp = 110; // 固定高度为 100dp
// int fixedHeightInPx =context.getResources().getDimensionPixelSize(R.dimen.dp_80); // 调用已有的 dpToPx 方法
// // 第一个控件:左边距 86dp右边距 100dp
// params = new LinearLayout.LayoutParams(itemWidth, fixedHeightInPx);
// params.rightMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_50);
// } else if (i == 1) {
// int fixedHeightInDp = 110; // 固定高度为 100dp
// int fixedHeightInPx = context.getResources().getDimensionPixelSize(R.dimen.dp_80); // 调用已有的 dpToPx 方法
// // 第二个控件:右边距 86dp
// params = new LinearLayout.LayoutParams(itemWidth, fixedHeightInPx);
// } else {
// int fixedHeightInDp = 90; // 固定高度为 100dp
// int fixedHeightInPx = context.getResources().getDimensionPixelSize(R.dimen.dp_60); // 调用已有的 dpToPx 方法
// params = new LinearLayout.LayoutParams(itemWidth -10, fixedHeightInPx + 30);
// // 其他控件保持原有逻辑
//
//
//// if (i > 1 && (i - 2) % 4 != 0) {
//// params.leftMargin = 12;
//// params.rightMargin = 12;
//// }
// params.setMargins(0, 0, 0, 0); // 不设右边距,由 row padding 控制
// }
//
// wheatView.setLayoutParams(params);
// wheatView.setOnClickListener(v -> {
// if (wheatClickListener != null) {
// wheatClickListener.onWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber));
// }
//// showSingleWheat(Integer.parseInt(wheatView.pitNumber));
// });
//
// row.addView(wheatView);
//
// // 第一行添加两个后换行
// if (i == 1) {
// container.addView(row);
// row = new LinearLayout(context);
// row.setOrientation(LinearLayout.HORIZONTAL);
// } else if (i > 1 && (i - 2) % 4 == 3) {
// container.addView(row);
// row = new LinearLayout(context);
// row.setOrientation(LinearLayout.HORIZONTAL);
// }
// }
//
//// 添加最后一行可能存在的剩余 view
// if (row.getChildCount() > 0) {
// container.addView(row);
// }
// isSingleMode = false;
// currentSinglePit = -1;
// }
public void restoreMultiWheatPk(int layoutType) {
if (layoutType == 1) {
container.removeAllViews();
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
if (layoutType == 1) {
try {
container.removeAllViews();
} catch (Exception e) {
// 忽略异常,继续执行
return;
}
}
if (pitList == null || pitList.size() < 10) {
return;
}
int screenWidth = getScreenWidth();
int itemWidth = screenWidth / 8;
@@ -292,6 +262,11 @@ public class WheatLayoutSingManager {
// 抽取公共方法:添加单个控件
private void addWheatViewItem(LinearLayout row, int pitNumber, int itemWidth, int layoutType) {
// 检查容器状态
if (!isContainerValid()) {
return;
}
RoomSingSongWheatView wheatView = new RoomSingSongWheatView(context);
wheatView.pitNumber = String.valueOf(pitNumber);
wheatView.setData(pitList.get(pitNumber - 1));
@@ -317,11 +292,9 @@ public class WheatLayoutSingManager {
params = new LinearLayout.LayoutParams(itemWidth - 80, fixedHeightInPx);
if (layoutType == 1) {
// 10号在左边左边距15dp
// params.leftMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_5);
params.setMargins(-30, 10, 0, 0);
} else if (layoutType == 2) {
// 10号在右边右边距15dp
// params.rightMargin = context.getResources().getDimensionPixelSize(R.dimen.dp_5);
params.setMargins(0, 10, -30, 0);
}
@@ -347,7 +320,6 @@ public class WheatLayoutSingManager {
row.addView(wheatView);
}
private RoomSingSongWheatView createWheatView(int pitNumber) {
RoomSingSongWheatView wheatView = new RoomSingSongWheatView(context);
wheatView.pitNumber = String.valueOf(pitNumber);
@@ -362,7 +334,6 @@ public class WheatLayoutSingManager {
return wheatView;
}
private int dpToPx(int dp) {
return Math.round(dp * context.getResources().getDisplayMetrics().density);
}
@@ -376,6 +347,11 @@ public class WheatLayoutSingManager {
* 更新指定 pitNumber 的麦位信息(用于局部刷新)
*/
public void updateSingleWheat(RoomPitBean pitBean, int pitNumber) {
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
if (pitList == null || pitList.isEmpty() || pitNumber < 1 || pitNumber > 10) return;
// 如果是单个展示模式且不是当前麦位,不处理
@@ -383,8 +359,6 @@ public class WheatLayoutSingManager {
RoomSingSongWheatView wheatView = findWheatViewByPitNumber(pitNumber);
if (wheatView != null) {
// RoomPitBean bean = pitList.get(pitNumber - 1);
RoomPitBean bean = pitBean;
wheatView.setData(bean); // 刷新数据
}
@@ -392,6 +366,11 @@ public class WheatLayoutSingManager {
@Nullable
private RoomSingSongWheatView findWheatViewByPitNumber(int pitNumber) {
// 检查容器状态
if (container == null || !isContainerValid()) {
return null;
}
for (int i = 0; i < container.getChildCount(); i++) {
View row = container.getChildAt(i);
if (row instanceof LinearLayout) {
@@ -419,21 +398,73 @@ public class WheatLayoutSingManager {
* 批量刷新多个麦位状态
*/
public void refreshWheatData(List<RoomPitBean> newPitList, List<Integer> changedPits) {
this.pitList = newPitList;
for (int pitNumber : changedPits) {
// updateSingleWheat(pitNumber);
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
this.pitList = newPitList;
// 注意:原代码中此方法体为空,如果需要实现请取消注释下面的代码
// for (int pitNumber : changedPits) {
// updateSingleWheat(pitNumber);
// }
}
public void updateSingleOnlineWheat(UserOnlineStatusBean bean) {
// 检查容器状态
if (container == null || !isContainerValid()) {
return;
}
if (pitList == null || pitList.isEmpty()) return;
for (RoomPitBean pitBean : pitList) {
int pitNumber = Integer.parseInt(pitBean.getPit_number());
RoomSingSongWheatView wheatView = findWheatViewByPitNumber(pitNumber);
wheatView.setOnlineStatus(bean); // 刷新数据
if (wheatView != null) {
wheatView.setOnlineStatus(bean); // 刷新数据
}
}
}
// 添加容器状态检查方法
private boolean isContainerValid() {
try {
// 检查容器是否已附加到窗口
return container != null && container.isAttachedToWindow();
} catch (Exception e) {
return false;
}
}
// 添加资源清理方法
public void release() {
try {
if (container != null) {
// 清理所有子视图的资源
for (int i = 0; i < container.getChildCount(); i++) {
View child = container.getChildAt(i);
if (child instanceof LinearLayout) {
LinearLayout linearLayout = (LinearLayout) child;
for (int j = 0; j < linearLayout.getChildCount(); j++) {
View view = linearLayout.getChildAt(j);
if (view instanceof RoomSingSongWheatView) {
((RoomSingSongWheatView) view).releaseResources();
}
}
} else if (child instanceof RoomSingSongWheatView) {
((RoomSingSongWheatView) child).releaseResources();
}
}
container.removeAllViews();
}
} catch (Exception e) {
// 忽略异常
}
// 清理引用
pitList = null;
singleWheatView = null;
wheatClickListener = null;
}
}

View File

@@ -49,7 +49,7 @@ public class GiftUserAdapter extends BaseQuickAdapter<RewardUserBean, BaseViewHo
}else {
helper.setText(R.id.tv_pit, String.format("%s号麦", item.getPit_number()));
}
if (item.getPit_number().equals("8")) {
if (item.getPit_number().equals("10")) {
helper.setText(R.id.tv_pit, "嘉宾");
}
if (BaseWheatView.WHEAT_HOST.equals(item.getPit_number())) {

View File

@@ -292,7 +292,7 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
mBinding.user4.setOnClickListener(this::onChock);
mBinding.user5.setOnClickListener(this::onChock);
mBinding.user6.setOnClickListener(this::onChock);
// getTextView();
getTextView();
// initOverlayButtons();
// steView(type);
@@ -383,17 +383,26 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
private void getTextView() {
int defaultColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_0DFFB9); // 亲密拍默认颜色
int selectedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_white); // 切换到真爱拍的颜色
float defaultSize = 24f; // 亲密拍默认字体大小
float selectedSize = 16f; // 真爱拍默认字体大小
int clickedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_BB8BE2); // 点击后的颜色BB8BE2
// 默认是亲密拍
if (type == 2) {
toggleTextStyles(mBinding.qinmi, mBinding.zhenai, defaultColor, selectedColor, clickedColor, defaultSize, selectedSize, type);
} else if (type == 1) {
toggleTextStyles(mBinding.qinmi, mBinding.zhenai, defaultColor, selectedColor, clickedColor, defaultSize, selectedSize, type);
int defaultColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_0DFFB9); // 亲密拍默认颜色(绿色)
int selectedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_white); // 选中颜色(白色)
int clickedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_BB8BE2); // 真爱拍选中颜色(蓝色)
float defaultSize = 16f; // 默认字体大小
float selectedSize = 24f; // 选中字体大小
mBinding.zhenai.setText("真爱拍");
mBinding.qinmi.setText("亲密拍");
// 根据type设置初始状态
if (type == 1) {
// type=1 真爱拍模式
mBinding.zhenai.setTextColor(clickedColor); // 真爱拍蓝色
mBinding.zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize); // 真爱拍24号字体
mBinding.qinmi.setTextColor(selectedColor); // 亲密拍白色
mBinding.qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize); // 亲密拍16号字体
} else {
// type=2 亲密拍模式
mBinding.qinmi.setTextColor(defaultColor); // 亲密拍绿色
mBinding.qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize); // 亲密拍24号字体
mBinding.zhenai.setTextColor(selectedColor); // 真爱拍白色
mBinding.zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize); // 真爱拍16号字体
}
mBinding.zhenai.setOnClickListener(v -> {
if (wheatView.getUserId().equals(SpUtil.getUserId() + "")) {
@@ -451,7 +460,16 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
"确认",
"取消",
v -> {
steView(newType);
// steView(newType);
// // 根据新的type更新TextView样式
// int defaultColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_0DFFB9); // 绿色
// int selectedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_white); // 白色
// int clickedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_BB8BE2); // 蓝色
// float defaultSize = 16f;
// float selectedSize = 24f;
//
// toggleTextStyles(mBinding.qinmi, mBinding.zhenai, defaultColor, selectedColor, clickedColor, defaultSize, selectedSize, type);
// 点击“确认”按钮时执行
MvpPre.auctionMode(roomInfoResp.getRoom_info().getRoom_id(), newType == 1 ? "1" : "2");
},
@@ -851,8 +869,17 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
}
public void event1027(RoomMessageEvent messageEvent) {
type = messageEvent.getText().getType();
getTextView();
// getTextView();
steView(type);
// 更新TextView样式
int defaultColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_0DFFB9); // 绿色
int selectedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_white); // 白色
int clickedColor = ContextCompat.getColor(requireContext(), com.xscm.moduleutil.R.color.color_BB8BE2); // 蓝色
float defaultSize = 16f;
float selectedSize = 24f;
toggleTextStyles(mBinding.qinmi, mBinding.zhenai, defaultColor, selectedColor, clickedColor, defaultSize, selectedSize, type);
}
public void event1026(RoomMessageEvent messageEvent) {
@@ -915,9 +942,10 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
@Override
public void onDestroy() {
super.onDestroy();
// stub.setVisibility(GONE);
isButtonsInflated = false;
releaseCountDownTimer();
EventBus.getDefault().unregister(this);
// EventBus.getDefault().unregister(this);
}
private void yinc() {
@@ -1187,6 +1215,9 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
// if (EventBus.getDefault().isRegistered(this)) {
// EventBus.getDefault().unregister(this);
// }
// stub.setVisibility(GONE);
isButtonsInflated = false;
releaseCountDownTimer();
}
/**
@@ -1194,29 +1225,37 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
*
* @param qinmi 亲密拍 TextView
* @param zhenai 真爱拍 TextView
* @param defaultColor 默认颜色(如亲密拍原本颜色)
* @param selectedColor 点击后选中颜色(如真爱拍原本颜色)
* @param defaultSize 默认字体大小sp
* @param selectedSize 点击后选中字体大小sp
* @param defaultColor 默认颜色(绿色)
* @param selectedColor 选中颜色(色)
* @param clickedColor 真爱拍选中颜色(蓝色
* @param defaultSize 默认字体大小(16sp
* @param selectedSize 选中字体大小24sp
* @param type 类型1=真爱拍2=亲密拍)
*/
public void toggleTextStyles(TextView qinmi, TextView zhenai, int defaultColor,
int selectedColor, int clickedColor, float defaultSize, float selectedSize, int type) {
if (type == 1) {
// 切换到真爱拍样式
qinmi.setTextColor(selectedColor);
qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize);
zhenai.setTextColor(clickedColor);
zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize);
// 真爱拍模式:真爱拍选中(蓝色,大字体),亲密拍未选中(白色,小字体)
zhenai.setTextColor(clickedColor); // 真爱拍蓝色
zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize); // 真爱拍24号字体
qinmi.setTextColor(selectedColor); // 亲密拍白色
qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize); // 亲密拍16号字体
} else if (type == 2) {
// 默认亲密拍样式
qinmi.setTextColor(defaultColor);
qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize);
zhenai.setTextColor(selectedColor);
zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize);
// 亲密拍模式:亲密拍选中(绿色,大字体),真爱拍未选中(白色,小字体)
qinmi.setTextColor(defaultColor); // 亲密拍绿色
qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize); // 亲密拍24号字体
zhenai.setTextColor(selectedColor); // 真爱拍白色
zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize); // 真爱拍16号字体
}
mBinding.qinmi.requestLayout();
mBinding.qinmi.invalidate();
mBinding.zhenai.requestLayout();
mBinding.zhenai.invalidate();
}
///
}

View File

@@ -256,7 +256,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
mRoomInfoResp = resp;
loadSubFragment();
// 更新子Fragment视图
// updateChildFragmentViews();
updateChildFragmentViews();
}
public void updateChildFragmentViews() {
@@ -269,6 +269,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
getView().post(() -> {
if (mRoomInfoResp != null && mRoomInfoResp.getRoom_info() != null) {
String typeId = mRoomInfoResp.getRoom_info().getType_id();
String labelId = mRoomInfoResp.getRoom_info().getLabel_id();
if ("7".equals(typeId)) {
// 保持 tag 使用一致性
@@ -278,13 +279,26 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
friendshipRoomFragment.roomInfoUpdate(mRoomInfoResp);
}
}else if ("2".equals(typeId)){//拍卖房
} else if ("2".equals(typeId)) {//拍卖房
RoomAuctionFragment auctionRoomFragment = (RoomAuctionFragment) getChildFragmentManager()
.findFragmentByTag(RoomAuctionFragment.class.getSimpleName());
if (auctionRoomFragment != null && auctionRoomFragment.isAdded()){
if (auctionRoomFragment != null && auctionRoomFragment.isAdded()) {
auctionRoomFragment.roomInfoUpdate(mRoomInfoResp);
}
}else if ("1".equals(typeId) || "3".equals(typeId) || "4".equals(typeId)){
if ("2".equals(labelId)){
RoomKtvFragment roomKtvFragment = (RoomKtvFragment) getChildFragmentManager()
.findFragmentByTag(RoomKtvFragment.class.getSimpleName());
if (roomKtvFragment != null && roomKtvFragment.isAdded()) {
roomKtvFragment.roomInfoUpdate(mRoomInfoResp);
}
}else if ("1".equals(labelId)){
SingSongFragment singSongFragment = (SingSongFragment) getChildFragmentManager()
.findFragmentByTag(SingSongFragment.class.getSimpleName());
if (singSongFragment != null && singSongFragment.isAdded()) {
singSongFragment.roomInfoUpdate(mRoomInfoResp);
}
}
}
}
});
@@ -373,38 +387,29 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return;
// replaceNestedFragment(PublicScreenEaseChatFragment.newInstance(mRoomInfoResp), R.id.ease_container);
if (mRoomInfoResp.getRoom_info().getType_id().equals("1")) {
if (mRoomInfoResp.getRoom_info().getType_id().equals("1")) {//点唱
if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
replaceNestedFragment(SingSongFragment.newInstance(mRoomInfoResp), R.id.container);
// replaceNestedFragment(RoomPkFragment.newInstance(mRoomInfoResp), R.id.container);
replaceNestedFragment(SingSongFragment.newInstance(), R.id.container);
} else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
replaceNestedFragment(RoomKtvFragment.newInstance(mRoomInfoResp), R.id.container);
replaceNestedFragment(RoomKtvFragment.newInstance(), R.id.container);
}
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("2")) {
// if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
replaceNestedFragment(RoomAuctionFragment.newInstance(), R.id.container);
// replaceNestedFragment(RoomAuctionFragment.newInstance(mRoomInfoResp, 1), R.id.container);
// } else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
replaceNestedFragment(RoomAuctionFragment.newInstance(), R.id.container);
// replaceNestedFragment(RoomAuctionFragment.newInstance(mRoomInfoResp, 2), R.id.container);
// }
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("2")) {//拍卖
replaceNestedFragment(RoomAuctionFragment.newInstance(), R.id.container);
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
replaceNestedFragment(RoomCabinFragment.newInstance(mRoomInfoResp), R.id.container);
setviewyc();
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("3")) {
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("3")) {//男神
if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
replaceNestedFragment(SingSongFragment.newInstance(mRoomInfoResp), R.id.container);
// replaceNestedFragment(RoomPkFragment.newInstance(mRoomInfoResp), R.id.container);
replaceNestedFragment(SingSongFragment.newInstance(), R.id.container);
} else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
replaceNestedFragment(RoomKtvFragment.newInstance(mRoomInfoResp), R.id.container);
replaceNestedFragment(RoomKtvFragment.newInstance(), R.id.container);
}
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("4")) {
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("4")) {//女神
if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
replaceNestedFragment(SingSongFragment.newInstance(mRoomInfoResp), R.id.container);
replaceNestedFragment(SingSongFragment.newInstance(), R.id.container);
// replaceNestedFragment(RoomPkFragment.newInstance(mRoomInfoResp), R.id.container);
} else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
replaceNestedFragment(RoomKtvFragment.newInstance(mRoomInfoResp), R.id.container);
replaceNestedFragment(RoomKtvFragment.newInstance(), R.id.container);
}
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("7")) {
replaceNestedFragment(FriendshipRoomFragment.newInstance(), R.id.container);
@@ -427,10 +432,10 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
((RoomActivity) getActivity()).changeBackground(com.xscm.moduleutil.R.mipmap.cabin_bj);
((RoomActivity) getActivity()).setvisibTop(false);
}else if (mRoomInfoResp.getRoom_info().getType_id().equals("7")){
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("7")) {
((RoomActivity) getActivity()).changeBackground(com.xscm.moduleutil.R.mipmap.jiaoy_bj);
((RoomActivity) getActivity()).setvisibTop(true);
}else {
} else {
((RoomActivity) getActivity()).changeBackgroundColor(mRoomInfoResp.getRoom_info().getRoom_background());
((RoomActivity) getActivity()).setvisibTop(true);
}
@@ -455,25 +460,32 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
public void replaceNestedFragment(@NonNull Fragment newFragment, int containerId) {
String tag = newFragment.getClass().getSimpleName(); // 使用类名作为 tag
//
// FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
//
// // 查找当前容器中的 Fragment可选
// Fragment currentFragment = getChildFragmentManager().findFragmentById(containerId);
//
// if (currentFragment != null) {
// if (tag.equals(currentFragment.getClass().getName())) {
// return; // 跳过相同类型替换
// }
// transaction.remove(currentFragment); // 先移除旧 Fragment
// }
//
// // 添加新 Fragment 并带上 tag
// transaction.add(containerId, newFragment, tag)
// .commitAllowingStateLoss();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
// 查找当前容器中的 Fragment可选
Fragment currentFragment = getChildFragmentManager().findFragmentById(containerId);
if (currentFragment != null) {
if (tag.equals(currentFragment.getClass().getName())) {
return; // 跳过相同类型替换
}
transaction.remove(currentFragment); // 先移除旧 Fragment
// 可选:检查是否已有相同类型的 Fragment
Fragment existing = getChildFragmentManager().findFragmentById(containerId);
if (existing != null) {
transaction.remove(existing);
}
transaction.replace(containerId, newFragment,tag);
transaction.commitAllowingStateLoss();
// 添加新 Fragment 并带上 tag
transaction.add(containerId, newFragment, tag)
.commitAllowingStateLoss();
// transaction.add(containerId, newFragment, tag)
// .addToBackStack(tag) // 可选:加入回退栈
// .commitAllowingStateLoss();
}
public void updateWheatStatus(RoomPitBean roomPitBean, int pit, boolean isOccupied, boolean isMine) {
@@ -525,7 +537,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
// mBinding.ivWheatFeeding.setImageResource(com.xscm.moduleutil.R.mipmap.room_wheat_feeding_up);
// mBinding.rlMic.setVisibility(View.VISIBLE);
((RoomActivity) getActivity()).ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding_up);
((RoomActivity) getActivity()).setrlMic( true);
((RoomActivity) getActivity()).setrlMic(true);
((RoomActivity) getActivity()).setBoolean(aBoolean);
} else {
aBoolean = true;
@@ -564,7 +576,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (mRoomInfoResp.getUser_info().getUser_id().equals(SpUtil.getUserId() + "") && mRoomInfoResp.getUser_info().getPit_number() == 9
&& !mRoomInfoResp.getRoom_info().getType_id().equals("2") && !mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
// mBinding.rlMore.setVisibility(View.VISIBLE);
((RoomActivity) getActivity()).rlMore( true);
((RoomActivity) getActivity()).rlMore(true);
} else {
// mBinding.rlMore.setVisibility(View.GONE);
@@ -962,12 +974,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (!haveMe) {
AgoraManager.getInstance(getContext()).ClientRole(false);
// mBinding.rlMic.setVisibility(View.GONE);
((RoomActivity) getActivity()).setrlMic( false);
((RoomActivity) getActivity()).setrlMic(false);
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, SpUtil.getUserId() + "");
// switchMic(2);
} else {
((RoomActivity) getActivity()).setrlMic( true);
((RoomActivity) getActivity()).setrlMic(true);
// mBinding.rlMic.setVisibility(View.VISIBLE);
if (AgoraManager.getInstance(getContext()).isLocalAudioEnabled()) {
@@ -1144,7 +1156,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
);
}
// @Subscribe(threadMode = ThreadMode.MAIN)
// @Subscribe(threadMode = ThreadMode.MAIN)
public void roomInfoEvent(RoomMessageEvent messageEvent) {
if (messageEvent.getMsgType() == 123) {
// // 获取 PublicScreenEaseChatFragment 实例
@@ -1179,7 +1191,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
// }
//// setRoleType(messageEvent.getRoleType(), messageEvent.getPit_number());
// } else
if (messageEvent.getMsgType() == 1034) {
if (messageEvent.getMsgType() == 1034) {
int count = messageEvent.getText().getCount();
if (count == 0) {
((RoomActivity) getActivity()).tvFirst(new SpannableStringBuilder("0人排队"));
@@ -1218,7 +1230,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}
}
// @Subscribe(threadMode = ThreadMode.MAIN)
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void roomInfoEvent(UserInfo messageEvent) {
// mBinding.llInput.setVisibility(View.VISIBLE);
// mBinding.inputMenu1.bringToFront(); // 强制将该 View 置于最上层
@@ -1250,7 +1262,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
case 1021:
auctionFragment.event1021(messageEvent);
break;
case 1027:
case 1027:
auctionFragment.event1027(messageEvent);
break;
default:
@@ -1261,5 +1273,80 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}
}
// TODO: 2025/8/30 Ktv模式
public void KtvFragmentEvent(RoomMessageEvent messageEvent) {
RoomKtvFragment ktvFragment = (RoomKtvFragment) getChildFragmentManager()
.findFragmentByTag(RoomKtvFragment.class.getSimpleName());
if (ktvFragment != null) {
switch (messageEvent.getMsgType()) {
case 1013:
ktvFragment.event1013(messageEvent);
break;
case 1003:
ktvFragment.event1003(messageEvent);
break;
case 1004:
ktvFragment.event1004(messageEvent);
break;
case 1021:
ktvFragment.event1021(messageEvent);
case 1005:
ktvFragment.event1005(messageEvent);
break;
case 1035:
ktvFragment.event1035(messageEvent);
break;
default:
// 可以添加默认处理或日志记录
LogUtils.w("Unhandled auction message type: " + messageEvent.getMsgType());
break;
}
}
}
// TODO: 2025/8/30 点唱房模式
public void SingSongEvent(RoomMessageEvent messageEvent) {
SingSongFragment singSongFragment = (SingSongFragment) getChildFragmentManager()
.findFragmentByTag(SingSongFragment.class.getSimpleName());
if (singSongFragment != null) {
switch (messageEvent.getMsgType()) {
case 1037:
singSongFragment.event1037(messageEvent);
break;
case 1003:
singSongFragment.event1003(messageEvent);
break;
case 1004:
singSongFragment.event1004(messageEvent);
break;
case 1005:
singSongFragment.event1005(messageEvent);
break;
case 1015:
singSongFragment.event1015(messageEvent);
break;
case 1030:
singSongFragment.event1030(messageEvent);
break;
case 1031:
singSongFragment.event1031(messageEvent);
break;
case 1032:
singSongFragment.event1032(messageEvent);
break;
case 1033:
singSongFragment.event1033(messageEvent);
break;
default:
// 可以添加默认处理或日志记录
LogUtils.w("Unhandled auction message type: " + messageEvent.getMsgType());
break;
}
}
}
}

View File

@@ -67,10 +67,10 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
private RoomOnline online;
public static RoomKtvFragment newInstance(RoomInfoResp roomInfoResp) {
public static RoomKtvFragment newInstance() {
RoomKtvFragment fragment = new RoomKtvFragment();
Bundle args = new Bundle();
args.putSerializable("roomInfo", roomInfoResp);
// args.putSerializable("roomInfo", roomInfoResp);
fragment.setArguments(args);
return fragment;
}
@@ -78,38 +78,19 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfo");
// roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfo");
}
@Override
public void onStart() {
super.onStart();
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
public void roomInfoUpdate(RoomInfoResp resp){
roomInfoResp = resp;
upData();
}
@Override
public void onStop() {
super.onStop();
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}
@Override
protected RoomPresenter bindPresenter() {
return new RoomPresenter(this, getActivity());
}
@Override
protected void initData() {
private void upData() {
parentFragment = (RoomFragment) getParentFragment();
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setvisibTop(true);
}
// MvpPre.getCharmRank(roomInfoResp.getRoom_info().getRoom_id());
mKaraokeView = new KaraokeView(mBinding.lyricsView, null);
mKaraokeView.setKaraokeEvent(new KaraokeEvent() {
@Override
@@ -130,24 +111,17 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
if (roomInfoResp.getSong_user_info() != null) {
// RoomFragment parentFragment = (RoomFragment) getParentFragment();
// if (parentFragment != null) {
if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) {
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(3, -1);
((RoomActivity) getActivity()).switchMic(1);
}
// parentFragment.setRoleType(3, -1);
// parentFragment.switchMic(1);
} else {
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(0, 0);
}
// parentFragment.setRoleType(0, 0);
// parentFragment.switchMic(2);
}
// }
AgoraManager.getInstance(getActivity()).stopMuisc();
if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) {
did = roomInfoResp.getSong_user_info().getDid();
@@ -168,10 +142,6 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
pitBean.setUser_id(roomInfoResp.getSong_user_info().getUser_id());
pitBean.setCharm(roomInfoResp.getSong_user_info().getCharm());
roomDefaultWheatView.setData(pitBean);
// RoomFragment parentFragment = (RoomFragment) getParentFragment();
// if (parentFragment != null) {
// parentFragment.mus();
// }
} else {
RoomKtvWheatView roomDefaultWheatView = mBinding.muYc;
RoomPitBean pitBean = new RoomPitBean();
@@ -188,10 +158,6 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
roomDefaultWheatView.setData(roomPitBean);
if (roomPitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
// if (parentFragment != null) {
// parentFragment.setRoleType(2, 9);
// parentFragment.switchMic(2);
// }
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(2, 9);
@@ -202,10 +168,6 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
roomDefaultWheatView.setData(roomPitBean);
if (roomPitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
// if (parentFragment != null) {
// parentFragment.setRoleType(2, 10);
// parentFragment.switchMic(2);
// }
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(2, 10);
@@ -217,12 +179,9 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
if (roomInfoResp.getSong_pit_list() != null && roomInfoResp.getSong_pit_list().size() > 0) {
adapter.setNewData(roomInfoResp.getSong_pit_list());
for (RoomPitBean roomPitBean : roomInfoResp.getSong_pit_list()) {
if (roomPitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
// if (parentFragment != null) {
// parentFragment.setRoleType(3, Integer.parseInt(roomPitBean.getPit_number() != null ? roomPitBean.getPit_number() : "99"));
// parentFragment.switchMic(2);
// }
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(3, Integer.parseInt(roomPitBean.getPit_number() != null ? roomPitBean.getPit_number() : "99"));
@@ -233,6 +192,34 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
sv();
tzblChanged();
}
@Override
public void onStart() {
super.onStart();
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
}
@Override
public void onStop() {
super.onStop();
}
@Override
protected RoomPresenter bindPresenter() {
return new RoomPresenter(this, getActivity());
}
@Override
protected void initData() {
}
protected void tzblChanged() {
@@ -335,9 +322,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
};
mBinding.recyclerView.setAdapter(adapter);
if (roomInfoResp.getSong_pit_list() != null && roomInfoResp.getSong_pit_list().size() > 0) {
adapter.setNewData(roomInfoResp.getSong_pit_list());
}
AgoraManager.getInstance(getActivity()).selectAudioTrack(1);
isRotate = true;
@@ -481,6 +466,9 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
super.onDestroy();
endRotateAnimation();
// AgoraManager.getInstance(getActivity()).destroy();
if (EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().unregister(this);
}
}
//开始旋转
@@ -551,263 +539,493 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void roomInfoEvent(RoomMessageEvent messageEvent) {
boolean b = false;
RoomFragment parentFragment = (RoomFragment) getParentFragment();
if (messageEvent.getMsgType() == 1013) {
LogUtils.e("@@", messageEvent);
if (messageEvent.getText().getAction() == 3) {//下一首变化
if (messageEvent.getText().getNextInfo() != null) {
mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
} else {
mBinding.muXName.setText("暂无歌曲");
}
} else if (messageEvent.getText().getAction() == 2) {//切歌
if (messageEvent.getText().getSongInfo() != null) {
musicSongBean = messageEvent.getText().getSongInfo();
did = messageEvent.getText().getSongInfo().getDid();
duration = messageEvent.getText().getSongInfo().getDuration();
mBinding.muName.setText(messageEvent.getText().getSongInfo().getSong_name());
ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.musicPoster);
ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.muBj);
RoomKtvWheatView roomDefaultWheatView = mBinding.muYc;
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number("-1");
pitBean.setAvatar(messageEvent.getText().getSongInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getSongInfo().getNickname());
pitBean.setUser_id(messageEvent.getText().getSongInfo().getUser_id());
pitBean.setCharm(messageEvent.getText().getSongInfo().getCharm());
roomDefaultWheatView.setData(pitBean);
roomInfoResp.setSong_user_info(musicSongBean);
public void event1013(RoomMessageEvent messageEvent) {
if (messageEvent.getText().getAction() == 3) {//下一首变化
if (messageEvent.getText().getNextInfo() != null) {
mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
} else {
mBinding.muXName.setText("暂无歌曲");
}
} else if (messageEvent.getText().getAction() == 2) {//切歌
if (messageEvent.getText().getSongInfo() != null) {
musicSongBean = messageEvent.getText().getSongInfo();
did = messageEvent.getText().getSongInfo().getDid();
duration = messageEvent.getText().getSongInfo().getDuration();
mBinding.muName.setText(messageEvent.getText().getSongInfo().getSong_name());
ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.musicPoster);
ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.muBj);
RoomKtvWheatView roomDefaultWheatView = mBinding.muYc;
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number("-1");
pitBean.setAvatar(messageEvent.getText().getSongInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getSongInfo().getNickname());
pitBean.setUser_id(messageEvent.getText().getSongInfo().getUser_id());
pitBean.setCharm(messageEvent.getText().getSongInfo().getCharm());
roomDefaultWheatView.setData(pitBean);
roomInfoResp.setSong_user_info(musicSongBean);
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
AgoraManager.getInstance(getActivity()).stopMuisc();
LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code());
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
} else {
AgoraManager.getInstance(getActivity()).stopMuisc();
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 2);
}
if (getActivity() instanceof RoomActivity) {
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
AgoraManager.getInstance(getActivity()).stopMuisc();
LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code());
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
((RoomActivity) getActivity()).setRoleType(3, -1);
((RoomActivity) getActivity()).switchMic(1);
} else {
AgoraManager.getInstance(getActivity()).stopMuisc();
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 2);
}
if (getActivity() instanceof RoomActivity) {
// if (parentFragment != null) {
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
// parentFragment.setRoleType(3, -1);
// parentFragment.switchMic(1);
((RoomActivity) getActivity()).setRoleType(3, -1);
((RoomActivity) getActivity()).switchMic(1);
if (mBinding.muZc.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
((RoomActivity) getActivity()).setRoleType(2, -1);
((RoomActivity) getActivity()).switchMic(2);
} else {
if (mBinding.muZc.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
// parentFragment.setRoleType(2, -1);
// parentFragment.switchMic(2);
((RoomActivity) getActivity()).setRoleType(2, -1);
((RoomActivity) getActivity()).switchMic(2);
} else {
// parentFragment.setRoleType(0, 0);
// parentFragment.switchMic(2);
((RoomActivity) getActivity()).setRoleType(0, 0);
((RoomActivity) getActivity()).switchMic(2);
}
((RoomActivity) getActivity()).setRoleType(0, 0);
((RoomActivity) getActivity()).switchMic(2);
}
}
// if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
// setVisibilityView(1);
// } else if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "") && roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
// setVisibilityView(1);
// } else if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
// setVisibilityView(2);
// } else if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
// setVisibilityView(1);
// } else {
// setVisibilityView(3);
// }
} else {
did = "";
mBinding.muName.setText("");
}
if (messageEvent.getText().getNextInfo() != null) {
mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
} else {
mBinding.muXName.setText("");
}
// if (parentFragment != null) {
// parentFragment.mus();
// }
}
sv();
} else if (messageEvent.getMsgType() == 1003) {
if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(messageEvent.getText().getPit_number());
pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
if (pitBean.getPit_number().equals("9")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
roomDefaultWheatView.setData(pitBean);
} else if (pitBean.getPit_number().equals("10")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
roomDefaultWheatView.setData(pitBean);
}
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
} else {
b = false;
}
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(pitBean.getPit_number()), true, b);
}
} else {
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(messageEvent.getText().getPit_number());
pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
roomInfoResp.getSong_pit_list().add(pitBean);
did = "";
mBinding.muName.setText("");
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
sv();
} else if (messageEvent.getMsgType() == 1004) {
if (messageEvent.getText().getNextInfo() != null) {
mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
} else {
mBinding.muXName.setText("");
}
}
sv();
}
if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(messageEvent.getText().getPit_number());
pitBean.setUser_id("");
pitBean.setAvatar("");
pitBean.setNickname("");
pitBean.setSex("");
pitBean.setCharm("");
if (pitBean.getPit_number().equals("9")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
roomDefaultWheatView.setData(pitBean);
} else if (pitBean.getPit_number().equals("10")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
roomDefaultWheatView.setData(pitBean);
}
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
} else {
b = false;
}
public void event1003(RoomMessageEvent messageEvent){
boolean b = false;
if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(messageEvent.getText().getPit_number());
pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
if (pitBean.getPit_number().equals("9")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
roomDefaultWheatView.setData(pitBean);
} else if (pitBean.getPit_number().equals("10")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
roomDefaultWheatView.setData(pitBean);
}
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
} else {
b = false;
}
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(pitBean.getPit_number()), true, b);
}
} else {
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(messageEvent.getText().getPit_number());
pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
roomInfoResp.getSong_pit_list().add(pitBean);
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
sv();
}
public void event1004(RoomMessageEvent messageEvent){
boolean b = false;
if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(messageEvent.getText().getPit_number());
pitBean.setUser_id("");
pitBean.setAvatar("");
pitBean.setNickname("");
pitBean.setSex("");
pitBean.setCharm("");
if (pitBean.getPit_number().equals("9")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
roomDefaultWheatView.setData(pitBean);
} else if (pitBean.getPit_number().equals("10")) {
RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
roomDefaultWheatView.setData(pitBean);
}
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
} else {
b = false;
}
// AgoraManager.getInstance(getActivity()).setEnableAudio(b);
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(messageEvent.getText().getPit_number()), false, b);
}
} else {
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
roomInfoResp.getSong_pit_list().remove(i);
break;
}
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
}
sv();
} else if (messageEvent.getMsgType() == 1019) {
// RoomCharmRankBean charmRankBean=messageEvent.getText().getUserCharmList().get(0);
// RoomPitBean pitBean=mBinding.muYc.pitBean;
// pitBean.setCharm(charmRankBean.getCharm());
// mBinding.muYc.setData(pitBean);
LogUtils.e("1019", messageEvent);
// adapter.setNewData(messageEvent.getText().getUserCharmList());
} else if (messageEvent.getMsgType() == 1021) {
RoomPitBean pitBean = mBinding.muYc.pitBean;
pitBean.setCharm("0");
mBinding.muYc.setData(pitBean);
pitBean = mBinding.muZc.pitBean;
pitBean.setCharm("0");
mBinding.muZc.setData(pitBean);
pitBean = mBinding.muJb.pitBean;
pitBean.setCharm("0");
mBinding.muJb.setData(pitBean);
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
roomInfoResp.getSong_pit_list().get(i).setCharm("0");
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
} else if (messageEvent.getMsgType() == 1005) {
RoomPitBean pitBean = mBinding.muYc.pitBean;
if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(pitBean.getUser_id())) {
pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
mBinding.muYc.setData(pitBean);
}
if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(mBinding.muZc.pitBean.getUser_id())) {
mBinding.muZc.pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
mBinding.muZc.setData(mBinding.muZc.pitBean);
return;
}
if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(mBinding.muJb.pitBean.getUser_id())) {
mBinding.muJb.pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
mBinding.muJb.setData(mBinding.muJb.pitBean);
return;
}
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getToUserInfo().getUser_id() + "")) {
roomInfoResp.getSong_pit_list().get(i).setCharm(messageEvent.getText().getToUserInfo().getCharm());
}
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
} else if (messageEvent.getMsgType() == 1035) {
RoomPitBean pitBean = mBinding.muZc.pitBean;
if (pitBean.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
mBinding.muZc.setData(pitBean);
}
RoomPitBean pitBean1 = mBinding.muJb.pitBean;
if (pitBean1.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
pitBean1.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean1.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean1.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean1.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean1.setDress(messageEvent.getText().getFromUserInfo().getDress());
mBinding.muJb.setData(pitBean1);
}
RoomPitBean pitBean2 = mBinding.muYc.pitBean;
if (pitBean2.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
pitBean2.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean2.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean2.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean2.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean2.setDress(messageEvent.getText().getFromUserInfo().getDress());
mBinding.muYc.setData(pitBean2);
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(messageEvent.getText().getPit_number()), false, b);
}
} else {
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
roomInfoResp.getSong_pit_list().get(i).setCharm(messageEvent.getText().getFromUserInfo().getCharm());
roomInfoResp.getSong_pit_list().get(i).setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
roomInfoResp.getSong_pit_list().get(i).setNickname(messageEvent.getText().getFromUserInfo().getNickname());
roomInfoResp.getSong_pit_list().get(i).setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
roomInfoResp.getSong_pit_list().get(i).setDress(messageEvent.getText().getFromUserInfo().getDress());
roomInfoResp.getSong_pit_list().remove(i);
break;
}
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
}
sv();
}
public void event1021(RoomMessageEvent messageEvent){
RoomPitBean pitBean = mBinding.muYc.pitBean;
pitBean.setCharm("0");
mBinding.muYc.setData(pitBean);
pitBean = mBinding.muZc.pitBean;
pitBean.setCharm("0");
mBinding.muZc.setData(pitBean);
pitBean = mBinding.muJb.pitBean;
pitBean.setCharm("0");
mBinding.muJb.setData(pitBean);
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
roomInfoResp.getSong_pit_list().get(i).setCharm("0");
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
}
public void event1005(RoomMessageEvent messageEvent){
RoomPitBean pitBean = mBinding.muYc.pitBean;
if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(pitBean.getUser_id())) {
pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
mBinding.muYc.setData(pitBean);
}
if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(mBinding.muZc.pitBean.getUser_id())) {
mBinding.muZc.pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
mBinding.muZc.setData(mBinding.muZc.pitBean);
return;
}
if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(mBinding.muJb.pitBean.getUser_id())) {
mBinding.muJb.pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
mBinding.muJb.setData(mBinding.muJb.pitBean);
return;
}
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getToUserInfo().getUser_id() + "")) {
roomInfoResp.getSong_pit_list().get(i).setCharm(messageEvent.getText().getToUserInfo().getCharm());
}
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
}
public void event1035(RoomMessageEvent messageEvent){
RoomPitBean pitBean = mBinding.muZc.pitBean;
if (pitBean.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
mBinding.muZc.setData(pitBean);
}
RoomPitBean pitBean1 = mBinding.muJb.pitBean;
if (pitBean1.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
pitBean1.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean1.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean1.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean1.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean1.setDress(messageEvent.getText().getFromUserInfo().getDress());
mBinding.muJb.setData(pitBean1);
}
RoomPitBean pitBean2 = mBinding.muYc.pitBean;
if (pitBean2.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
pitBean2.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
pitBean2.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
pitBean2.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
pitBean2.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
pitBean2.setDress(messageEvent.getText().getFromUserInfo().getDress());
mBinding.muYc.setData(pitBean2);
}
for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
roomInfoResp.getSong_pit_list().get(i).setCharm(messageEvent.getText().getFromUserInfo().getCharm());
roomInfoResp.getSong_pit_list().get(i).setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
roomInfoResp.getSong_pit_list().get(i).setNickname(messageEvent.getText().getFromUserInfo().getNickname());
roomInfoResp.getSong_pit_list().get(i).setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
roomInfoResp.getSong_pit_list().get(i).setDress(messageEvent.getText().getFromUserInfo().getDress());
}
}
adapter.setNewData(roomInfoResp.getSong_pit_list());
}
// public void roomInfoEvent(RoomMessageEvent messageEvent) {
// boolean b = false;
// RoomFragment parentFragment = (RoomFragment) getParentFragment();
// if (messageEvent.getMsgType() == 1013) {
// LogUtils.e("@@", messageEvent);
// if (messageEvent.getText().getAction() == 3) {//下一首变化
// if (messageEvent.getText().getNextInfo() != null) {
// mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
// } else {
// mBinding.muXName.setText("暂无歌曲");
// }
// } else if (messageEvent.getText().getAction() == 2) {//切歌
// if (messageEvent.getText().getSongInfo() != null) {
// musicSongBean = messageEvent.getText().getSongInfo();
// did = messageEvent.getText().getSongInfo().getDid();
// duration = messageEvent.getText().getSongInfo().getDuration();
// mBinding.muName.setText(messageEvent.getText().getSongInfo().getSong_name());
// ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.musicPoster);
// ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.muBj);
// RoomKtvWheatView roomDefaultWheatView = mBinding.muYc;
// RoomPitBean pitBean = new RoomPitBean();
// pitBean.setPit_number("-1");
// pitBean.setAvatar(messageEvent.getText().getSongInfo().getAvatar());
// pitBean.setNickname(messageEvent.getText().getSongInfo().getNickname());
// pitBean.setUser_id(messageEvent.getText().getSongInfo().getUser_id());
// pitBean.setCharm(messageEvent.getText().getSongInfo().getCharm());
// roomDefaultWheatView.setData(pitBean);
// roomInfoResp.setSong_user_info(musicSongBean);
//
// if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
// AgoraManager.getInstance(getActivity()).stopMuisc();
// LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code());
// AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
//
// } else {
// AgoraManager.getInstance(getActivity()).stopMuisc();
// AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 2);
// }
// if (getActivity() instanceof RoomActivity) {
//// if (parentFragment != null) {
// if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
//// parentFragment.setRoleType(3, -1);
//// parentFragment.switchMic(1);
//
// ((RoomActivity) getActivity()).setRoleType(3, -1);
// ((RoomActivity) getActivity()).switchMic(1);
//
// } else {
// if (mBinding.muZc.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
//// parentFragment.setRoleType(2, -1);
//// parentFragment.switchMic(2);
// ((RoomActivity) getActivity()).setRoleType(2, -1);
// ((RoomActivity) getActivity()).switchMic(2);
// } else {
//// parentFragment.setRoleType(0, 0);
//// parentFragment.switchMic(2);
// ((RoomActivity) getActivity()).setRoleType(0, 0);
// ((RoomActivity) getActivity()).switchMic(2);
// }
// }
// }
//
//// if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
//// setVisibilityView(1);
//// } else if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "") && roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
//// setVisibilityView(1);
//// } else if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
//// setVisibilityView(2);
//// } else if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
//// setVisibilityView(1);
//// } else {
//// setVisibilityView(3);
//// }
//
// } else {
// did = "";
// mBinding.muName.setText("无");
// }
// if (messageEvent.getText().getNextInfo() != null) {
// mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
// } else {
// mBinding.muXName.setText("无");
// }
//// if (parentFragment != null) {
//// parentFragment.mus();
//// }
// }
// sv();
// } else if (messageEvent.getMsgType() == 1003) {
//
// if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
//
// RoomPitBean pitBean = new RoomPitBean();
// pitBean.setPit_number(messageEvent.getText().getPit_number());
// pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
// pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
// pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
// pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
// pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
// pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
//
// if (pitBean.getPit_number().equals("9")) {
// RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
// roomDefaultWheatView.setData(pitBean);
// } else if (pitBean.getPit_number().equals("10")) {
// RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
// roomDefaultWheatView.setData(pitBean);
// }
// if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
// b = true;
// AgoraManager.getInstance(getActivity()).ClientRole(true);
// AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
// } else {
// b = false;
// }
// if (parentFragment != null) {
// parentFragment.updateWheatStatus(pitBean, Integer.parseInt(pitBean.getPit_number()), true, b);
// }
// } else {
// RoomPitBean pitBean = new RoomPitBean();
// pitBean.setPit_number(messageEvent.getText().getPit_number());
// pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
// pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
// pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
// pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
// pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
// pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
// roomInfoResp.getSong_pit_list().add(pitBean);
// }
// adapter.setNewData(roomInfoResp.getSong_pit_list());
// sv();
// } else if (messageEvent.getMsgType() == 1004) {
//
// if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
// RoomPitBean pitBean = new RoomPitBean();
// pitBean.setPit_number(messageEvent.getText().getPit_number());
// pitBean.setUser_id("");
// pitBean.setAvatar("");
// pitBean.setNickname("");
// pitBean.setSex("");
// pitBean.setCharm("");
// if (pitBean.getPit_number().equals("9")) {
// RoomKtvWheatView roomDefaultWheatView = mBinding.muZc;
// roomDefaultWheatView.setData(pitBean);
// } else if (pitBean.getPit_number().equals("10")) {
// RoomKtvWheatView roomDefaultWheatView = mBinding.muJb;
// roomDefaultWheatView.setData(pitBean);
// }
// if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
// b = true;
// AgoraManager.getInstance(getActivity()).ClientRole(false);
// AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
// } else {
// b = false;
// }
//// AgoraManager.getInstance(getActivity()).setEnableAudio(b);
// if (parentFragment != null) {
// parentFragment.updateWheatStatus(pitBean, Integer.parseInt(messageEvent.getText().getPit_number()), false, b);
// }
// } else {
// for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
// if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
// roomInfoResp.getSong_pit_list().remove(i);
// break;
// }
// }
// adapter.setNewData(roomInfoResp.getSong_pit_list());
// }
// sv();
// } else if (messageEvent.getMsgType() == 1019) {
//// RoomCharmRankBean charmRankBean=messageEvent.getText().getUserCharmList().get(0);
//// RoomPitBean pitBean=mBinding.muYc.pitBean;
//// pitBean.setCharm(charmRankBean.getCharm());
//// mBinding.muYc.setData(pitBean);
// LogUtils.e("1019", messageEvent);
//// adapter.setNewData(messageEvent.getText().getUserCharmList());
// } else if (messageEvent.getMsgType() == 1021) {
// RoomPitBean pitBean = mBinding.muYc.pitBean;
// pitBean.setCharm("0");
// mBinding.muYc.setData(pitBean);
// pitBean = mBinding.muZc.pitBean;
// pitBean.setCharm("0");
// mBinding.muZc.setData(pitBean);
// pitBean = mBinding.muJb.pitBean;
// pitBean.setCharm("0");
// mBinding.muJb.setData(pitBean);
//
// for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
// roomInfoResp.getSong_pit_list().get(i).setCharm("0");
// }
// adapter.setNewData(roomInfoResp.getSong_pit_list());
//
// } else if (messageEvent.getMsgType() == 1005) {
// RoomPitBean pitBean = mBinding.muYc.pitBean;
// if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(pitBean.getUser_id())) {
// pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
// mBinding.muYc.setData(pitBean);
// }
//
// if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(mBinding.muZc.pitBean.getUser_id())) {
// mBinding.muZc.pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
// mBinding.muZc.setData(mBinding.muZc.pitBean);
// return;
// }
// if ((messageEvent.getText().getToUserInfo().getUser_id() + "").equals(mBinding.muJb.pitBean.getUser_id())) {
// mBinding.muJb.pitBean.setCharm(messageEvent.getText().getToUserInfo().getCharm());
// mBinding.muJb.setData(mBinding.muJb.pitBean);
// return;
// }
// for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
// if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getToUserInfo().getUser_id() + "")) {
// roomInfoResp.getSong_pit_list().get(i).setCharm(messageEvent.getText().getToUserInfo().getCharm());
// }
// }
// adapter.setNewData(roomInfoResp.getSong_pit_list());
// } else if (messageEvent.getMsgType() == 1035) {
// RoomPitBean pitBean = mBinding.muZc.pitBean;
// if (pitBean.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
// pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
// pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
// pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
// pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
// pitBean.setDress(messageEvent.getText().getFromUserInfo().getDress());
// mBinding.muZc.setData(pitBean);
// }
// RoomPitBean pitBean1 = mBinding.muJb.pitBean;
// if (pitBean1.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
// pitBean1.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
// pitBean1.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
// pitBean1.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
// pitBean1.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
// pitBean1.setDress(messageEvent.getText().getFromUserInfo().getDress());
// mBinding.muJb.setData(pitBean1);
// }
// RoomPitBean pitBean2 = mBinding.muYc.pitBean;
// if (pitBean2.getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
// pitBean2.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
// pitBean2.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
// pitBean2.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
// pitBean2.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
// pitBean2.setDress(messageEvent.getText().getFromUserInfo().getDress());
// mBinding.muYc.setData(pitBean2);
// }
// for (int i = 0; i < roomInfoResp.getSong_pit_list().size(); i++) {
// if (roomInfoResp.getSong_pit_list().get(i).getUser_id().equals(messageEvent.getText().getFromUserInfo().getUser_id() + "")) {
// roomInfoResp.getSong_pit_list().get(i).setCharm(messageEvent.getText().getFromUserInfo().getCharm());
// roomInfoResp.getSong_pit_list().get(i).setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
// roomInfoResp.getSong_pit_list().get(i).setNickname(messageEvent.getText().getFromUserInfo().getNickname());
// roomInfoResp.getSong_pit_list().get(i).setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
// roomInfoResp.getSong_pit_list().get(i).setDress(messageEvent.getText().getFromUserInfo().getDress());
// }
// }
// adapter.setNewData(roomInfoResp.getSong_pit_list());
// }
// }
@Override
public void roomInfo(RoomInfoResp resp) {

View File

@@ -19,6 +19,7 @@ import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.CompoundButton;
@@ -27,6 +28,8 @@ import android.widget.PopupWindow;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.blankj.utilcode.util.ObjectUtils;
@@ -52,8 +55,6 @@ import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.event.RoomBeckoningEvent;
import com.xscm.moduleutil.event.RoomOwnerLeaveEvent;
import com.xscm.moduleutil.event.RoomWheatEvent;
import com.xscm.moduleutil.event.ShowOnWheatDialogEvent;
import com.xscm.moduleutil.event.UserDownWheatEvent;
import com.xscm.moduleutil.event.UserInfoShowEvent;
import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.rtc.AgoraManager;
@@ -100,10 +101,10 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
private PopupWindow popupWindow;
CountDownTimer mCountDownTimer;
CountDownTimer mCountDownTimersta;
private RoomFragment parentFragment;
List<RoomPitBean> pitList ;
public static SingSongFragment newInstance(RoomInfoResp roomInfo) {
public static SingSongFragment newInstance() {
Bundle args = new Bundle();
args.putSerializable("roomInfo", roomInfo);
SingSongFragment fragment = new SingSongFragment();
fragment.setArguments(args);
return fragment;
@@ -112,10 +113,11 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
roomInfoResp = (RoomInfoResp) arguments.getSerializable("roomInfo");
roomId = roomInfoResp == null ? "" : roomInfoResp.getRoom_info().getRoom_id();
// roomInfoResp = (RoomInfoResp) arguments.getSerializable("roomInfo");
// roomId = roomInfoResp == null ? "" : roomInfoResp.getRoom_info().getRoom_id();
}
@Override
protected SingSongPresenter bindPresenter() {
return new SingSongPresenter(this, getActivity());
@@ -123,6 +125,10 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
@Override
protected void initData() {
upDtaView();
}
private void upDtaView() {
pitList= new ArrayList<>();
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setvisibTop(true);
@@ -130,26 +136,15 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 初始化 PopupWindow
initPopupWindow();
isWhether();
tzblChanged();
}
private void initWheatLayout() {
if ( roomInfoRespPk==null|| roomInfoRespPk.getPk_info() == null){
for (int i=0;i<pitList.size();i++){
wheatLayoutSingManager.updateSingleWheat(roomInfoResp.getRoom_info().getPit_list().get(i),i+1);
}
}
// else {
// for (int i=0;i<pitList.size();i++){
// wheatLayoutManager1.updateSingleWheat(roomInfoResp.getRoom_info().getPit_list().get(i),i+1);
// }
//
// }
parentFragment= (RoomFragment) getParentFragment();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
/**
* 这是判断当前用户是否是麦上房主、管理员、主持,不在主持麦的都是不同用户
@@ -366,16 +361,6 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
}
});
// List<RoomPitBean> pitList = new ArrayList<>();
// for (int i = 1; i <= 10; i++) {
// RoomPitBean pitBean = new RoomPitBean();
// pitBean.setPit_number("" + i);
// pitBean.setUser_id("0");
// pitBean.setCharm("");
// pitList.add(pitBean);
// }
// wheatLayoutSingManager.setWheatData(pitList);
// initWheatLayout();
if (!ObjectUtils.isEmpty(roomInfoResp.getRoom_info().getPit_list()) && roomInfoResp.getRoom_info().getPit_list().size() == 10) {
wheatLayoutSingManager.setWheatData(roomInfoResp.getRoom_info().getPit_list());
@@ -384,7 +369,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
}
private void isWhether() {
if (roomInfoResp.getPk_info() == null) {
if (roomInfoResp==null){
mBinding.flexboxLayout.setVisibility(View.VISIBLE);
mBinding.cl.setVisibility(View.GONE);
FlexboxLayout flexboxLayout = mBinding.flexboxLayout;
@@ -432,26 +417,34 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
pitList.add(pitBean);
}
wheatLayoutSingManager.setWheatData(pitList);
}else {
if (roomInfoResp.getPk_info() == null) {
if (!ObjectUtils.isEmpty(roomInfoResp.getRoom_info().getPit_list()) && roomInfoResp.getRoom_info().getPit_list().size() == 10) {
wheatLayoutSingManager.setWheatData(roomInfoResp.getRoom_info().getPit_list());
}
if (!ObjectUtils.isEmpty(roomInfoResp.getRoom_info().getPit_list()) && roomInfoResp.getRoom_info().getPit_list().size() == 10) {
wheatLayoutSingManager.setWheatData(roomInfoResp.getRoom_info().getPit_list());
}
// initWheatLayout();
} else {
mBinding.flexboxLayout.setVisibility(View.GONE);
mBinding.cl.setVisibility(View.VISIBLE);
MvpPre.postRoomInfo(roomInfoResp.getPk_info().getPk_room_id(), roomInfoResp.getUser_info().getPit_number() + "", 1);
} else {
mBinding.flexboxLayout.setVisibility(View.GONE);
mBinding.cl.setVisibility(View.VISIBLE);
MvpPre.postRoomInfo(roomInfoResp.getPk_info().getPk_room_id(), roomInfoResp.getUser_info().getPit_number() + "", 1);
}
if (roomInfoResp.getUser_info().getPit_number() != 9) {
mBinding.imMkf.setVisibility(GONE);
} else {
mBinding.imMkf.setVisibility(VISIBLE);
}
tzblChanged();
}
mBinding.btSta.setOnClickListener(this::onClick);
mBinding.btStop.setOnClickListener(this::onClick);
mBinding.imMkf.setOnClickListener(this::onClick);
if (roomInfoResp.getUser_info().getPit_number() != 9) {
mBinding.imMkf.setVisibility(GONE);
} else {
mBinding.imMkf.setVisibility(VISIBLE);
}
}
public void onWheatClicked(View ii) {
@@ -533,7 +526,6 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
if (event.getUser_id().equals(roomInfoResp.getRoom_info().getPit_list().get(i).getUser_id())) {
List<String> list = new ArrayList<>();
list.add(roomInfoResp.getRoom_info().getPit_list().get(i).getEmchat_username());
quxiao(list);
break;
}
}
@@ -542,13 +534,12 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
updateWheatData();
}
// TODO: 2025/3/28 取消订阅
private void quxiao(List<String> userIds) {
}
@Override
public void roomInfoUpdate(RoomInfoResp resp) {
roomInfoResp = resp;
roomId = roomInfoResp == null ? "" : roomInfoResp.getRoom_info().getRoom_id();
isWhether();
updateWheatData();
}
@@ -576,21 +567,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
}
}
/**
* 用户下麦
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void subscribeMessages(UserDownWheatEvent event) {
pitNumber = null;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onShowOnWheatDialogEvent(ShowOnWheatDialogEvent event) {
if (!isResumed()) {
return;
}
// MvpPre.checkShowOnWheatDlg(roomId);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSwitchPitEvent(RoomUpPitBean event) {
@@ -997,185 +974,324 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageReceived(RoomMessageEvent message) {
RoomFragment parentFragment = (RoomFragment) getParentFragment();
boolean b = false;
if (message.getMsgType() == 1003) {
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(Integer.parseInt(message.getText().getPit_number()) - 1);
pitBean.setUser_id(message.getText().getFromUserInfo().getUser_id() + "");
pitBean.setAvatar(message.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(message.getText().getFromUserInfo().getNickname());
pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
pitBean.setDress(message.getText().getFromUserInfo().getDress());
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
// if (roomInfoResp.getPk_info()==null) {
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
} else {
wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
}
// }else {
// wheatLayoutManager.setWheatDataPk(roomInfoResp.getRoom_info().getPit_list(), 1);
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void onMessageReceived(RoomMessageEvent message) {
// boolean b = false;
//
// if (message.getMsgType() == 1003) {
// RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(Integer.parseInt(message.getText().getPit_number()) - 1);
// pitBean.setUser_id(message.getText().getFromUserInfo().getUser_id() + "");
// pitBean.setAvatar(message.getText().getFromUserInfo().getAvatar());
// pitBean.setNickname(message.getText().getFromUserInfo().getNickname());
// pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
// pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
// pitBean.setDress(message.getText().getFromUserInfo().getDress());
// roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
//// if (roomInfoResp.getPk_info()==null) {
// if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
// wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
// } else {
// wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
// }
// 通知父 Fragment
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
} else {
b = false;
}
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(message.getText().getPit_number()), true, b);
}
} else if (message.getMsgType() == 1004) {
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(Integer.parseInt(message.getText().getPit_number()) - 1);
pitBean.setUser_id("");
pitBean.setAvatar("");
pitBean.setNickname("");
pitBean.setSex("");
pitBean.setCharm("");
pitBean.setDress("");
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
} else {
wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
}
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
} else {
b = false;
}
// AgoraManager.getInstance(getActivity()).setEnableAudio(b);
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(message.getText().getPit_number()), false, b);
}
} else if (message.getMsgType() == 1005) {
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getToUserInfo().getCharm());
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
}
} else {
for (RoomPitBean pitBean : roomInfoRespPk.getRoom_info().getPit_list()) {
if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getToUserInfo().getCharm());
wheatLayoutManager2.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
}
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getToUserInfo().getCharm());
wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
}
}
} else if (message.getMsgType() == 1030) {
MvpPre.postRoomInfo(message.getRoomId(), roomInfoResp.getUser_info().getPit_number() + "", 3);
if (message.getText().getType() == 1) {
MvpPre.postRoomInfo(message.getText().getRoom_id(), roomInfoResp.getUser_info().getPit_number() + "", 1);
if (message.getText().getRoom_id().equals(roomId)) {
mBinding.btSta.setVisibility(VISIBLE);
} else {
mBinding.btSta.setVisibility(INVISIBLE);
}
// parentFragment.setRoleType(5, -11);
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(5, -11);
}
}
} else if (message.getMsgType() == 1031) {
countDownTime(Long.parseLong(message.getText().getPk_end_times()), 1);
mBinding.btSta.setVisibility(INVISIBLE);
} else if (message.getMsgType() == 1032) {
// PkResultDialogFragment pkResultDialogFragment = new PkResultDialogFragment(requireContext(), message);
// pkResultDialogFragment.show();
showCountDownDialog(requireContext(), message);
ivitTop(message);
// parentFragment.setRoleType(3, -11);
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(3, -11);
}
} else if (message.getMsgType() == 1033) {
AgoraManager.getInstance(getContext()).leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId());
MvpPre.postRoomInfo(roomId, "0", 2);
mBinding.imStart2.setVisibility(GONE);
mBinding.imStart.setVisibility(GONE);
// parentFragment.setRoleType(3, -11);
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(3, -11);
}
roomInfoRespPk = null;
} else if (message.getMsgType() == 1015) {
String roomIdA = message.getText().getRoom_id_a();
String roomIdB = message.getText().getRoom_id_b();
String createValueA = message.getText().getCreate_value_a();
String receiveValueB = message.getText().getReceive_value_b();
if (roomIdA.equals(roomId)) {
// 当前 roomId 与 roomIdA 相同
mBinding.tvPkLeftValue.setText(createValueA);
mBinding.tvPkRightValue.setText(receiveValueB);
mBinding.pkProgress.setAnimProgress(100f * Integer.parseInt(createValueA) / (Integer.parseInt(createValueA) + Integer.parseInt(receiveValueB)));
} else if (roomIdB.equals(roomId)) {
// 当前 roomId 与 roomIdB 相同
mBinding.tvPkLeftValue.setText(receiveValueB);
mBinding.tvPkRightValue.setText(createValueA);
mBinding.pkProgress.setAnimProgress(100f * Integer.parseInt(receiveValueB) / (Integer.parseInt(createValueA) + Integer.parseInt(receiveValueB)));
}
} else if (message.getMsgType() == 125) {
RoomMessageEvent.text text = com.blankj.utilcode.util.GsonUtils.fromJson(message.getText().getText(), RoomMessageEvent.text.class);
if (text.getIs_mute() == 1) {
AgoraManager.getInstance(getContext()).ClientRole(false);
AgoraManager.getInstance(getContext()).muteLocalAudioStreamEx(false, SpUtil.getUserId());
} else {
AgoraManager.getInstance(getContext()).ClientRole(true);
AgoraManager.getInstance(getContext()).muteLocalAudioStreamEx(true, SpUtil.getUserId());
}
} else if (message.getMsgType() == 1007) {
roomInfoResp.getUser_info().setIs_host(1);
} else if (message.getMsgType() == 1018) {
roomInfoResp.getUser_info().setIs_host(0);
} else if (message.getMsgType() == 126) {
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, message.getText().getFromUserInfo().getUser_id() + "");
} else if (message.getMsgType() == 1021) {
//// }else {
//// wheatLayoutManager.setWheatDataPk(roomInfoResp.getRoom_info().getPit_list(), 1);
//// }
// // 通知父 Fragment
// if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
// b = true;
// AgoraManager.getInstance(getActivity()).ClientRole(true);
// AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
// } else {
// b = false;
// }
// if (parentFragment != null) {
// parentFragment.updateWheatStatus(pitBean, Integer.parseInt(message.getText().getPit_number()), true, b);
// }
// } else if (message.getMsgType() == 1004) {
// RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(Integer.parseInt(message.getText().getPit_number()) - 1);
// pitBean.setUser_id("");
// pitBean.setAvatar("");
// pitBean.setNickname("");
// pitBean.setSex("");
// pitBean.setCharm("");
// pitBean.setDress("");
// roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
// if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
// wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
// } else {
// wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
// }
// if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
// b = true;
// AgoraManager.getInstance(getActivity()).ClientRole(false);
// AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
// } else {
// b = false;
// }
//// AgoraManager.getInstance(getActivity()).setEnableAudio(b);
// if (parentFragment != null) {
// parentFragment.updateWheatStatus(pitBean, Integer.parseInt(message.getText().getPit_number()), false, b);
// }
// } else if (message.getMsgType() == 1005) {
// if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
// for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
// if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
// pitBean.setCharm(message.getText().getToUserInfo().getCharm());
// wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
// }
// }
// } else {
// for (RoomPitBean pitBean : roomInfoRespPk.getRoom_info().getPit_list()) {
// if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
// pitBean.setCharm(message.getText().getToUserInfo().getCharm());
// wheatLayoutManager2.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
// }
// }
//
// for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
// if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
// pitBean.setCharm(message.getText().getToUserInfo().getCharm());
// wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
// }
// }
// }
// } else if (message.getMsgType() == 1030) {
// MvpPre.postRoomInfo(message.getRoomId(), roomInfoResp.getUser_info().getPit_number() + "", 3);
// if (message.getText().getType() == 1) {
// MvpPre.postRoomInfo(message.getText().getRoom_id(), roomInfoResp.getUser_info().getPit_number() + "", 1);
// if (message.getText().getRoom_id().equals(roomId)) {
// mBinding.btSta.setVisibility(VISIBLE);
// } else {
// mBinding.btSta.setVisibility(INVISIBLE);
// }
//// parentFragment.setRoleType(5, -11);
// if (getActivity() instanceof RoomActivity) {
// ((RoomActivity) getActivity()).setRoleType(5, -11);
// }
// }
// } else if (message.getMsgType() == 1031) {
// countDownTime(Long.parseLong(message.getText().getPk_end_times()), 1);
// mBinding.btSta.setVisibility(INVISIBLE);
// } else if (message.getMsgType() == 1032) {
//// PkResultDialogFragment pkResultDialogFragment = new PkResultDialogFragment(requireContext(), message);
//// pkResultDialogFragment.show();
// showCountDownDialog(requireContext(), message);
// ivitTop(message);
//// parentFragment.setRoleType(3, -11);
// if (getActivity() instanceof RoomActivity) {
// ((RoomActivity) getActivity()).setRoleType(3, -11);
// }
// } else if (message.getMsgType() == 1033) {
// AgoraManager.getInstance(getContext()).leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId());
// MvpPre.postRoomInfo(roomId, "0", 2);
// mBinding.imStart2.setVisibility(GONE);
// mBinding.imStart.setVisibility(GONE);
//// parentFragment.setRoleType(3, -11);
// if (getActivity() instanceof RoomActivity) {
// ((RoomActivity) getActivity()).setRoleType(3, -11);
// }
// roomInfoRespPk = null;
//
// } else if (message.getMsgType() == 1015) {
// String roomIdA = message.getText().getRoom_id_a();
// String roomIdB = message.getText().getRoom_id_b();
// String createValueA = message.getText().getCreate_value_a();
// String receiveValueB = message.getText().getReceive_value_b();
//
// if (roomIdA.equals(roomId)) {
// // 当前 roomId 与 roomIdA 相同
// mBinding.tvPkLeftValue.setText(createValueA);
// mBinding.tvPkRightValue.setText(receiveValueB);
// mBinding.pkProgress.setAnimProgress(100f * Integer.parseInt(createValueA) / (Integer.parseInt(createValueA) + Integer.parseInt(receiveValueB)));
//
// } else if (roomIdB.equals(roomId)) {
// // 当前 roomId 与 roomIdB 相同
// mBinding.tvPkLeftValue.setText(receiveValueB);
// mBinding.tvPkRightValue.setText(createValueA);
// mBinding.pkProgress.setAnimProgress(100f * Integer.parseInt(receiveValueB) / (Integer.parseInt(createValueA) + Integer.parseInt(receiveValueB)));
//
// }
// } else if (message.getMsgType() == 125) {
// RoomMessageEvent.text text = com.blankj.utilcode.util.GsonUtils.fromJson(message.getText().getText(), RoomMessageEvent.text.class);
// if (text.getIs_mute() == 1) {
// AgoraManager.getInstance(getContext()).ClientRole(false);
// AgoraManager.getInstance(getContext()).muteLocalAudioStreamEx(false, SpUtil.getUserId());
// } else {
// AgoraManager.getInstance(getContext()).ClientRole(true);
// AgoraManager.getInstance(getContext()).muteLocalAudioStreamEx(true, SpUtil.getUserId());
//
// }
// } else if (message.getMsgType() == 1007) {
// roomInfoResp.getUser_info().setIs_host(1);
// } else if (message.getMsgType() == 1018) {
// roomInfoResp.getUser_info().setIs_host(0);
// } else if (message.getMsgType() == 126) {
// AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, message.getText().getFromUserInfo().getUser_id() + "");
// } else if (message.getMsgType() == 1021) {
// for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
// pitBean.setCharm("0");
// wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
// }
// } else if (message.getMsgType() == 1037) {
//// 对方想结束本次pk是否同意
// if (message.getText().getPit_number().equals("9") && message.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
// queren();
// }
// } else if (message.getMsgType() == 1035) {
// for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
// if (pitBean.getUser_id().equals(message.getText().getFromUserInfo().getUser_id() + "")) {
// pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
// pitBean.setAvatar(message.getText().getFromUserInfo().getAvatar());
// pitBean.setNickname(message.getText().getFromUserInfo().getNickname());
// pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
// pitBean.setDress(message.getText().getFromUserInfo().getDress());
// wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
// }
// }
//
// }
// }
///推送的下麦1003
public void event1003(RoomMessageEvent message){
boolean b = false;
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(Integer.parseInt(message.getText().getPit_number()) - 1);
pitBean.setUser_id(message.getText().getFromUserInfo().getUser_id() + "");
pitBean.setAvatar(message.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(message.getText().getFromUserInfo().getNickname());
pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
pitBean.setDress(message.getText().getFromUserInfo().getDress());
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
} else {
wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
}
// 通知父 Fragment
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
} else {
b = false;
}
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(message.getText().getPit_number()), true, b);
}
}
///1004
public void event1004(RoomMessageEvent message){
boolean b = false;
RoomPitBean pitBean = roomInfoResp.getRoom_info().getPit_list().get(Integer.parseInt(message.getText().getPit_number()) - 1);
pitBean.setUser_id("");
pitBean.setAvatar("");
pitBean.setNickname("");
pitBean.setSex("");
pitBean.setCharm("");
pitBean.setDress("");
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
} else {
wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
}
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
} else {
b = false;
}
if (parentFragment != null) {
parentFragment.updateWheatStatus(pitBean, Integer.parseInt(message.getText().getPit_number()), false, b);
}
}
///1005
public void event1005(RoomMessageEvent message){
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
pitBean.setCharm("0");
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
} else if (message.getMsgType() == 1037) {
// 对方想结束本次pk是否同意
if (message.getText().getPit_number().equals("9") && message.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
queren();
}
} else if (message.getMsgType() == 1035) {
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
if (pitBean.getUser_id().equals(message.getText().getFromUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
pitBean.setAvatar(message.getText().getFromUserInfo().getAvatar());
pitBean.setNickname(message.getText().getFromUserInfo().getNickname());
pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
pitBean.setDress(message.getText().getFromUserInfo().getDress());
if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getToUserInfo().getCharm());
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
}
} else {
for (RoomPitBean pitBean : roomInfoRespPk.getRoom_info().getPit_list()) {
if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getToUserInfo().getCharm());
wheatLayoutManager2.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
}
for (RoomPitBean pitBean : roomInfoResp.getRoom_info().getPit_list()) {
if (pitBean.getUser_id().equals(message.getText().getToUserInfo().getUser_id() + "")) {
pitBean.setCharm(message.getText().getToUserInfo().getCharm());
wheatLayoutManager1.updateSingleWheat(pitBean, Integer.parseInt(pitBean.getPit_number()));
}
}
}
}
///1030
public void event1030(RoomMessageEvent message){
MvpPre.postRoomInfo(message.getRoomId(), roomInfoResp.getUser_info().getPit_number() + "", 3);
if (message.getText().getType() == 1) {
MvpPre.postRoomInfo(message.getText().getRoom_id(), roomInfoResp.getUser_info().getPit_number() + "", 1);
if (message.getText().getRoom_id().equals(roomId)) {
mBinding.btSta.setVisibility(VISIBLE);
} else {
mBinding.btSta.setVisibility(INVISIBLE);
}
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setRoleType(5, -11);
}
}
}
///1031
public void event1031(RoomMessageEvent message){
countDownTime(Long.parseLong(message.getText().getPk_end_times()), 1);
mBinding.btSta.setVisibility(INVISIBLE);
}
///1032
public void event1032(RoomMessageEvent message){
showCountDownDialog(requireContext(), message);
ivitTop(message);
}
///1033
public void event1033(RoomMessageEvent message){
AgoraManager.getInstance(getContext()).leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId());
MvpPre.postRoomInfo(roomId, "0", 2);
mBinding.imStart2.setVisibility(GONE);
mBinding.imStart.setVisibility(GONE);
roomInfoRespPk = null;
}
///1037
public void event1037(RoomMessageEvent message){
if (message.getText().getPit_number().equals("9") && message.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
queren();
}
}
///1015
public void event1015(RoomMessageEvent message){
String roomIdA = message.getText().getRoom_id_a();
String roomIdB = message.getText().getRoom_id_b();
String createValueA = message.getText().getCreate_value_a();
String receiveValueB = message.getText().getReceive_value_b();
if (roomIdA.equals(roomId)) {
// 当前 roomId 与 roomIdA 相同
mBinding.tvPkLeftValue.setText(createValueA);
mBinding.tvPkRightValue.setText(receiveValueB);
mBinding.pkProgress.setAnimProgress(100f * Integer.parseInt(createValueA) / (Integer.parseInt(createValueA) + Integer.parseInt(receiveValueB)));
} else if (roomIdB.equals(roomId)) {
// 当前 roomId 与 roomIdB 相同
mBinding.tvPkLeftValue.setText(receiveValueB);
mBinding.tvPkRightValue.setText(createValueA);
mBinding.pkProgress.setAnimProgress(100f * Integer.parseInt(receiveValueB) / (Integer.parseInt(createValueA) + Integer.parseInt(receiveValueB)));
}
}
private void queren() {
// 创建并显示确认对话框
new ConfirmDialog(getActivity(),
@@ -1326,6 +1442,21 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
@Override
public void onDestroyView() {
super.onDestroyView();
releaseCountDownTimer();
wheatLayoutSingManager.release();
wheatLayoutManager1.clear();
wheatLayoutManager2.clear();
mBinding.flexboxLayout.removeAllViews();
mBinding.flexboxLayout2.removeAllViews();
}
@Override
public void onDestroy() {
super.onDestroy();
releaseCountDownTimer();
wheatLayoutSingManager.release();
wheatLayoutManager1.clear();
wheatLayoutManager2.clear();
mBinding.flexboxLayout.removeAllViews();
mBinding.flexboxLayout2.removeAllViews();
}

View File

@@ -49,6 +49,7 @@
android:layout_marginTop="@dimen/dp_50"
android:clipChildren="false"
android:clipToPadding="false"
android:elevation="2dp"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
@@ -57,6 +58,8 @@
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_15"
android:clipChildren="false"
android:clipToPadding="false"
app:layout_constraintBottom_toTopOf="@+id/ll_bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -23,6 +23,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:elevation="5dp"
/>
<!-- <com.xscm.moduleutil.widget.RoomMessageInputMenu-->

View File

@@ -70,7 +70,6 @@
android:layout_centerInParent="true"
android:layout_marginTop="@dimen/dp_31"
android:fontFamily="@font/youshebiaotihei"
android:text="亲密拍"
android:textColor="@color/color_0DFFB9"
android:textSize="@dimen/sp_24" />
@@ -80,9 +79,8 @@
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="@dimen/dp_40"
android:layout_toRightOf="@+id/qinmi"
android:layout_toEndOf="@+id/qinmi"
android:fontFamily="@font/youshebiaotihei"
android:text="真爱拍"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
</RelativeLayout>
@@ -493,13 +491,14 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<ViewStub
android:id="@+id/stub_buttons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/top_overlay_buttons"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- <ViewStub-->
<!-- android:id="@+id/stub_buttons"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout="@layout/top_overlay_buttons"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent"-->
<!-- android:visibility="gone"/>-->
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -320,9 +320,13 @@
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:clickable="true"
app:layout_constraintStart_toEndOf="@+id/cl_bj"
app:room_wheat_number="9" />
android:translationZ="10dp"
app:room_wheat_number="9"
android:elevation="10dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"/>
<com.xscm.moduleutil.widget.RoomKtvWheatView
android:id="@+id/mu_jb"

View File

@@ -26,13 +26,13 @@
app:alignItems="flex_start"
/>
<ViewStub
android:id="@+id/stub_buttons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/top_overlay_buttons"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- <ViewStub-->
<!-- android:id="@+id/stub_buttons"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout="@layout/top_overlay_buttons"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent" />-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl"

View File

@@ -5,6 +5,7 @@
>
<RelativeLayout
android:id="@+id/rl_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
@@ -229,6 +230,7 @@
android:layout_marginTop="@dimen/dp_50"
android:background="@android:color/transparent"
android:layout="@layout/top_overlay_buttons"
android:visibility="gone"
/>
</RelativeLayout>