删除部分不需要代码。
This commit is contained in:
@@ -91,10 +91,12 @@ public class MessageListenerSingleton {
|
||||
}
|
||||
|
||||
public static MessageListenerSingleton getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new MessageListenerSingleton();
|
||||
synchronized (MessageListenerSingleton.class) {
|
||||
if (instance == null) {
|
||||
instance = new MessageListenerSingleton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,111 +162,6 @@ public class MessageListenerSingleton {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 修改 joinGroup 方法
|
||||
// public void joinGroup(String roomId) {
|
||||
// if (TextUtils.isEmpty(roomId)) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // 使用同步块确保操作的原子性
|
||||
// synchronized (groupOperationLock) {
|
||||
// if (isGroupOperationInProgress) {
|
||||
// // 如果有操作正在进行,延迟执行
|
||||
// mainHandler.removeCallbacksAndMessages(null);
|
||||
// mainHandler.postDelayed(() -> joinGroup(roomId), 100);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// isGroupOperationInProgress = true;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// // 在新线程中执行操作
|
||||
// new Thread(() -> {
|
||||
// try {
|
||||
// // 先退出当前群组
|
||||
// if (groupId != null && !groupId.equals(roomId)) {
|
||||
// try {
|
||||
// quitGroup(groupId);
|
||||
// // 执行退出操作
|
||||
// // TIMGroupManager.getInstance().quitGroup(groupId);
|
||||
// LogUtils.d("MessageListener", "退出群组: " + groupId);
|
||||
// } catch (Exception e) {
|
||||
// LogUtils.e("MessageListener", "退出群组失败: " + e.getMessage());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 等待一小段时间确保退出完成
|
||||
// Thread.sleep(500);
|
||||
//
|
||||
// // 加入新群组
|
||||
// try {
|
||||
// // 执行加入操作
|
||||
//
|
||||
// ensureListenersAdded();
|
||||
// V2TIMManager.getInstance().joinGroup("room" + roomId, "申请加入", new V2TIMCallback() {
|
||||
// @Override
|
||||
// public void onSuccess() {
|
||||
// Log.d("@@@", "加入im群组成功:");
|
||||
//
|
||||
// groupId = roomId;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(int code, String desc) {
|
||||
// Log.d("@@@", "加入群组失败:" + code + "=" + desc);
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// groupId = roomId;
|
||||
// LogUtils.d("MessageListener", "加入群组: " + roomId);
|
||||
// } catch (Exception e) {
|
||||
// LogUtils.e("MessageListener", "加入群组失败: " + e.getMessage());
|
||||
// }
|
||||
// } catch (InterruptedException e) {
|
||||
// Thread.currentThread().interrupt();
|
||||
// } finally {
|
||||
// synchronized (groupOperationLock) {
|
||||
// isGroupOperationInProgress = false;
|
||||
// }
|
||||
// }
|
||||
// }).start();
|
||||
//
|
||||
//
|
||||
//// LogUtils.e("@@@", "加入房间的"+roomId);
|
||||
//// if (groupId!=null){
|
||||
//// quitGroup(groupId);
|
||||
//// }
|
||||
////
|
||||
//// // 确保监听器已初始化并添加
|
||||
//// ensureListenersAdded();
|
||||
//// V2TIMManager.getInstance().joinGroup("room" + roomId, "申请加入", new V2TIMCallback() {
|
||||
//// @Override
|
||||
//// public void onSuccess() {
|
||||
//// Log.d("@@@", "加入im群组成功:");
|
||||
////
|
||||
//// groupId = roomId;
|
||||
//// }
|
||||
////
|
||||
//// @Override
|
||||
//// public void onError(int code, String desc) {
|
||||
//// Log.d("@@@", "加入群组失败:" + code + "=" + desc);
|
||||
//// }
|
||||
//// });
|
||||
//
|
||||
// if (tempGroupJoinListener == null) {
|
||||
// tempGroupJoinListener = new OnMessageReceivedListener() {
|
||||
// @Override
|
||||
// public void onMessageReceived(RoomMessageEvent message) {
|
||||
// // 处理消息
|
||||
//
|
||||
// }
|
||||
// };
|
||||
// addOnMessageReceivedListener(tempGroupJoinListener);
|
||||
// }
|
||||
// }
|
||||
|
||||
// 修改 joinGroup 方法,确保先退出再加入
|
||||
public void joinGroup(String roomId) {
|
||||
if (TextUtils.isEmpty(roomId)) {
|
||||
@@ -341,7 +238,7 @@ public class MessageListenerSingleton {
|
||||
joinSuccess[0] = true;
|
||||
groupId = roomId;
|
||||
joinLatch.countDown();
|
||||
// 标记房间已加入
|
||||
// 标记房间已加入
|
||||
markRoomJoined(roomId);
|
||||
}
|
||||
|
||||
@@ -381,13 +278,11 @@ public class MessageListenerSingleton {
|
||||
simpleMsgListener = new V2TIMSimpleMsgListener() {
|
||||
@Override
|
||||
public void onRecvC2CTextMessage(String msgID, V2TIMUserInfo sender, String text) {
|
||||
// notifyMessageReceived("C2C 文本消息:" + sender.getNickName() + " - " + text);
|
||||
LogUtils.d("C2C 文本消息 " + sender.getNickName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRecvC2CCustomMessage(String msgID, V2TIMUserInfo sender, byte[] customData) {
|
||||
// notifyMessageReceived("C2C 自定义(信令)消息:" + sender.getNickName());
|
||||
LogUtils.d("C2C 自定义(信令)消息 " + sender.getNickName());
|
||||
String message = new String(customData, StandardCharsets.UTF_8);
|
||||
RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
@@ -396,13 +291,11 @@ public class MessageListenerSingleton {
|
||||
|
||||
@Override
|
||||
public void onRecvGroupTextMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, String text) {
|
||||
// notifyMessageReceived("群文本消息:群组 " + groupID + " 中 " + sender.getNickName() + " - " + text);
|
||||
LogUtils.d("群文本消息:群组 " + groupID + " 中 " + sender.getNickName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRecvGroupCustomMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, byte[] customData) {
|
||||
// notifyMessageReceived("群自定义(信令)消息:群组 " + groupID + " 中 " + sender.getNickName());
|
||||
LogUtils.d("收到群自定义消息:群组 " + groupID + " 中 " + sender.getNickName());
|
||||
if (!groupID.equals("")) {
|
||||
String message = new String(customData, StandardCharsets.UTF_8);
|
||||
@@ -441,29 +334,16 @@ public class MessageListenerSingleton {
|
||||
@Override
|
||||
public void onMemberEnter(String groupID, List<V2TIMGroupMemberInfo> memberList) {
|
||||
// 有新成员加入群,该群所有的成员都能收到
|
||||
// for (V2TIMGroupMemberInfo member : memberList) {
|
||||
// notifyMessageReceived("系统消息:" + member.getNickName() + " 加入了群组");
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMemberLeave(String groupID, V2TIMGroupMemberInfo member) {
|
||||
// 有成员离开群,该群所有的成员都能收到
|
||||
// notifyMessageReceived("系统消息:" + member.getNickName() + " 离开了群组");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceiveRESTCustomData(String groupID, byte[] customData) {
|
||||
// 服务器发送的自定义系统通知
|
||||
// 将 byte[] 转换为 String
|
||||
|
||||
// String message = new String(customData, StandardCharsets.UTF_8);
|
||||
// RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
// if (groupID.contains(SpUtil.getMyRoomId())) {
|
||||
// notifyMessageReceived(event);
|
||||
// }
|
||||
// LogUtils.e("收到群自定义消息(系统):" + message);
|
||||
|
||||
String message = "";
|
||||
try {
|
||||
|
||||
@@ -506,11 +386,11 @@ public class MessageListenerSingleton {
|
||||
super.onTotalUnreadMessageCountChanged(totalUnreadCount);
|
||||
|
||||
UnreadCountEvent event = CommonAppContext.getInstance().getUnreadCountEvent();
|
||||
if (event== null){
|
||||
if (event == null) {
|
||||
event = new UnreadCountEvent();
|
||||
event.setBLong(0);
|
||||
}
|
||||
event.setALong( totalUnreadCount);
|
||||
event.setALong(totalUnreadCount);
|
||||
CommonAppContext.getInstance().setUnreadCountEvent(event);
|
||||
EventBus.getDefault().post(event);
|
||||
}
|
||||
@@ -602,141 +482,10 @@ public class MessageListenerSingleton {
|
||||
|
||||
// 确保监听器已添加
|
||||
private void ensureListenersAdded() {
|
||||
// if (!listenersAdded) {
|
||||
initListeners();
|
||||
addAllListeners();
|
||||
// listenersAdded = true;
|
||||
// }
|
||||
}
|
||||
|
||||
// private void initListeners() {
|
||||
// // 简单消息监听器
|
||||
// simpleMsgListener = new V2TIMSimpleMsgListener() {
|
||||
// @Override
|
||||
// public void onRecvC2CTextMessage(String msgID, V2TIMUserInfo sender, String text) {
|
||||
//// notifyMessageReceived("C2C 文本消息:" + sender.getNickName() + " - " + text);
|
||||
// LogUtils.d("C2C 文本消息 " + sender.getNickName());
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onRecvC2CCustomMessage(String msgID, V2TIMUserInfo sender, byte[] customData) {
|
||||
//// notifyMessageReceived("C2C 自定义(信令)消息:" + sender.getNickName());
|
||||
// LogUtils.d("C2C 自定义(信令)消息 " + sender.getNickName());
|
||||
// String message = new String(customData, StandardCharsets.UTF_8);
|
||||
// RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
// notifyMessageReceived(event);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onRecvGroupTextMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, String text) {
|
||||
//// notifyMessageReceived("群文本消息:群组 " + groupID + " 中 " + sender.getNickName() + " - " + text);
|
||||
// LogUtils.d("群文本消息:群组 " + groupID + " 中 " + sender.getNickName());
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onRecvGroupCustomMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, byte[] customData) {
|
||||
//// notifyMessageReceived("群自定义(信令)消息:群组 " + groupID + " 中 " + sender.getNickName());
|
||||
// LogUtils.d("收到群自定义消息:群组 " + groupID + " 中 " + sender.getNickName());
|
||||
// if (!groupID.equals("")) {
|
||||
// String message = new String(customData, StandardCharsets.UTF_8);
|
||||
// RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
// notifyMessageReceived(event);
|
||||
// LogUtils.d("收到群自定义消息(信令):", message);
|
||||
// }else {
|
||||
// String message = new String(customData, StandardCharsets.UTF_8);
|
||||
// LogUtils.d("收到群自定义消息(信令):", message);
|
||||
// HeadlineBean event = GsonUtils.fromJson(message, HeadlineBean.class);
|
||||
// EventBus.getDefault().post(event);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// };
|
||||
// V2TIMManager.getMessageManager().addAdvancedMsgListener(v2TIMAdvancedMsgListener);
|
||||
// V2TIMManager.getInstance().addSimpleMsgListener(simpleMsgListener);
|
||||
//
|
||||
// v2TIMAdvancedMsgListener=new V2TIMAdvancedMsgListener() {
|
||||
// @Override
|
||||
// public void onRecvNewMessage(V2TIMMessage msg) {
|
||||
// super.onRecvNewMessage(msg);
|
||||
// if (msg.isBroadcastMessage()) {
|
||||
// // 收到了广播消息
|
||||
// String message = new String(msg.getCustomElem().getData(), StandardCharsets.UTF_8);
|
||||
// LogUtils.e("收到广播消息(系统):",message);
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// groupListener = new V2TIMGroupListener() {
|
||||
// @Override
|
||||
// public void onMemberEnter(String groupID, List<V2TIMGroupMemberInfo> memberList) {
|
||||
// // 有新成员加入群,该群所有的成员都能收到
|
||||
//// for (V2TIMGroupMemberInfo member : memberList) {
|
||||
//// notifyMessageReceived("系统消息:" + member.getNickName() + " 加入了群组");
|
||||
//// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMemberLeave(String groupID, V2TIMGroupMemberInfo member) {
|
||||
// // 有成员离开群,该群所有的成员都能收到
|
||||
//// notifyMessageReceived("系统消息:" + member.getNickName() + " 离开了群组");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onReceiveRESTCustomData(String groupID, byte[] customData) {
|
||||
// // 服务器发送的自定义系统通知
|
||||
// // 将 byte[] 转换为 String
|
||||
//
|
||||
//// String message = new String(customData, StandardCharsets.UTF_8);
|
||||
//// RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
//// if (groupID.contains(SpUtil.getMyRoomId())) {
|
||||
//// notifyMessageReceived(event);
|
||||
//// }
|
||||
//// LogUtils.e("收到群自定义消息(系统):" + message);
|
||||
//
|
||||
// String message = "";
|
||||
// try {
|
||||
//
|
||||
// message = new String(customData, StandardCharsets.UTF_8);
|
||||
// LogUtils.e("收到群自定义消息(系统):" + message);
|
||||
// } catch (Exception e) {
|
||||
// // 处理转换过程中可能出现的异常,例如记录日志
|
||||
// LogUtils.e("转换 customData 为 String 时出错:" + e.getMessage());
|
||||
// return; // 退出方法,避免后续代码执行
|
||||
// }
|
||||
//
|
||||
// RoomMessageEvent event = null;
|
||||
// try {
|
||||
// // 特殊处理某些消息类型
|
||||
// event = parseSpecialMessageTypes(message);
|
||||
// if (event == null) {
|
||||
// // 使用默认解析
|
||||
// event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
// }
|
||||
//
|
||||
//// event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
// } catch (Exception e) {
|
||||
// // 处理 JSON 解析过程中可能出现的异常,例如记录日志
|
||||
// LogUtils.e("解析 JSON 数据时出错:" + e.getMessage());
|
||||
// return; // 退出方法,避免后续代码执行
|
||||
// }
|
||||
//
|
||||
// if (groupID.contains(SpUtil.getMyRoomId())) {
|
||||
// notifyMessageReceived(event);
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// V2TIMManager.getInstance().addGroupListener(groupListener);
|
||||
//
|
||||
// V2TIMConversationListener conversationListener = new V2TIMConversationListener() {
|
||||
// @Override
|
||||
// public void onTotalUnreadMessageCountChanged(long totalUnreadCount) {
|
||||
// super.onTotalUnreadMessageCountChanged(totalUnreadCount);
|
||||
// EventBus.getDefault().post(new UnreadCountEvent(totalUnreadCount));
|
||||
// }
|
||||
// };
|
||||
// V2TIMManager.getConversationManager().addConversationListener(conversationListener);
|
||||
// }
|
||||
|
||||
private RoomMessageEvent parseSpecialMessageTypes(String message) {
|
||||
try {
|
||||
@@ -756,77 +505,6 @@ public class MessageListenerSingleton {
|
||||
}
|
||||
}
|
||||
|
||||
// public static MessageListenerSingleton getInstance() {
|
||||
// if (instance == null) {
|
||||
// instance = new MessageListenerSingleton();
|
||||
// }
|
||||
// return instance;
|
||||
// }
|
||||
private OnMessageReceivedListener tempGroupJoinListener;
|
||||
// public void joinGroup(String roomId) {
|
||||
//
|
||||
//// if (!mRoomId.isEmpty()){
|
||||
//// V2TIMManager.getInstance().quitGroup("room"+roomId, new V2TIMCallback() {
|
||||
//// @Override
|
||||
//// public void onSuccess() {
|
||||
//// LogUtils.d("退出群组成功");
|
||||
//// }
|
||||
////
|
||||
//// @Override
|
||||
//// public void onError(int code, String desc) {
|
||||
//// LogUtils.d("退出群组失败");
|
||||
//// }
|
||||
//// });
|
||||
//// }
|
||||
// mRoomId=roomId;
|
||||
//
|
||||
// V2TIMManager.getInstance().joinGroup("room" + mRoomId, "申请加入", new V2TIMCallback() {
|
||||
// @Override
|
||||
// public void onSuccess() {
|
||||
// RoomMessageEvent.T t = new RoomMessageEvent.T();
|
||||
// t.setText("羽声严禁未成年人进行直播或打赏,官方将24小时在线巡查。我们提倡绿色直播,直播间严禁出现涉政、涉恐、涉黄、涉赌等违法违规内容,严禁宣传封建迷信、宗教极端思想、出现低俗色情、吸烟酗酒等内容,严禁违反社会主义核心价值观、践踏社会道德底线、诱导打赏、低俗 PK 、买卖金币等行为,请大家共同遵守、监督并及时举报。请勿相信各类刷钻、购买礼包、游戏币及电商贩卖等非官方广告信息,谨防网络诈骗。");
|
||||
// // 加入群组成功
|
||||
//// onMessageReceived(new RoomMessageEvent(1000, roomId, t));
|
||||
//// EventBus.getDefault().post(new RoomMessageEvent(1000, mRoomId, t));
|
||||
// notifyMessageReceived(new RoomMessageEvent(1000, mRoomId, t));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(int code, String desc) {
|
||||
// // 加入群组失败
|
||||
// Log.d("@@@", "加入群组失败:" + code + "=" + desc);
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// if (tempGroupJoinListener == null) {
|
||||
// tempGroupJoinListener = new OnMessageReceivedListener() {
|
||||
// @Override
|
||||
// public void onMessageReceived(RoomMessageEvent message) {
|
||||
// // 处理消息
|
||||
// }
|
||||
// };
|
||||
// addOnMessageReceivedListener(tempGroupJoinListener);
|
||||
// }
|
||||
// initListeners();
|
||||
// }
|
||||
|
||||
// public static void quitGroup(String mRoomId){
|
||||
//
|
||||
// V2TIMManager.getInstance().quitGroup("room"+mRoomId, new V2TIMCallback() {
|
||||
// @Override
|
||||
// public void onSuccess() {
|
||||
// LogUtils.d("退出群组成功");
|
||||
// removeGroupListeners();
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(int code, String desc) {
|
||||
// LogUtils.d("退出群组失败", code,desc);
|
||||
// removeGroupListeners();
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
public void addOnMessageReceivedListener(OnMessageReceivedListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
@@ -884,16 +562,6 @@ public class MessageListenerSingleton {
|
||||
|
||||
}
|
||||
|
||||
// public static void reset(String roomId) {
|
||||
// if (instance != null) {
|
||||
// instance.listeners.clear();
|
||||
// V2TIMManager.getInstance().removeSimpleMsgListener(instance.simpleMsgListener);
|
||||
// V2TIMManager.getInstance().removeGroupListener(instance.groupListener);
|
||||
// isInitialized = false;
|
||||
// instance = null;
|
||||
// quitGroup(roomId);
|
||||
// }
|
||||
// }
|
||||
// RoomFragment.java 中添加
|
||||
private final V2TIMSendCallback<V2TIMMessage> sendCallback = new V2TIMSendCallback<V2TIMMessage>() {
|
||||
@Override
|
||||
|
||||
@@ -1,34 +1,28 @@
|
||||
package com.xscm.moduleutil.rtc;
|
||||
|
||||
|
||||
import static com.blankj.utilcode.util.SnackbarUtils.getView;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.*;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_15;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_30;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.ORIENTATION_MODE.*;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_FIXED_LANDSCAPE;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.STANDARD_BITRATE;
|
||||
import static io.agora.rtc2.video.VideoEncoderConfiguration.VD_1280x720;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.hardware.SensorManager;
|
||||
import android.media.projection.MediaProjection;
|
||||
import android.media.projection.MediaProjectionManager;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.Display;
|
||||
import android.view.OrientationEventListener;
|
||||
import android.view.SurfaceView;
|
||||
|
||||
import android.view.WindowManager;
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.blankj.utilcode.util.*;
|
||||
import com.blankj.utilcode.util.GsonUtils;
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.blankj.utilcode.util.PathUtils;
|
||||
import com.blankj.utilcode.util.ThreadUtils;
|
||||
import com.liulishuo.okdownload.DownloadTask;
|
||||
import com.liulishuo.okdownload.StatusUtil;
|
||||
import com.liulishuo.okdownload.core.cause.EndCause;
|
||||
@@ -45,15 +39,12 @@ import com.xscm.moduleutil.listener.MessageListenerSingleton;
|
||||
import com.xscm.moduleutil.utils.Md5Utils;
|
||||
import com.xscm.moduleutil.utils.SpUtil;
|
||||
import com.xscm.moduleutil.utils.logger.Logger;
|
||||
//import com.tencent.bugly.idasc.crashreport.CrashReport;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
@@ -112,8 +103,6 @@ public class AgoraManager {
|
||||
}
|
||||
|
||||
private AgoraManager() {
|
||||
// this.context = context.getApplicationContext();
|
||||
// init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
|
||||
}
|
||||
|
||||
@@ -123,8 +112,6 @@ public class AgoraManager {
|
||||
if (instance == null) {
|
||||
instance = new AgoraManager();
|
||||
context = con.getApplicationContext(); // 使用ApplicationContext避免内存泄漏
|
||||
// init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
// init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,7 +149,6 @@ public class AgoraManager {
|
||||
if (rtcEngine != null) {
|
||||
return;
|
||||
}
|
||||
;
|
||||
|
||||
synchronized (AgoraManager.class) {
|
||||
if (rtcEngine != null) {
|
||||
@@ -214,51 +200,17 @@ public class AgoraManager {
|
||||
|
||||
/*Enable video module*/
|
||||
rtcEngine.enableVideo();
|
||||
// Setup video encoding configs
|
||||
// rtcEngine.setVideoEncoderConfiguration(new VideoEncoderConfiguration(
|
||||
// VD_640x360,
|
||||
// FRAME_RATE_FPS_30,
|
||||
// STANDARD_BITRATE,
|
||||
// ORIENTATION_MODE_FIXED_PORTRAIT
|
||||
// ));
|
||||
|
||||
|
||||
|
||||
/*Set up to play remote sound with receiver*/
|
||||
rtcEngine.setDefaultAudioRoutetoSpeakerphone(true);
|
||||
|
||||
|
||||
// OrientationEventListener orientationListener = new OrientationEventListener(context,
|
||||
// SensorManager.SENSOR_DELAY_NORMAL) {
|
||||
// @Override
|
||||
// public void onOrientationChanged(int orientation) {
|
||||
// int angle = calculateScreenAngle(orientation);
|
||||
// try {
|
||||
// rtcEngine.setVideoOrientation(angle); // 通知声网引擎调整视频方向
|
||||
// } catch (Exception e) {
|
||||
// Log.e("AgoraManager", "Set video orientation failed", e);
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
// orientationListener.enable(); // 启用监听
|
||||
|
||||
} catch (Exception e) {
|
||||
Log.e("AgoraManager", "Failed to configure RtcEngine", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public static int calculateScreenAngle(int orientation) {
|
||||
if (orientation >= 315 || orientation < 45) {
|
||||
return 0; // 竖屏(0度)
|
||||
} else if (orientation >= 45 && orientation < 135) {
|
||||
return 90; // 横屏右(90度)
|
||||
} else if (orientation >= 135 && orientation < 225) {
|
||||
return 180; // 倒竖屏(180度)
|
||||
} else {
|
||||
return 270; // 横屏左(270度)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入语音聊天房间
|
||||
*/
|
||||
@@ -360,53 +312,13 @@ public class AgoraManager {
|
||||
}
|
||||
musicContentCenter = IAgoraMusicContentCenter.create(rtcEngine);
|
||||
contentCenterConfiguration = new MusicContentCenterConfiguration();
|
||||
// 已开启音乐内容中心项目的 App ID
|
||||
// 已开启音乐内容中心项目的 App ID
|
||||
contentCenterConfiguration.appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId();
|
||||
// 使用音乐内容中心的用户 ID。该 ID 可以和你加入 RTC 频道时使用的 uid 一致,但不能为 0
|
||||
// 使用音乐内容中心的用户 ID。该 ID 可以和你加入 RTC 频道时使用的 uid 一致,但不能为 0
|
||||
contentCenterConfiguration.mccUid = uid;
|
||||
// 填入用于鉴权的 Token
|
||||
// 填入用于鉴权的 Token
|
||||
contentCenterConfiguration.token = SpUtil.getRtmToken();
|
||||
|
||||
// 创建 IAgoraMusicContentCenterEventHandler,用于 SDK 向客户端发送音乐内容中心事件通知
|
||||
// contentCenterConfiguration.eventHandler = new IMusicContentCenterEventHandler() {
|
||||
// @Override
|
||||
// public void onPreLoadEvent(String requestId, long songCode, int percent, String lyricUrl, int status, int errorCode) {
|
||||
// LogUtils.e("@@@1", "requestId: " + requestId + ", songCode: " + songCode + ", percent: " + percent + ", lyricUrl: " + lyricUrl + ", status: " + status + ", errorCode: " + errorCode);
|
||||
// if (!lyricUrl.isEmpty() && percent == 100 && !isBjMusic) {
|
||||
// getLyricsInstance(lyricUrl);
|
||||
// }
|
||||
//// musicPlayer.open(songCode, 0);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMusicCollectionResult(String requestId, int page, int pageSize, int total, Music[] list, int errorCode) {
|
||||
// LogUtils.e("@@@2", "requestId: " + requestId + ", page: " + page + ", pageSize: " + pageSize + ", total: " + total);
|
||||
// MusicBean musicBean = new MusicBean();
|
||||
// musicBean.setMusicList(Arrays.asList(list));
|
||||
// musicBean.setPage(page);
|
||||
// EventBus.getDefault().post(musicBean);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMusicChartsResult(String requestId, MusicChartInfo[] list, int errorCode) {
|
||||
// LogUtils.e("@@@", "requestId: " + requestId);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onLyricResult(String requestId, long songCode, String lyricUrl, int errorCode) {
|
||||
// LogUtils.e("@@@22", "requestId: " + requestId + ", songCode: " + songCode + ", lyricUrl: " + lyricUrl + ", errorCode: " + errorCode);
|
||||
// if (lyricUrl != null && !isBjMusic) {
|
||||
// getLyricsInstance(lyricUrl);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onSongSimpleInfoResult(String requestId, long songCode, String simpleInfo, int errorCode) {
|
||||
// LogUtils.e("@@@", "requestId: " + requestId + ", songCode: " + songCode + ", simpleInfo: " + simpleInfo + ", errorCode: " + errorCode);
|
||||
// }
|
||||
// };
|
||||
// 初始化 IAgoraMusicContentCenter
|
||||
|
||||
musicContentCenter.initialize(contentCenterConfiguration);
|
||||
if (musicPlayer != null) {
|
||||
musicPlayer = null;
|
||||
@@ -421,12 +333,6 @@ public class AgoraManager {
|
||||
// getLyricsInstance(lyricUrl);
|
||||
}
|
||||
LogUtils.e("AgoraManager", "isPreload2: " + songCode, "percent: " + percent);
|
||||
|
||||
// if (!lyricUrl.isEmpty() && percent == 100 && !isBjMusic) {
|
||||
// musicPlayer.stop();
|
||||
// musicPlayer.open(songCode, 0);
|
||||
//// getLyricsInstance(lyricUrl);
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -478,13 +384,6 @@ public class AgoraManager {
|
||||
|
||||
@Override
|
||||
public void onUserJoined(int uid, int elapsed) {//远端用户加入频道
|
||||
// for (IRtcEngineEventHandler handler : eventHandlers) {
|
||||
// if (handler != null) {
|
||||
// handler.onUserJoined(uid, elapsed);
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) {
|
||||
if (listener != null) {
|
||||
ThreadUtils.runOnUiThread(() -> {
|
||||
@@ -505,19 +404,13 @@ public class AgoraManager {
|
||||
|
||||
@Override
|
||||
public void onUserOffline(int uid, int reason) {//远端用户离开频道
|
||||
// for (IRtcEngineEventHandler handler : eventHandlers) {
|
||||
// if (handler != null) {
|
||||
// handler.onUserOffline(uid, reason);
|
||||
// }
|
||||
for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) {
|
||||
if (listener != null) {
|
||||
ThreadUtils.runOnUiThread(() -> {
|
||||
// 远程用户音量变化
|
||||
listener.userOffline(uid, reason);
|
||||
// }
|
||||
});
|
||||
}
|
||||
// }
|
||||
}
|
||||
SurfaceView renderView = null;
|
||||
rtcEngine.setupRemoteVideo(new VideoCanvas(null, Constants.RENDER_MODE_FIT, uid));
|
||||
@@ -743,16 +636,6 @@ public class AgoraManager {
|
||||
|
||||
if (rtcEngine != null) {
|
||||
options.clientRoleType = Constants.CLIENT_ROLE_BROADCASTER;
|
||||
// options.autoSubscribeVideo = true;
|
||||
// options.autoSubscribeAudio = true;
|
||||
//// 不发布摄像头采集的视频
|
||||
// options.publishCameraTrack = false;
|
||||
//// 不发布麦克风采集的视频
|
||||
// options.publishMicrophoneTrack = false;
|
||||
//// 在频道中发布屏幕采集的视频
|
||||
// options.publishScreenCaptureVideo = true;
|
||||
//// 在频道中发布屏幕采集的音频
|
||||
// options.publishScreenCaptureAudio = true;
|
||||
rtcEngine.setScreenCaptureScenario(Constants.ScreenScenarioType.SCREEN_SCENARIO_VIDEO);
|
||||
rtcEngine.updateChannelMediaOptions(options);
|
||||
}
|
||||
@@ -760,30 +643,7 @@ public class AgoraManager {
|
||||
|
||||
public void post() {
|
||||
if (rtcEngine != null) {
|
||||
// rtcEngine.setParameters("{\"che.video.mobile_1080p\":true}");
|
||||
// rtcEngine.setClientRole(Constants.CLIENT_ROLE_BROADCASTER);
|
||||
//
|
||||
// /*Enable video module*/
|
||||
// rtcEngine.enableVideo();
|
||||
// // Setup video encoding configs
|
||||
// rtcEngine.setVideoEncoderConfiguration(new VideoEncoderConfiguration(
|
||||
// VD_640x360,
|
||||
// FRAME_RATE_FPS_15,
|
||||
// STANDARD_BITRATE,
|
||||
// ORIENTATION_MODE_ADAPTIVE
|
||||
// ));
|
||||
// /*Set up to play remote sound with receiver*/
|
||||
// rtcEngine.setDefaultAudioRoutetoSpeakerphone(true);
|
||||
|
||||
ScreenCaptureParameters screenCaptureParameters = new ScreenCaptureParameters();
|
||||
// screenCaptureParameters.captureVideo = true;
|
||||
// screenCaptureParameters.videoCaptureParameters.width = 1440;
|
||||
// screenCaptureParameters.videoCaptureParameters.height = 1940;
|
||||
// screenCaptureParameters.videoCaptureParameters.framerate = 15;
|
||||
// screenCaptureParameters.captureAudio = true;
|
||||
// screenCaptureParameters.audioCaptureParameters.captureSignalVolume = 50;
|
||||
//// screenCaptureParameters.videoCaptureParameters.bitrate = 500;
|
||||
// rtcEngine.startScreenCapture(screenCaptureParameters);
|
||||
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
||||
Display display = manager.getDefaultDisplay();
|
||||
|
||||
@@ -810,26 +670,6 @@ public class AgoraManager {
|
||||
}
|
||||
|
||||
|
||||
public void setExternalMediaProjection(MediaProjection[] mediaProjection){
|
||||
rtcEngine.setExternalMediaProjection(mediaProjection[0]);
|
||||
}
|
||||
|
||||
public void isPost(){
|
||||
if (rtcEngine != null){
|
||||
ScreenCaptureParameters screenCaptureParameters = new ScreenCaptureParameters();
|
||||
|
||||
// 设置新的屏幕共享参数
|
||||
screenCaptureParameters.captureVideo = true;
|
||||
screenCaptureParameters.videoCaptureParameters.width = 1280;
|
||||
screenCaptureParameters.videoCaptureParameters.height = 720;
|
||||
screenCaptureParameters.videoCaptureParameters.framerate = 30;
|
||||
|
||||
// 更新屏幕共享参数
|
||||
rtcEngine.updateScreenCaptureParameters(screenCaptureParameters);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void isMute(int index) {
|
||||
if (rtcEngine != null) {
|
||||
}
|
||||
@@ -841,13 +681,6 @@ public class AgoraManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void stopMusicPlayer() {
|
||||
if (musicPlayer != null) {
|
||||
musicPlayer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 完全销毁实例(只在应用退出时调用)
|
||||
*/
|
||||
@@ -900,8 +733,6 @@ public class AgoraManager {
|
||||
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
}
|
||||
if (rtcEngine != null) {
|
||||
// RtcConnection connection = new RtcConnection();
|
||||
// connection.channelId = mRoomId;
|
||||
if (connection == null) {
|
||||
connection = new RtcConnection();
|
||||
connection.channelId = pkRoomId;
|
||||
@@ -927,9 +758,6 @@ public class AgoraManager {
|
||||
* @param uid
|
||||
*/
|
||||
public void muteLocalAudioStreamEx(boolean enabled, int uid) {
|
||||
// RtcConnection connection = new RtcConnection();
|
||||
// connection.channelId = mRoomId;
|
||||
// connection.localUid = uid;
|
||||
if (rtcEngine == null) {
|
||||
init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId());
|
||||
}
|
||||
@@ -968,23 +796,6 @@ public class AgoraManager {
|
||||
return isLocalAudioEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加事件监听器(用于全局回调)
|
||||
*/
|
||||
// public void addEventHandler(IRtcEngineEventHandler handler) {
|
||||
// if (handler != null && !eventHandlers.contains(handler)) {
|
||||
// eventHandlers.add(handler);
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 移除事件监听器
|
||||
*/
|
||||
// public void removeEventHandler(IRtcEngineEventHandler handler) {
|
||||
// if (handler != null) {
|
||||
// eventHandlers.remove(handler);
|
||||
// }
|
||||
// }
|
||||
public void addSoundLevelListener(SoundLevelUpdateListener listener) {
|
||||
if (soundLevelUpdateListeners != null) {
|
||||
soundLevelUpdateListeners.add(listener);
|
||||
@@ -1303,25 +1114,19 @@ public class AgoraManager {
|
||||
|
||||
public static void stopMuisc() {
|
||||
if (musicPlayer != null) {
|
||||
// if (musicPlayer.getState() == io.agora.mediaplayer.Constants.MediaPlayerState.PLAYER_STATE_PLAYING) {
|
||||
musicPlayer.stop();
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
public void pauseMusic() {
|
||||
if (musicPlayer != null) {
|
||||
// if (musicPlayer.getState() == io.agora.mediaplayer.Constants.MediaPlayerState.PLAYER_STATE_PLAYING) {
|
||||
musicPlayer.pause();
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
public void resumeMusic() {
|
||||
if (musicPlayer != null) {
|
||||
// if (musicPlayer.getState() == io.agora.mediaplayer.Constants.MediaPlayerState.PLAYER_STATE_PLAYING) {
|
||||
musicPlayer.resume();
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1463,7 +1268,6 @@ public class AgoraManager {
|
||||
@Override
|
||||
public void retry(@NonNull DownloadTask task, @NonNull ResumeFailedCause cause) {
|
||||
com.xscm.moduleutil.utils.logger.Logger.e("retry", cause);
|
||||
// CrashReport.postCatchedException(new RuntimeException("下载文件重试:" + cause == null ? "" : cause.name()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1483,18 +1287,11 @@ public class AgoraManager {
|
||||
MusicFileBean musicFileBean = new MusicFileBean();
|
||||
musicFileBean.setFileData(convertFileToByteArray(task.getFile()));
|
||||
EventBus.getDefault().post(musicFileBean);
|
||||
if (cause != null && cause != EndCause.COMPLETED) {
|
||||
// CrashReport.postCatchedException(new RuntimeException("下载任务结束:" + cause == null ? "" : cause.name() + "_realCause:" + realCause == null ? "" : realCause.getMessage()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void setmSongCode(long songCode) {
|
||||
mSongCode = songCode;
|
||||
}
|
||||
|
||||
public void loadLrc(long songCode) {
|
||||
mSongCode = songCode;
|
||||
if (musicContentCenter != null) {
|
||||
|
||||
Reference in New Issue
Block a user