This commit is contained in:
2025-12-26 19:41:52 +08:00
parent 9476655ba3
commit fa6f40c369
9 changed files with 90 additions and 30 deletions

View File

@@ -136,7 +136,7 @@ public class CommonAppContext extends MultiDexApplication implements Application
@Getter @Getter
public UnreadCountEvent unreadCountEvent; public UnreadCountEvent unreadCountEvent;
public static int selectRelease = -1; public static int selectRelease = 1;
@Override @Override
public void onCreate() { public void onCreate() {

View File

@@ -211,7 +211,7 @@ public class AgoraManager {
try { try {
rtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO, rtcEngine.setAudioProfile(Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO,
Constants.AUDIO_SCENARIO_GAME_STREAMING); Constants.AUDIO_SCENARIO_GAME_STREAMING);
rtcEngine.enableAudioVolumeIndication(200, 3, true); rtcEngine.enableAudioVolumeIndication(100, 3, true);
rtcEngine.setClientRole(Constants.CLIENT_ROLE_BROADCASTER); rtcEngine.setClientRole(Constants.CLIENT_ROLE_BROADCASTER);
rtcEngine.muteLocalAudioStream(true); // 默认静音 rtcEngine.muteLocalAudioStream(true); // 默认静音
rtcEngine.muteAllRemoteAudioStreams(false); // 监听远端的音频 rtcEngine.muteAllRemoteAudioStreams(false); // 监听远端的音频
@@ -407,14 +407,14 @@ public class AgoraManager {
@Override @Override
public void onAudioEffectFinished(int soundId) { public void onAudioEffectFinished(int soundId) {
super.onAudioEffectFinished(soundId); super.onAudioEffectFinished(soundId);
LogUtils.e("onAudioEffectFinished", "soundId------>" + soundId); // LogUtils.e("onAudioEffectFinished", "soundId------>" + soundId);
} }
@Override @Override
public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) { public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {
super.onRemoteAudioStateChanged(uid, state, reason, elapsed); super.onRemoteAudioStateChanged(uid, state, reason, elapsed);
if (state == 0){ if (state == 0){
LogUtils.e("onRemoteAudioStateChanged", "uid------>" + uid, "state------>" + state, "reason------>" + reason, "elapsed------>" + elapsed); // LogUtils.e("onRemoteAudioStateChanged", "uid------>" + uid, "state------>" + state, "reason------>" + reason, "elapsed------>" + elapsed);
for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) { for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) {
if (listener != null) { if (listener != null) {
// Pk 关闭远端推流 // Pk 关闭远端推流
@@ -427,7 +427,7 @@ public class AgoraManager {
@Override @Override
public void onUserMuteAudio(int uid, boolean muted) { public void onUserMuteAudio(int uid, boolean muted) {
super.onUserMuteAudio(uid, muted); super.onUserMuteAudio(uid, muted);
LogUtils.e("onUserMuteAudio", "uid------>" + uid, "muted------>" + muted); // LogUtils.e("onUserMuteAudio", "uid------>" + uid, "muted------>" + muted);
} }
@Override @Override
@@ -708,37 +708,37 @@ public class AgoraManager {
@Override @Override
public void onPlayerEvent(io.agora.mediaplayer.Constants.MediaPlayerEvent eventCode, long elapsedTime, String message) { public void onPlayerEvent(io.agora.mediaplayer.Constants.MediaPlayerEvent eventCode, long elapsedTime, String message) {
LogUtils.e("@@@", "eventCode: " + eventCode + ", elapsedTime: " + elapsedTime + ", message: " + message); // LogUtils.e("@@@", "eventCode: " + eventCode + ", elapsedTime: " + elapsedTime + ", message: " + message);
} }
@Override @Override
public void onMetaData(io.agora.mediaplayer.Constants.MediaPlayerMetadataType type, byte[] data) { public void onMetaData(io.agora.mediaplayer.Constants.MediaPlayerMetadataType type, byte[] data) {
LogUtils.e("@@@", "type: " + type + ", data: " + data); // LogUtils.e("@@@", "type: " + type + ", data: " + data);
} }
@Override @Override
public void onPlayBufferUpdated(long playCachedBuffer) { public void onPlayBufferUpdated(long playCachedBuffer) {
LogUtils.e("@@@", "playCachedBuffer: " + playCachedBuffer); // LogUtils.e("@@@", "playCachedBuffer: " + playCachedBuffer);
} }
@Override @Override
public void onPreloadEvent(String src, io.agora.mediaplayer.Constants.MediaPlayerPreloadEvent event) { public void onPreloadEvent(String src, io.agora.mediaplayer.Constants.MediaPlayerPreloadEvent event) {
LogUtils.e("@@@", "src: " + src + ", event: " + event); // LogUtils.e("@@@", "src: " + src + ", event: " + event);
} }
@Override @Override
public void onAgoraCDNTokenWillExpire() { public void onAgoraCDNTokenWillExpire() {
LogUtils.e("@@@", "onAgoraCDNTokenWillExpire"); // LogUtils.e("@@@", "onAgoraCDNTokenWillExpire");
} }
@Override @Override
public void onPlayerSrcInfoChanged(SrcInfo from, SrcInfo to) { public void onPlayerSrcInfoChanged(SrcInfo from, SrcInfo to) {
LogUtils.e("@@@", "from: " + from + ", to: " + to); // LogUtils.e("@@@", "from: " + from + ", to: " + to);
} }
@Override @Override
public void onPlayerInfoUpdated(PlayerUpdatedInfo info) { public void onPlayerInfoUpdated(PlayerUpdatedInfo info) {
LogUtils.e("@@@", "info: " + info); // LogUtils.e("@@@", "info: " + info);
} }
@Override @Override
@@ -1365,12 +1365,12 @@ public class AgoraManager {
@Override @Override
public void connected(@NonNull DownloadTask task, int blockCount, long currentOffset, long totalLength) { public void connected(@NonNull DownloadTask task, int blockCount, long currentOffset, long totalLength) {
com.xscm.moduleutil.utils.logger.Logger.e("connected", blockCount); // com.xscm.moduleutil.utils.logger.Logger.e("connected", blockCount);
} }
@Override @Override
public void progress(@NonNull DownloadTask task, long currentOffset, long totalLength) { public void progress(@NonNull DownloadTask task, long currentOffset, long totalLength) {
com.xscm.moduleutil.utils.logger.Logger.e("progress", currentOffset); // com.xscm.moduleutil.utils.logger.Logger.e("progress", currentOffset);
} }
@Override @Override

View File

@@ -2,7 +2,11 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="@dimen/dp_40" android:layout_height="@dimen/dp_40"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
android:descendantFocusability="blocksDescendants">
<com.xscm.moduleutil.widget.CircularImage <com.xscm.moduleutil.widget.CircularImage
android:id="@+id/user_icon" android:id="@+id/user_icon"

View File

@@ -876,14 +876,17 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
override fun onConnectFailed(code: Int, error: String?) { override fun onConnectFailed(code: Int, error: String?) {
LogUtils.e("@@@", "断开连接") LogUtils.e("@@@", "断开连接:${error} code:$code")
CommonAppContext.getInstance().onConnectFailed = true CommonAppContext.getInstance().onConnectFailed = true
} }
override fun onKickedOffline() { override fun onKickedOffline() {
// queren1(); // queren1();
LogUtils.e("@@@", "您的账号已被挤下线")
if (CommonAppContext.getInstance().playId != null) { if (CommonAppContext.getInstance().playId != null) {
ToastUtils.show("您的账号已被挤下线") runOnUiThread {
ToastUtils.show("您的账号已被挤下线")
}
try { try {
CommonAppContext.getInstance().clearLoginInfo() CommonAppContext.getInstance().clearLoginInfo()
} catch (e: ClassNotFoundException) { } catch (e: ClassNotFoundException) {
@@ -892,9 +895,13 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
} }
override fun onUserSigExpired() {} override fun onUserSigExpired() {
LogUtils.e("@@@", "onUserSigExpired")
}
override fun onSelfInfoUpdated(info: V2TIMUserFullInfo?) {} override fun onSelfInfoUpdated(info: V2TIMUserFullInfo?) {
LogUtils.e("@@@", "onSelfInfoUpdated:${info?.toString()}")
}
} }
/** /**
@@ -1532,6 +1539,15 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
messageEvent.text.rights_icon messageEvent.text.rights_icon
) )
} }
//TODO================ CP入场不触发播放 临时添加===============
Observable.timer(1000, TimeUnit.MILLISECONDS).observeOn(
AndroidSchedulers.mainThread()
).subscribe { aLong: Long? ->
if (ActivityUtils.getTopActivity() is RoomActivity) {
toActivity(TransparentActivity::class.java)
}
}
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSignStartText) { } else if (msgType == EMMessageInfo.QXRoomMessageTypeSignStartText) {
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
softRebuildUI() softRebuildUI()
@@ -2812,6 +2828,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
* @param type * @param type
*/ */
fun switchMic(type: Int) { fun switchMic(type: Int) {
logIn("switchMic-${type}-")
if (type == 1) { if (type == 1) {
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone) mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone)
AgoraManager.getInstance() AgoraManager.getInstance()
@@ -3544,7 +3561,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
roomId, pitNumber, mOnlineBean, mRoomUserBean, mRoomInfoResp, roomId, pitNumber, mOnlineBean, mRoomUserBean, mRoomInfoResp,
supportFragmentManager supportFragmentManager
) )
LogUtils.e("fragment_onItemClickListener: ${(fragment != null)}") LogUtils.e("showUserListDialog: roomId-${roomId}, pitNumber-${pitNumber}, mRoomUserBean-${mRoomUserBean.toString()}, mRoomInfoResp-${mRoomInfoResp.toString()}")
} }
override fun applyPit() { override fun applyPit() {
@@ -4222,7 +4239,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
val builder = AlertDialog.Builder(this) val builder = AlertDialog.Builder(this)
val inflater = layoutInflater val inflater = layoutInflater
val dialogView = val dialogView =
inflater.inflate(com.xscm.moduleutil.R.layout.room_message_input_menu, null) inflater.inflate(com.xscm.moduleutil.R.layout.room_message_input_menu, null)
builder.setView(dialogView) builder.setView(dialogView)
val etContent = dialogView.findViewById<EditText>(com.xscm.moduleutil.R.id.et_content) val etContent = dialogView.findViewById<EditText>(com.xscm.moduleutil.R.id.et_content)
val tvSend = dialogView.findViewById<Button>(com.xscm.moduleutil.R.id.tv_send) val tvSend = dialogView.findViewById<Button>(com.xscm.moduleutil.R.id.tv_send)
@@ -4334,6 +4351,28 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
} }
private fun logIn(name:String){
// ========== 核心:打印调用来源 ==========
val stackTrace = Throwable().stackTrace
if (stackTrace.size >= 2) { // stackTrace[0]是当前方法stackTrace[1]是直接调用方
val caller = stackTrace[1]
val logMsg = "${name}() 被调用:\n" +
"调用类:${caller.className}\n" +
"调用方法:${caller.methodName}\n" +
"调用行号:${caller.lineNumber}\n" +
"调用文件:${caller.fileName}"
// 打印到 LogcatTAG 可自定义,比如你的页面名)
Log.e("SwitchMicCaller", logMsg)
// 如果需要更完整的调用链(比如多层调用),可以遍历 stackTrace
// 示例打印前5层调用链
// Log.e("SwitchMicCaller", "完整调用链:")
// for (i in 0 until minOf(stackTrace.size, 5)) {
// val element = stackTrace[i]
// Log.e("SwitchMicCaller", "第${i}层:${element.className}.${element.methodName} (${element.fileName}:${element.lineNumber})")
// }
}
}
private val CLICK_INTERVAL: Long = 500 // 500ms内不允许重复点击 private val CLICK_INTERVAL: Long = 500 // 500ms内不允许重复点击
private var lastClickTime: Long = 0 private var lastClickTime: Long = 0

View File

@@ -1051,6 +1051,10 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
mBinding.tvYs.setVisibility(GONE); mBinding.tvYs.setVisibility(GONE);
mBinding.tvJs.setVisibility(GONE); mBinding.tvJs.setVisibility(GONE);
} }
mBinding.tvKs.requestLayout();
mBinding.tvYs.requestLayout();
mBinding.tvJs.requestLayout();
} }
/// 配置倒计时 /// 配置倒计时

View File

@@ -236,7 +236,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
MvpPre.signDelay(mSignId!!, mRoomId) MvpPre.signDelay(mSignId!!, mRoomId)
} }
R.id.tv_time_start ->{ R.id.tv_time_start -> {
MvpPre.signStart(mRoomId, mSignPitBean?.user_id!!) MvpPre.signStart(mRoomId, mSignPitBean?.user_id!!)
} }
@@ -275,11 +275,13 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
if (isStart) { if (isStart) {
mBinding.tvTime.visibility = View.VISIBLE mBinding.tvTime.visibility = View.VISIBLE
mBinding.groupLeftPrice.visibility = View.VISIBLE mBinding.groupLeftPrice.visibility = View.VISIBLE
mBinding.groupLeftPrice.requestLayout()
if (getHostUser() < 4) { if (getHostUser() < 4) {
mBinding.tvTimeRight.visibility = View.VISIBLE mBinding.tvTimeRight.visibility = View.VISIBLE
} else { } else {
mBinding.tvTimeRight.visibility = View.GONE mBinding.tvTimeRight.visibility = View.GONE
} }
mBinding.tvTimeRight.requestLayout()
} else { } else {
mBinding.tvTimeRight.visibility = View.GONE mBinding.tvTimeRight.visibility = View.GONE
mBinding.tvTime.visibility = View.GONE mBinding.tvTime.visibility = View.GONE
@@ -302,20 +304,22 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
"0" "0"
) )
) { ) {
if (isStart){ if (isStart) {
mBinding.tvTimeLeft.visibility = View.VISIBLE mBinding.tvTimeLeft.visibility = View.VISIBLE
mBinding.tvTimeStart.visibility = View.GONE mBinding.tvTimeStart.visibility = View.GONE
}else{ } else {
mBinding.tvTimeLeft.visibility = View.GONE mBinding.tvTimeLeft.visibility = View.GONE
mBinding.tvTimeStart.visibility = View.VISIBLE mBinding.tvTimeStart.visibility = View.VISIBLE
} }
} else { } else {
if (isStart){ if (isStart) {
mBinding.tvTimeLeft.visibility = View.GONE mBinding.tvTimeLeft.visibility = View.GONE
}else{ } else {
mBinding.tvTimeStart.visibility = View.GONE mBinding.tvTimeStart.visibility = View.GONE
} }
} }
mBinding.tvTimeLeft.requestLayout()
mBinding.tvTimeStart.requestLayout()
} }
@@ -349,7 +353,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
fun roomTypeSwitch(roomInfoResp: RoomInfoResp) { fun roomTypeSwitch(roomInfoResp: RoomInfoResp) {
this.mRoomInfoResp = roomInfoResp this.mRoomInfoResp = roomInfoResp
//重新初始化 //重新初始化
if (isStart){ if (isStart) {
stopTimer() stopTimer()
isStart = false isStart = false
} }
@@ -702,6 +706,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
// 在Fragment销毁时记得清理资源 // 在Fragment销毁时记得清理资源
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
timer.stop()
scope.cancel() scope.cancel()
} }

View File

@@ -185,7 +185,7 @@ public class RealNameActivity extends BaseMvpActivity<RealNamePresenter, Activit
com.blankj.utilcode.util.ToastUtils.showShort("请输入身份证号"); com.blankj.utilcode.util.ToastUtils.showShort("请输入身份证号");
return; return;
} }
if (RegexUtils.isIDCard18Exact(mBinding.edPassword.getText().toString())) { if (mBinding.edPassword.getText().toString().trim().length() == 18) {
if (mBinding.btnSubmit.getText().toString().equals("下一步")) { if (mBinding.btnSubmit.getText().toString().equals("下一步")) {
mBinding.stepNum1.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.num_11)); mBinding.stepNum1.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.num_11));
mBinding.stepNum2.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.num_2)); mBinding.stepNum2.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.num_2));

View File

@@ -195,13 +195,17 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
if (id == R.id.room_m_cz) { if (id == R.id.room_m_cz) {
if (mBinding.roomMCz.getText().equals("上麦")) { if (mBinding.roomMCz.getText().equals("上麦")) {
LogUtils.e("applyPit:room_id:" + room_id + ",user_id:" + user_id);
MvpPre.applyPit(room_id, ""); MvpPre.applyPit(room_id, "");
} else if (mBinding.roomMCz.getText().equals("抱麦")) { } else if (mBinding.roomMCz.getText().equals("抱麦")) {
LogUtils.e("抱麦:room_id:" + room_id + ",pit_number:" + pit_number + ",user_id:" + user_id);
MvpPre.hostUserPit(room_id, pit_number, user_id, "1"); MvpPre.hostUserPit(room_id, pit_number, user_id, "1");
} else { } else {
if (user_id.equals(SpUtil.getUserId() + "")) { if (user_id.equals(SpUtil.getUserId() + "")) {
LogUtils.e("downPit:room_id:" + room_id + ",pit_number:" + pit_number + ",user_id:" + user_id);
MvpPre.downPit(room_id, pit_number); MvpPre.downPit(room_id, pit_number);
} else { } else {
LogUtils.e("抱麦:room_id:" + room_id + ",pit_number:" + pit_number + ",user_id:" + user_id);
MvpPre.hostUserPit(room_id, pit_number, user_id, "2"); MvpPre.hostUserPit(room_id, pit_number, user_id, "2");
} }
} }
@@ -215,6 +219,10 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
.create() .create()
.showAsDropDown(mBinding.roomDian, 0, 20); .showAsDropDown(mBinding.roomDian, 0, 20);
} else if (id == R.id.im_room_t) { } else if (id == R.id.im_room_t) {
if (userInfo != null && TextUtils.isEmpty(userInfo.getNickname())){
ToastUtils.show("用户信息加载中,请稍后...");
return;
}
userInfo.setTa("1"); userInfo.setTa("1");
EventBus.getDefault().post(userInfo); EventBus.getDefault().post(userInfo);
dismiss(); dismiss();

View File

@@ -28,8 +28,8 @@ isBuildModule=false
#org.gradle.deamon=false #org.gradle.deamon=false
android.injected.testOnly=false android.injected.testOnly=false
APP_VERSION_NAME=1.0.9.1 APP_VERSION_NAME=1.0.9.2
APP_VERSION_CODE=81 APP_VERSION_CODE=82
org.gradle.jvm.toolchain.useLegacyAdapters=false org.gradle.jvm.toolchain.useLegacyAdapters=false
#org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15 #org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15