1:修改bug

This commit is contained in:
2025-12-04 20:56:30 +08:00
parent 56bb994377
commit c632692982
13 changed files with 217 additions and 60 deletions

View File

@@ -41,6 +41,7 @@ import com.tencent.imsdk.v2.V2TIMValueCallback;
import com.tencent.qcloud.tuikit.tuichat.bean.ChatInfo;
import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.modulemain.activity.main.activity.MainActivity;
import com.xscm.modulemain.activity.room.activity.RoomActivity;
import com.xscm.modulemain.activity.user.activity.HeartCpActivity;
import com.xscm.modulemain.manager.RoomManager;
import com.xscm.moduleutil.BaseEvent;
@@ -83,6 +84,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import io.reactivex.disposables.Disposable;
@@ -1079,6 +1081,12 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
// 这里可以根据实际需求实现跳转逻辑
// 例如:跳转到礼物详情页面、用户主页等
// 使用缓存数据进入房间
if (ActivityUtils.getTopActivity() instanceof RoomActivity){
if (!Objects.equals(((RoomActivity) ActivityUtils.getTopActivity()).getRoomId(), xlhBean.getRoom_id())) {
((RoomActivity) ActivityUtils.getTopActivity()).refreshRoomInfo(xlhBean.getRoom_id());
}
return;
}
RoomManager.getInstance().fetchRoomDataAndEnter(getApplicationContext(), xlhBean.getRoom_id(), "", null);
}
@@ -1087,6 +1095,12 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
// 这里可以根据实际需求实现跳转逻辑
// 例如:跳转到礼物详情页面、用户主页等
// 使用缓存数据进入房间
if (ActivityUtils.getTopActivity() instanceof RoomActivity){
if (!Objects.equals(((RoomActivity) ActivityUtils.getTopActivity()).getRoomId(), redBean.getRoom_id())) {
((RoomActivity) ActivityUtils.getTopActivity()).refreshRoomInfo(redBean.getRoom_id());
}
return;
}
RoomManager.getInstance().fetchRoomDataAndEnter(getApplicationContext(), redBean.getRoom_id(), "", null);
}

View File

@@ -3733,6 +3733,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
GiftDisplayManager.getInstance().setupDisplayView(mBinding?.giftContainer)
}
fun refreshRoomInfo(roomId:String) {
MvpPre?.getRoomIn(roomId,"")
}
// 添加检查房间连接状态的方法
private fun resumeRoomState() {

View File

@@ -443,6 +443,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
if (mBinding.wvZc.getUserId() != null && !mBinding.wvZc.getUserId().equals("0") && !mBinding.wvZc.getUserId().equals("") && mBinding.wvZc.getUserId().equals(SpUtil.getUserId() + "")) {
mBinding.imQg.setVisibility(VISIBLE);
}
setMike();
}
@Override
@@ -460,6 +461,29 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
}
// TODO: 2025/12/4 判断麦克风是否显示
private void setMike(){
try {
for (int i=0;i<adapter.getData().size();i++){
if (adapter.getData().get(i).getUser_id().equals(SpUtil.getUserId()+"") || roomInfoResp.getSinger_info().getSong_info().getSinger_user_id()==SpUtil.getUserId()){
if (getActivity()!=null){
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setrlMic(true);
}
}
}
}
} catch (Exception e) {
if (getActivity()!=null){
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setrlMic(false);
}
}
}
}
public void event1003(RoomMessageEvent messageEvent) {
UserInfo fromUserInfo = messageEvent.getText().getFromUserInfo();
if (fromUserInfo == null) return;
@@ -524,6 +548,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
configGameOptionBtn();
}
}
setMike();
}
/// 配置操作按钮
@@ -594,6 +619,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
configGameOptionBtn();
}
}
setMike();
}
public void event1039(RoomMessageEvent event) {
@@ -639,6 +665,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
roomPitBeans.set(toIndex, fromBean);
adapter.notifyDataSetChanged();
}
setMike();
}
/**
@@ -707,6 +734,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
mBinding.ciNetAva.setVisibility(GONE);
mBinding.tvSong.setText("演唱歌曲:无");
}
setMike();
}
// TODO: 2025/11/22 当有演唱者的时候,修改演唱者头像的大小
@@ -745,6 +773,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
adapter.notifyItemChanged(i);
}
}
setMike();
}
public void event1021(RoomMessageEvent messageEvent) {

View File

@@ -5,6 +5,7 @@ import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.media.MediaCodec;
import android.media.MediaExtractor;
@@ -15,6 +16,7 @@ import android.media.MediaRecorder;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Vibrator;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
@@ -83,6 +85,10 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
private java.util.List<File> recordingSegments = new java.util.ArrayList<>(); // 录音片段列表
private int isSinger;//传递过来的参数,
// 在类中添加变量
private boolean isLongPressTriggered = false;
private static final int LONG_PRESS_DELAY = 500; // 长按阈值500ms
/**
* 绑定Presenter
* @return 返回该Activity对应的Presenter实例
@@ -118,35 +124,109 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
mBinding.progressArc.setMax(100); // 设置最大值
mBinding.progressArc.setIndeterminate(false);
// 设置长按录音逻辑
// mBinding.recordButton.setOnTouchListener(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// switch (event.getAction()) {
// case MotionEvent.ACTION_DOWN:
// if (!isRecording && !isPlaying) {
// // 长按时改变按钮图案为类似试听后的图案
// mBinding.recordButton.setImageResource(R.mipmap.but_tz);
//
// // 如果之前已经录制过内容,则继续录制
// if (hasRecordedBefore && recordingFile != null && recordingFile.exists()) {
// isAppendRecording = true;
// startRecording();
// } else {
// // 首次录音或重录后
// isAppendRecording = false;
// startRecording();
// }
// }
// return true;
// case MotionEvent.ACTION_UP:
// if (isRecording) {
// stopRecording();
// // 手指离开后恢复默认图案
// mBinding.recordButton.setImageResource(R.mipmap.but_ly);
// }
// return true;
// default:
// return false;
// }
// }
// });
mBinding.recordButton.setOnTouchListener(new View.OnTouchListener() {
private Runnable longPressRunnable;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (!isRecording && !isPlaying) {
// 长按时改变按钮图案为类似试听后的图案
mBinding.recordButton.setImageResource(R.mipmap.but_tz);
isLongPressTriggered = false;
// 如果之前已经录制过内容,则继续录制
if (hasRecordedBefore && recordingFile != null && recordingFile.exists()) {
isAppendRecording = true;
startRecording();
} else {
// 首次录音或重录后
isAppendRecording = false;
startRecording();
// 设置长按检测
longPressRunnable = new Runnable() {
@Override
public void run() {
isLongPressTriggered = true;
if (!isRecording && !isPlaying) {
// 长按触发,改变按钮图案
mBinding.recordButton.setImageResource(R.mipmap.but_tz);
// 震动反馈(可选)
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (vibrator != null) {
vibrator.vibrate(50);
}
// 开始录音
if (hasRecordedBefore && recordingFile != null && recordingFile.exists()) {
isAppendRecording = true;
startRecording();
} else {
isAppendRecording = false;
startRecording();
}
}
}
};
handler.postDelayed(longPressRunnable, LONG_PRESS_DELAY);
return true;
case MotionEvent.ACTION_MOVE:
// 如果手指移出按钮区域,取消长按
if (event.getX() < 0 || event.getX() > v.getWidth() ||
event.getY() < 0 || event.getY() > v.getHeight()) {
handler.removeCallbacks(longPressRunnable);
if (isRecording) {
stopRecording();
mBinding.recordButton.setImageResource(R.mipmap.but_ly);
}
}
return true;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 移除长按检测
handler.removeCallbacks(longPressRunnable);
if (isRecording) {
stopRecording();
// 手指离开后恢复默认图案
mBinding.recordButton.setImageResource(R.mipmap.but_ly);
} else if (isLongPressTriggered) {
// 长按已触发但录音未开始(可能录音启动失败)
mBinding.recordButton.setImageResource(R.mipmap.but_ly);
}
isLongPressTriggered = false;
return true;
default:
return false;
return true;
}
}
});
@@ -326,6 +406,11 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
recordingFile.delete();
recordingFile = null;
}
// 取消计时器
if (timer != null) {
timer.cancel();
timer = null;
}
updateUI();
}
}
@@ -363,7 +448,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
}
} catch (Exception e) {
Log.e("SingerVerification", "停止录音失败: " + e.getMessage());
Toast.makeText(this, "停止录音失败: ", Toast.LENGTH_SHORT).show();
// Toast.makeText(this, "停止录音失败: ", Toast.LENGTH_SHORT).show();
// 发生异常时重置状态,允许重新录制
isRecording = false;
@@ -375,6 +460,11 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
recordingFile.delete();
recordingFile = null;
}
// 取消计时器
if (timer != null) {
timer.cancel();
timer = null;
}
recordingDuration = 0L;
updateUI();
}

View File

@@ -34,7 +34,7 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
override fun initView() {
super.initView()
userId = intent.getIntExtra("userId",0)
userId = intent.getIntExtra("userId", 0)
}
override fun initData() {
@@ -44,9 +44,10 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
userId.toString(),
page,
mBinding.tv2.text.toString(),
mBinding.tv22.text.toString())
mBinding.tv22.text.toString()
)
adapter= TotalRevenueAdapter()
adapter = TotalRevenueAdapter()
mBinding.totalView.adapter = adapter
val commonEmptyView = CommonEmptyView(this)
commonEmptyView.setImg(R.mipmap.ic_empty)
@@ -76,7 +77,8 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
dialog.show(fragmentManager, "DoubleTimePickerBottomSheet")
})
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(object :OnRefreshLoadMoreListener{
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(object :
OnRefreshLoadMoreListener {
override fun onRefresh(refreshLayout: RefreshLayout) {
page++
MvpPre?.familyEarnings(
@@ -97,7 +99,7 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
)
}
} )
})
}
override fun getLayoutId(): Int {
@@ -111,14 +113,16 @@ class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalR
mBinding.smartRefreshLayout.finishRefresh()
mBinding.smartRefreshLayout.finishLoadMore()
// 检查数据是否为空
if (data.isEmpty()) {
return
}
// if (data.isEmpty()) {
// adapter?.data?.clear()
// return
// }
adapter?.let { adapter ->
when {
// 第一页数据为空
page == 1 && data.isEmpty() -> {
adapter.data.clear()
}
// 第一页有数据
page == 1 && data.isNotEmpty() -> {

View File

@@ -7,6 +7,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ToastUtils
import com.tencent.imsdk.v2.V2TIMConversation
import com.tencent.qcloud.tuicore.TUIConstants
@@ -94,7 +95,11 @@ class JoinedFamilyFragment(var data: MyFamilyBean) : BaseFragment<FragmentJoined
myFamilyBean= data
userId = data.user_id
dataList.clear()
dataList.addAll(data.group_members_lists)
try {
dataList.addAll(data.group_members_lists)
} catch (e: Exception) {
LogUtils.e("myFamily1" + e.message)
}
// 安全地处理group_owner_info可能为null的情况
val groupOwnerInfo = data.group_owner_info

View File

@@ -8,6 +8,7 @@ import android.text.style.ForegroundColorSpan
import android.view.View
import android.widget.TextView
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ToastUtils
import com.tencent.imsdk.v2.V2TIMConversation
import com.tencent.qcloud.tuicore.TUIConstants
@@ -131,7 +132,11 @@ class MyFamilyFragment(var data: MyFamilyBean) : BaseFragment<FragmentMyFamilyBi
myFamilyBean = data
userId = data.user_id
dataList.clear()
dataList.addAll(data.group_members_lists)
try {
dataList.addAll(data.group_members_lists)
} catch (e: Exception) {
LogUtils.e("myFamily1" + e.message)
}
mBinding.headView.setData(
data.group_owner_info?.avatar,
@@ -172,8 +177,6 @@ class MyFamilyFragment(var data: MyFamilyBean) : BaseFragment<FragmentMyFamilyBi
position: Int,
item: MyFamilyBean.GroupMembersListsBean
) {
//
if (item.free_renewal > 0) {
queren1(
1,

View File

@@ -19,7 +19,7 @@ class TotalRevenueAdapter : BaseQuickAdapter<FamilyEarnings?, BaseViewHolder>(R.
helper.setText(R.id.tv_name, item?.nickname)
helper.setText(R.id.tv_gift_name, item?.gift_name)
helper.setText(R.id.tv_gift_price, item?.gift_price)
helper.setText(R.id.tv_time, "时间"+TimeUtils.getDateToStringNoZ(item?.createtime?:0L))
helper.setText(R.id.tv_time, "时间"+TimeUtils.getDateToStringNoZ(item?.createtime!!*1000))
helper.setText(R.id.tv_jb, item?.earnings)
}
}

View File

@@ -78,6 +78,9 @@ public class RoomManager {
public void fetchRoomDataAndEnter(Context context, String roomId, String password, String taskId) {
this.taskId=taskId;
this.context=context;
// 显示加载提示
// 这里可以根据需要添加加载对话框
if (CommonAppContext.getInstance().isRoomJoininj) {
@@ -225,6 +228,7 @@ public class RoomManager {
LogUtils.dTag("RoomActivity", "navigateToRoom:房间信息获取存在问题");
return;
}
LogUtils.e(ActivityUtils.getTopActivity().getComponentName());
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ActivityUtils.getTopActivity().startActivity(intent);
} catch (Exception e) {

View File

@@ -65,7 +65,7 @@
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_12"
android:paddingEnd="@dimen/dp_12"
android:text="点击选择"
android:hint="点击选择"
android:textColor="#9B9B9B"
android:textSize="@dimen/sp_14" />
</LinearLayout>

View File

@@ -949,33 +949,6 @@
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_me_income"
android:layout_width="0dp"
android:layout_height="@dimen/dp_46"
android:layout_gravity="bottom"
android:layout_marginTop="@dimen/dp_5"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
app:layout_flexBasisPercent="25%"
app:layout_flexGrow="1">
<ImageView
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/me_income" />
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_3"
android:text="个税客服"
android:textColor="#CCCDC8"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_singer"
android:layout_width="0dp"
@@ -1059,6 +1032,33 @@
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_me_income"
android:layout_width="0dp"
android:layout_height="@dimen/dp_46"
android:layout_gravity="bottom"
android:layout_marginTop="@dimen/dp_5"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
app:layout_flexBasisPercent="25%"
app:layout_flexGrow="1"
android:visibility="invisible">
<ImageView
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/me_income" />
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_3"
android:text="个税客服"
android:textColor="#CCCDC8"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="@dimen/dp_46"

View File

@@ -280,7 +280,8 @@
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toBottomOf="@id/bnv_second">
app:layout_constraintTop_toBottomOf="@id/bnv_second"
android:visibility="gone">
<ImageView
@@ -307,7 +308,8 @@
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toBottomOf="@id/bnv_first">
app:layout_constraintTop_toBottomOf="@id/bnv_first"
android:visibility="gone">
<ImageView
@@ -334,7 +336,8 @@
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toBottomOf="@id/bnv_third">
app:layout_constraintTop_toBottomOf="@id/bnv_third"
android:visibility="gone">
<ImageView

View File

@@ -97,7 +97,8 @@
android:layout_marginTop="5dp"
app:layout_constraintBottom_toBottomOf="@+id/room_item_head"
app:layout_constraintLeft_toRightOf="@+id/room_item_head"
app:layout_constraintTop_toTopOf="@+id/room_item_head" />
app:layout_constraintTop_toTopOf="@+id/room_item_head"
android:visibility="gone"/>