1:修改测试出来的bug,关于:身价、我的家族、歌手认证、挚友、房间心跳、

This commit is contained in:
2025-12-02 19:26:37 +08:00
parent 8ce028379c
commit d94d7a75df
24 changed files with 239 additions and 77 deletions

View File

@@ -1,8 +1,11 @@
package com.xscm.modulemain.activity.room.fragment
import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
import android.os.Vibrator
import android.view.Gravity
import android.view.HapticFeedbackConstants
import android.view.LayoutInflater
import android.view.View
import android.widget.PopupWindow
@@ -411,7 +414,6 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
override fun signCoinList(list: List<String>) {
MvpPre!!.wallet(list)
}
override fun wallet(list: List<String>, walletBean: WalletBean?) {
if (dialogMentorShip == null) {
dialogMentorShip = DialogMentorShip(ActivityUtils.getTopActivity())
@@ -419,6 +421,10 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
dialogMentorShip?.show(list, mSignPitBean, walletBean,
object : DialogMentorShip.OnItemClickListener {
override fun onItemClick(coin: String) {
// 触发轻微震动
view?.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY)
MvpPre!!.signCoin(mSignId!!, coin)
}
})

View File

@@ -164,7 +164,7 @@ public class NobleDetailsActivity extends BaseMvpActivity<NobleTitlePresenter, A
mBinding.tvNobleMob.setText(nobilitLists.getPay_price()+" / "+nobilitLists.getDay()+"");
gridView.setAdapter(mGiftWallAdapter);
lid=nobilitLists.getLid()+"";
// 观察数据变化并更新 GridView
mGiftWallAdapter.updateData(nobilitLists.getPower().getList());
if (position>=index){
@@ -182,7 +182,7 @@ public class NobleDetailsActivity extends BaseMvpActivity<NobleTitlePresenter, A
mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_h_kt);
mBinding.imLjkt.setClickable( false);
}
// lid=nobilitLists.getLid()+"";
xlid=nobilitLists.getLid()+"";
}
private void applyGradientToTextView(TextView textView) {

View File

@@ -24,12 +24,16 @@ import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.blankj.utilcode.util.ActivityUtils;
import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.SingerVerificationContract;
import com.xscm.modulemain.activity.user.presenter.SingerVerificationPresenter;
import com.xscm.modulemain.databinding.ActivitySingerVerificationBinding;
import com.xscm.modulemain.dialog.DialogWebView;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.SongPlaylist;
import com.xscm.moduleutil.widget.CustomTopBar;
import java.io.File;
import java.io.FileInputStream;
@@ -180,6 +184,16 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
protected void initData() {
mBinding.topBar.setTitle("歌手认证");
mBinding.topBar.setColor(getResources().getColor(R.color.white));
mBinding.topBar.setRightIcon(R.mipmap.icon_heart_help);
mBinding.topBar.setImgPaddingRight(35);
mBinding.topBar.setRightImgVIsible(true);
mBinding.topBar.addIntentListener(new CustomTopBar.OnCallBackRightIcon() {
@Override
public void onIntent() {
DialogWebView dialogWebView=new DialogWebView(ActivityUtils.getTopActivity());
dialogWebView.show(CommonAppContext.getInstance().currentEnvironment.getServerUrl()+"api/Page/page_show?id=33");
}
});
isSinger= getIntent().getIntExtra("isSinger",-1);
if (isSinger==-1){
mBinding.clCorner.setVisibility(VISIBLE);
@@ -330,6 +344,8 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
if (recordingSegments.size() > 1) {
// 如果有多个录音片段,合并它们
mergeAudioFiles();
// 更新录音时长为所有片段的总时长
updateRecordingDuration();
} else if (recordingSegments.size() == 1) {
// 只有一个录音片段,直接使用
recordingFile = recordingSegments.get(0);
@@ -373,9 +389,11 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
return;
}
// 检查录音时长是否达到最小要求60秒
if (recordingDuration < 60 * 1000) {
Toast.makeText(this, "录音时间太短请至少录制60秒", Toast.LENGTH_SHORT).show();
// 移除试听时间限制,允许试听任何长度的录音
if (recordingDuration <= 0) {
Toast.makeText(this, "没有可试听的内容", Toast.LENGTH_SHORT).show();
mBinding.playButton.setText("试听");
mBinding.playButton.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.but_st, 0, 0);
return;
}
@@ -523,7 +541,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
// 检查录音时长是否达到最小要求60秒
if (recordingDuration < 60 * 1000) {
Toast.makeText(this, "录音时间太短请至少录制60秒", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "录音时间不足60秒无法提交认证", Toast.LENGTH_SHORT).show();
return;
}
@@ -819,6 +837,31 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
}, 2000); // 延迟2秒删除确保合并文件已经完全写入
}
/**
* 更新录音时长为所有片段的总时长
* 当合并多个录音片段后,需要更新总的录音时长
*/
private void updateRecordingDuration() {
if (recordingFile == null || !recordingFile.exists()) {
Log.e("SingerVerification", "录音文件不存在,无法更新时长");
return;
}
try {
// 使用MediaPlayer获取文件时长
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(recordingFile.getAbsolutePath());
mp.prepare();
recordingDuration = mp.getDuration();
mp.release();
Log.d("SingerVerification", "更新录音时长为: " + recordingDuration + "ms");
updateUI();
} catch (Exception e) {
Log.e("SingerVerification", "获取录音时长失败: " + e.getMessage());
}
}
// 这些WAV处理方法已不再需要因为我们现在使用MediaMuxer处理M4A文件

View File

@@ -176,7 +176,7 @@ class UserFamilyActivity : BaseMvpActivity<UserFamilyPresenter, ActivityUserFami
if (type == 2) {
ToastUtils.showLong("您还没有加入任何家族")
// 切换回"我的家族"tab
mBinding.tabLayout.selectTab(mBinding.tabLayout.getTabAt(0))
// mBinding.tabLayout.selectTab(mBinding.tabLayout.getTabAt(0))
} else {
ToastUtils.showLong("没有数据")
}

View File

@@ -15,6 +15,8 @@ import com.xscm.modulemain.activity.user.conacts.SingerVerificationContract;
import com.xscm.modulemain.activity.user.presenter.SingerVerificationPresenter;
import com.xscm.modulemain.databinding.ActivityUserPlaylistBinding;
import com.xscm.modulemain.dialog.CustomInputDialog;
import com.xscm.modulemain.dialog.DialogWebView;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.SongPlaylist;
import com.xscm.moduleutil.utils.SpUtil;
@@ -80,8 +82,11 @@ public class UserPlaylistActivity extends BaseMvpActivity<SingerVerificationPres
}
});
customInputDialog.show();
});
mBinding.imHelp.setOnClickListener(v -> {
new DialogWebView(this).show(CommonAppContext.getInstance().currentEnvironment.getServerUrl()
+ "api/Page/page_show?id=34");
});
// 设置删除点击事件

View File

@@ -36,7 +36,10 @@ class JoinedFamilyFragment(var data: MyFamilyBean) : BaseFragment<FragmentJoined
}
override fun initData() {
myFamily1(data)
// 确保data不为null再调用myFamily1
if (data != null) {
myFamily1(data)
}
}
override fun initView() {
@@ -81,43 +84,77 @@ class JoinedFamilyFragment(var data: MyFamilyBean) : BaseFragment<FragmentJoined
*/
fun setMyFamilyBean(myBean: MyFamilyBean) {
this.myFamilyBean = myBean
myFamily1(myBean)
}
fun myFamily1(data: MyFamilyBean) {
if (data == null) return
myFamilyBean= data
userId = data.user_id
dataList.clear()
dataList.addAll(data.group_members_lists)
mBinding.headView.setData(data.group_owner_info?.avatar,data.group_owner_info?.dress,data.group_owner_info?.nobility_image)
mBinding.tvUserName.text = data.group_owner_info?.nickname
if (data.group_owner_info?.nickname_color?.isNotEmpty()==true){
mBinding.tvUserName.startColor = Color.parseColor(data.group_owner_info?.nickname_color)
mBinding.tvUserName.shineColor = Color.parseColor(data.group_owner_info?.nickname_color)
mBinding.tvUserName.endColor = Color.parseColor(data.group_owner_info?.nickname_color)
mBinding.tvUserName.isShine = true
mBinding.tvUserName.shineType = 0
// 安全地处理group_owner_info可能为null的情况
val groupOwnerInfo = data.group_owner_info
if (groupOwnerInfo == null || groupOwnerInfo.nickname.isNullOrEmpty()) {
mBinding.clZu.visibility = View.GONE
mBinding.tvMeJz.visibility= View.GONE
} else {
mBinding.clZu.visibility = View.VISIBLE
mBinding.tvMeJz.visibility= View.VISIBLE
}
mBinding.tvUserId.setText("ID: ${data.group_owner_info?.user_code}")
mBinding.tvZsyNum.text = data.group_earnings
mBinding.tvSignNum.setText("群组人数:${data.group_members_num}")
// 安全地设置headView数据
if (groupOwnerInfo != null) {
mBinding.headView.setData(
groupOwnerInfo.avatar,
groupOwnerInfo.dress,
groupOwnerInfo.nobility_image
)
}
// 安全地设置用户名
mBinding.tvUserName.text = groupOwnerInfo?.nickname ?: ""
adapter = MyFamilyAdapter(activity!!,userId, R.layout.item_family_members, dataList)
mBinding.recyclerView.adapter = adapter
val commonEmptyView = CommonEmptyView(activity!!)
commonEmptyView.setImg(R.mipmap.ic_empty)
commonEmptyView.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.color_FFBDBDBC))
adapter?.bindToRecyclerView(mBinding.recyclerView)
adapter?.setEmptyView(commonEmptyView)
adapter?.setOnItemChildClickListener { adapter, view, position ->
if (view.id == R.id.iv_head) {
val item = dataList[position]
val intent = Intent(activity, UserHomepageActivity::class.java)
intent.putExtra("userId", item.user_id.toString() + "")
startActivity(intent)
// 安全地设置用户名颜色
if (groupOwnerInfo != null && !groupOwnerInfo.nickname_color.isNullOrEmpty()) {
try {
mBinding.tvUserName.startColor = Color.parseColor(groupOwnerInfo.nickname_color)
mBinding.tvUserName.shineColor = Color.parseColor(groupOwnerInfo.nickname_color)
mBinding.tvUserName.endColor = Color.parseColor(groupOwnerInfo.nickname_color)
mBinding.tvUserName.isShine = true
mBinding.tvUserName.shineType = 0
} catch (e: IllegalArgumentException) {
// 如果颜色解析失败,使用默认颜色
e.printStackTrace()
mBinding.tvUserName.setTextColor(Color.parseColor("#212121"))
mBinding.tvUserName.isShine = false
}
}
// 安全地设置用户ID
mBinding.tvUserId.setText("ID: ${groupOwnerInfo?.user_code ?: ""}")
mBinding.tvZsyNum.text = data.group_earnings ?: "0"
// 安全地设置群组人数
mBinding.tvSignNum.setText("群组人数:${data.group_members_num ?: 0}")
// 确保activity不为null
if (activity != null) {
adapter = MyFamilyAdapter(activity!!, userId, R.layout.item_family_members, dataList)
mBinding.recyclerView.adapter = adapter
val commonEmptyView = CommonEmptyView(activity!!)
commonEmptyView.setImg(R.mipmap.ic_empty)
commonEmptyView.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.color_FFBDBDBC))
adapter?.bindToRecyclerView(mBinding.recyclerView)
adapter?.setEmptyView(commonEmptyView)
adapter?.setOnItemChildClickListener { adapter, view, position ->
if (view.id == R.id.iv_head) {
val item = dataList[position]
val intent = Intent(activity, UserHomepageActivity::class.java)
intent.putExtra("userId", item.user_id.toString() + "")
startActivity(intent)
}
}
}
}