From 8640c7366adcb59fddf96a005fac318c2cbb30f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=B0=8F=E6=B1=9F?= <461355754@qq.com> Date: Fri, 5 Dec 2025 14:35:34 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=9A=E4=BF=AE=E6=94=B9BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moduleutil/bean/room/RoomPitBean.java | 11 +++- .../com/xscm/moduleutil/rtc/AgoraManager.java | 20 +++--- .../com/xscm/moduleutil/utils/TimeUtils.java | 39 ++++++++++++ .../activity/room/activity/RoomActivity.kt | 12 ++++ .../room/adapter/RequestSongPagerAdapter.java | 6 +- .../room/adapter/RequestedSongsAdapter.java | 41 +++++++----- .../room/fragment/RequestSongFragment.java | 8 ++- .../room/fragment/RequestedSongsFragment.java | 24 ++++++- .../room/fragment/RoomJukeboxFragment.java | 32 ++++++++-- .../activity/SingerVerificationActivity.java | 63 ++++++++++--------- .../user/fragment/MyRoomListFragment.java | 2 +- .../user/fragment/VocalRangeFragment.java | 9 ++- .../modulemain/adapter/BosomFriendAdapter.kt | 10 +-- .../adapter/ExpandColumnAdapter.java | 4 +- .../adapter/RelationshipAdapter.java | 2 +- .../modulemain/dialog/RedBagSendDialog.java | 5 ++ .../xscm/modulemain/manager/RoomManager.java | 8 +-- .../main/res/layout/activity_daily_tasks.xml | 1 + .../src/main/res/layout/fragment_news.xml | 3 +- 19 files changed, 218 insertions(+), 82 deletions(-) diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java index f0ac0e63..871ea5e5 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/RoomPitBean.java @@ -6,7 +6,7 @@ import java.io.Serializable; import lombok.Data; @Data -public class RoomPitBean implements Serializable { +public class RoomPitBean implements Serializable ,Cloneable{ /** @@ -81,4 +81,13 @@ public class RoomPitBean implements Serializable { private boolean occupied; private boolean imageType;//是否是演唱者 + public RoomPitBean clone(){ + try { + return (RoomPitBean)super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return null; + } + } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java b/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java index a6403110..286e5856 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java @@ -1,7 +1,6 @@ package com.xscm.moduleutil.rtc; -import static com.blankj.utilcode.util.SnackbarUtils.getView; import static io.agora.rtc2.Constants.NETWORK_TYPE_DISCONNECTED; import static io.agora.rtc2.Constants.NETWORK_TYPE_LAN; import static io.agora.rtc2.Constants.NETWORK_TYPE_MOBILE_2G; @@ -12,28 +11,20 @@ import static io.agora.rtc2.Constants.NETWORK_TYPE_UNKNOWN; import static io.agora.rtc2.Constants.NETWORK_TYPE_WIFI; 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 android.annotation.SuppressLint; -import android.app.Activity; -import android.app.Application; 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; @@ -60,7 +51,6 @@ 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; @@ -386,6 +376,13 @@ public class AgoraManager { private IRtcEngineEventHandler getDefaultEventHandler() { return new IRtcEngineEventHandler() { + + @Override + public void onAudioEffectFinished(int soundId) { + super.onAudioEffectFinished(soundId); + LogUtils.e("onAudioEffectFinished", "soundId------>" + soundId); + } + @Override public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) { super.onRemoteAudioStateChanged(uid, state, reason, elapsed); @@ -471,6 +468,7 @@ public class AgoraManager { public void onSongSimpleInfoResult(String requestId, long songCode, String simpleInfo, int reason) { } + }); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java index 552e1271..ebd61b7e 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java @@ -258,4 +258,43 @@ public class TimeUtils { return "1天"; // 或者 return "0天"; } + /** + * 根据生日字符串计算年龄 + * @param birthDay 生日字符串,格式为 "yyyy-MM-dd" + * @return 年龄 + */ + public static int getAgeByBirthDay(String birthDay) { + if (birthDay == null || birthDay.isEmpty()) { + return 0; + } + + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date birthDate = sdf.parse(birthDay); + + Calendar cal = Calendar.getInstance(); + int currentYear = cal.get(Calendar.YEAR); + int currentMonth = cal.get(Calendar.MONTH); + int currentDay = cal.get(Calendar.DAY_OF_MONTH); + + cal.setTime(birthDate); + int birthYear = cal.get(Calendar.YEAR); + int birthMonth = cal.get(Calendar.MONTH); + int birthDayOfMonth = cal.get(Calendar.DAY_OF_MONTH); + + int age = currentYear - birthYear; + + // 如果当前月份小于生日月份,或者月份相同但当前日期小于生日日期,则年龄减1 + if (currentMonth < birthMonth || + (currentMonth == birthMonth && currentDay < birthDayOfMonth)) { + age--; + } + + return age < 0 ? 0 : age; + } catch (ParseException e) { + e.printStackTrace(); + return 0; + } + } + } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt index c5f87dac..3386c9de 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt @@ -3337,6 +3337,18 @@ class RoomActivity : BaseMvpActivity(), mBinding!!.headName.text = mRoomInfoResp?.room_info?.head_line?.nickname mBinding!!.headCone.text = mRoomInfoResp?.room_info?.head_line?.content + mBinding!!.headAvate.setOnClickListener { view -> + RoomUserInfoFragment.show( + roomId, + mRoomInfoResp?.room_info?.head_line?.user_id, + "", + getHostUser(), + false, + 2, + isNumberWhether(), + supportFragmentManager) + } + mBinding!!.ivQuanQiang.setOnClickListener { v: View? -> val fragment = PublishCommentDialogFragment.show( roomId, diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestSongPagerAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestSongPagerAdapter.java index ddec8bab..7158e2d0 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestSongPagerAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestSongPagerAdapter.java @@ -15,9 +15,11 @@ import com.xscm.modulemain.activity.room.fragment.SongRequestFragment; public class RequestSongPagerAdapter extends FragmentStateAdapter { private static final int TAB_COUNT = 3; // 三个标签页 + private String zcUserId; - public RequestSongPagerAdapter(@NonNull FragmentActivity fragmentActivity) { + public RequestSongPagerAdapter(String zcUserId,@NonNull FragmentActivity fragmentActivity) { super(fragmentActivity); + this.zcUserId = zcUserId; } @NonNull @@ -27,7 +29,7 @@ public class RequestSongPagerAdapter extends FragmentStateAdapter { case 0: return new SongRequestFragment(); // 点歌页面 case 1: - return new RequestedSongsFragment(); // 已点歌曲页面 + return RequestedSongsFragment.newInstance(zcUserId); // 已点歌曲页面 case 2: return new SongHistoryFragment(); // 历史记录页面 default: diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestedSongsAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestedSongsAdapter.java index fd3945c5..416fc74e 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestedSongsAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RequestedSongsAdapter.java @@ -30,15 +30,14 @@ public class RequestedSongsAdapter extends BaseQuickAdapter songList = new ArrayList<>(); + private String zcUserId; + + public RequestedSongsFragment(){ + + } + + public static RequestedSongsFragment newInstance(String zcUserId) { + + Bundle args = new Bundle(); + args.putString("zcUserId", zcUserId); + RequestedSongsFragment fragment = new RequestedSongsFragment(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + zcUserId= getArguments().getString("zcUserId"); + } @Override protected RequestSongPresenter bindPresenter() { @@ -68,7 +90,7 @@ public class RequestedSongsFragment extends BaseMvpFragment 1) { // 如果还没有合并文件,先进行合并 if (mergedRecordingFile == null || !mergedRecordingFile.exists()) { - Log.d("SingerVerification", "提交前合并音频片段,共 " + recordingSegments.size() + " 个片段"); + LogUtils.d("SingerVerification", "提交前合并音频片段,共 " + recordingSegments.size() + " 个片段"); mergeAudioFiles(); } else { - Log.d("SingerVerification", "使用已合并的音频文件: " + mergedRecordingFile.getAbsolutePath()); + LogUtils.d("SingerVerification", "使用已合并的音频文件: " + mergedRecordingFile.getAbsolutePath()); recordingFile = mergedRecordingFile; } } else if (recordingSegments.size() == 1) { // 只有一个片段,直接使用 recordingFile = recordingSegments.get(0); - Log.d("SingerVerification", "使用单个录音片段: " + recordingFile.getAbsolutePath()); + LogUtils.d("SingerVerification", "使用单个录音片段: " + recordingFile.getAbsolutePath()); } if (recordingFile == null || !recordingFile.exists()) { @@ -640,7 +641,7 @@ public class SingerVerificationActivity extends BaseMvpActivity 0) { // 修复:累计当前时间戳,而不是替换 currentPresentationTimeUs += segmentDuration; - Log.d("SingerVerification", "片段 " + (segmentCount + 1) + " 处理完成,片段时长: " + segmentDuration + " us, 累计时间: " + currentPresentationTimeUs + " us"); + LogUtils.d("SingerVerification", "片段 " + (segmentCount + 1) + " 处理完成,片段时长: " + segmentDuration + " us, 累计时间: " + currentPresentationTimeUs + " us"); } else { - Log.w("SingerVerification", "片段 " + (segmentCount + 1) + " 处理失败或为空"); + LogUtils.w("SingerVerification", "片段 " + (segmentCount + 1) + " 处理失败或为空"); } segmentCount++; } - Log.d("SingerVerification", "所有片段处理完成,总时长: " + currentPresentationTimeUs + " us,共处理 " + segmentCount + " 个片段"); + LogUtils.d("SingerVerification", "所有片段处理完成,总时长: " + currentPresentationTimeUs + " us,共处理 " + segmentCount + " 个片段"); // 更新最终录音文件 updateRecordingFile(); @@ -781,14 +782,14 @@ public class SingerVerificationActivity extends BaseMvpActivity 0) { recordingFile = mergedRecordingFile; - Log.d("SingerVerification", "音频文件合并完成,文件大小: " + mergedRecordingFile.length() + " bytes"); - Log.d("SingerVerification", "设置当前播放文件为合并文件: " + mergedRecordingFile.getAbsolutePath()); + LogUtils.d("SingerVerification", "音频文件合并完成,文件大小: " + mergedRecordingFile.length() + " bytes"); + LogUtils.d("SingerVerification", "设置当前播放文件为合并文件: " + mergedRecordingFile.getAbsolutePath()); } else { - Log.e("SingerVerification", "合并文件不存在或为空,使用第一个录音片段"); + LogUtils.e("SingerVerification", "合并文件不存在或为空,使用第一个录音片段"); if (!recordingSegments.isEmpty()) { recordingFile = recordingSegments.get(0); } @@ -886,12 +887,12 @@ public class SingerVerificationActivity extends BaseMvpActivity) : BaseMultiItemQuic // ImageUtils.loadHead(relation2.avatar1, holder.getView(R.id.user_nav2)) // holder.setText(R.id.tv_nickname2, relation2.nickname1) - holder.setText(R.id.tv_gx_time, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[0].end_time.toLong())) - holder.setText(R.id.tv_gx_time2, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[1].end_time.toLong())) + holder.setText(R.id.tv_gx_time, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[0].end_time.toLong()* 1000 - System.currentTimeMillis())) + holder.setText(R.id.tv_gx_time2, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[1].end_time.toLong()* 1000 - System.currentTimeMillis())) holder.getView(R.id.user_nav1).setOnClickListener { if (relation1.user_id1== SpUtil.getUserId()){ @@ -286,9 +286,9 @@ class BosomFriendAdapter(data: MutableList) : BaseMultiItemQuic // ImageUtils.loadHead(relation3.avatar1, holder.getView(R.id.user_nav3)) // holder.setText(R.id.tv_nickname3, relation3.nickname1) - holder.setText(R.id.tv_gx_time, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[0].end_time.toLong())) - holder.setText(R.id.tv_gx_time2, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[1].end_time.toLong())) - holder.setText(R.id.tv_gx_time3, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[2].end_time.toLong())) + holder.setText(R.id.tv_gx_time, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[0].end_time.toLong()* 1000 - System.currentTimeMillis())) + holder.setText(R.id.tv_gx_time2, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[1].end_time.toLong()* 1000 - System.currentTimeMillis())) + holder.setText(R.id.tv_gx_time3, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[2].end_time.toLong()* 1000 - System.currentTimeMillis())) holder.getView(R.id.user_nav1).setOnClickListener { if (relation1.user_id1== SpUtil.getUserId()){ diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java index 49b750fc..a5420b3e 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java @@ -13,11 +13,13 @@ import com.xscm.moduleutil.bean.ExpandColumnBean; import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.MeHeadView; import com.xscm.moduleutil.utils.SpUtil; +import com.xscm.moduleutil.utils.TimeUtils; import com.xscm.moduleutil.widget.MyGridView; import com.xscm.moduleutil.widget.ShineTextView; import com.xscm.moduleutil.widget.img.FullScreenUtil; import java.util.List; +import java.util.concurrent.TimeUnit; public class ExpandColumnAdapter extends BaseQuickAdapter { public ExpandColumnAdapter() { @@ -52,7 +54,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter { } } }); + mBinding.rgXz.check(R.id.bt_pt); + redType = 1; + mBinding.lKl.setVisibility(GONE); mBinding.rgXz.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override @@ -164,6 +167,8 @@ public class RedBagSendDialog extends BaseDialog { } } }); + mBinding.rgDjs.check(R.id.rb_lk); + redTime = 0; mBinding.rgDjs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override diff --git a/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java b/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java index f3f5b52e..d3f9c384 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java +++ b/MainModule/src/main/java/com/xscm/modulemain/manager/RoomManager.java @@ -83,10 +83,10 @@ public class RoomManager { // 显示加载提示 // 这里可以根据需要添加加载对话框 - if (CommonAppContext.getInstance().isRoomJoininj) { - return; - } - CommonAppContext.getInstance().isRoomJoininj = true; +// if (CommonAppContext.getInstance().isRoomJoininj) { +// return; +// } +// CommonAppContext.getInstance().isRoomJoininj = true; // 检查是否有有效的缓存数据 RoomInfoResp roomInfo = getCachedRoomData(roomId); //加入房间 diff --git a/MainModule/src/main/res/layout/activity_daily_tasks.xml b/MainModule/src/main/res/layout/activity_daily_tasks.xml index b8fae3d2..d9b3329e 100644 --- a/MainModule/src/main/res/layout/activity_daily_tasks.xml +++ b/MainModule/src/main/res/layout/activity_daily_tasks.xml @@ -64,6 +64,7 @@ android:layout_height="match_parent" android:layout_marginTop="@dimen/dp_12" android:paddingStart="@dimen/dp_16" + android:paddingBottom="@dimen/dp_100" android:paddingEnd="@dimen/dp_16" /> diff --git a/MainModule/src/main/res/layout/fragment_news.xml b/MainModule/src/main/res/layout/fragment_news.xml index d8da1ccd..9e09f486 100644 --- a/MainModule/src/main/res/layout/fragment_news.xml +++ b/MainModule/src/main/res/layout/fragment_news.xml @@ -48,7 +48,8 @@ android:layout_height="@dimen/dp_62" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_12" - android:layout_marginEnd="@dimen/dp_16"> + android:layout_marginEnd="@dimen/dp_16" + android:visibility="gone">