1:修改注冊的时候,年龄必选,并且更改默认年龄是18年前

2:修改创建房间,本地进行判断改为服务端进行判断
3:修改歌手认证bug
4:修改和用户相关的出现为空的错误
5:修改挚友在用户主页的位置,不丝滑的滑动问题
6:修改搜索页面展示全部房间,用户展示性别
This commit is contained in:
2025-12-11 21:04:25 +08:00
parent ecdd2fc063
commit ed0eccd0ee
24 changed files with 365 additions and 327 deletions

View File

@@ -17,6 +17,7 @@ import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.hjq.toast.ToastUtils;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.engine.CropFileEngine;
@@ -139,6 +140,11 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
// ToastUtils.showShort("请选择性别");
return;
}
if(birthdy==null||TextUtils.isEmpty(birthdy)){
ToastUtils.show("请选择生日");
return;
}
if (!inviteCode.isEmpty() || inviteCode != null) {
// map.put("user_no", inviteCode);
init_code = inviteCode;

View File

@@ -226,11 +226,11 @@ public class SearchActivity extends BaseMvpActivity<SearchPresenter, ActivitySea
} else {
mBinding.recycleViewRoom.setVisibility(View.VISIBLE);
mBinding.rlRoom.setVisibility(View.VISIBLE);
if (data.getRooms().size() > 2) {
mSearchRoomResultAdapter.setNewData(data.getRooms().subList(0, 2));
} else {
// if (data.getRooms().size() > 2) {
// mSearchRoomResultAdapter.setNewData(data.getRooms().subList(0, 2));
// } else {
mSearchRoomResultAdapter.setNewData(data.getRooms());
}
// }
mBinding.tvRoomCount.setText("全部 " + data.getRooms().size());
}
if (data.getUsers() != null && data.getUsers().size() != 0) {

View File

@@ -72,6 +72,7 @@ public class HotListFragment extends BaseMvpFragment<HotListPresenter, FragmentH
@Override
public void onResume() {
super.onResume();
page=1;
MvpPre.getRoomList(2, "1", "20", "1", label_id);
}

View File

@@ -271,7 +271,9 @@ public class MyRoomActivity extends BaseMvpActivity<MyRoomPresenter, RoomActivit
return;
}
MvpPre.check_create_room();
// MvpPre.check_create_room();
startActivity(new Intent(MyRoomActivity.this, CreatedRoomActivity.class));
finish();
}
});
}

View File

@@ -124,41 +124,6 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
mBinding.progressArc.setProgress(0);
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;
@@ -243,10 +208,10 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
mBinding.playButton.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.but_st, 0, 0);
} else {
// 检查录音文件是否存在
if (recordingFile == null || !recordingFile.exists()) {
Toast.makeText(SingerVerificationActivity.this, "没有录制的文件", Toast.LENGTH_SHORT).show();
return;
}
// if (recordingFile == null || !recordingFile.exists()) {
// Toast.makeText(SingerVerificationActivity.this, "没有录制的文件", Toast.LENGTH_SHORT).show();
// return;
// }
// 检查录音时长
if (recordingDuration <= 0) {
@@ -353,10 +318,9 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
mediaRecorder.prepare();
mediaRecorder.start();
// 如果是第一次录音,初始化录音文件
if (!isAppendRecording) {
recordingFile = segmentFile;
}
// 修复不再根据是否追加录音来设置recordingFile
// recordingFile将在停止录音时通过mergeAudioFiles()方法设置
// 这样可以确保每次录音都能正确合并
} catch (IOException e) {
LogUtils.e("SingerVerification", "录音失败: " + e.getMessage());
// 从列表中移除失败的文件
@@ -442,16 +406,28 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
timer.cancel();
timer = null;
}
// 计算当前录音片段的时长
long currentSegmentDuration = System.currentTimeMillis() - recordingStartTime;
// 检查当前录音片段是否太短小于1秒
if (currentSegmentDuration < 1000 && recordingSegments.size() > 1) {
// 如果当前录音片段太短且不是第一个片段,则移除它
File lastSegment = recordingSegments.get(recordingSegments.size() - 1);
if (lastSegment.exists()) {
lastSegment.delete();
}
recordingSegments.remove(recordingSegments.size() - 1);
LogUtils.d("SingerVerification", "移除过短的录音片段: " + lastSegment.getAbsolutePath());
}
// 处理录音片段
if (recordingSegments.size() > 1) {
// 如果有多个录音片段,合并它们
// 修复:每次停止录音时都合并所有片段,确保录音连续性
if (recordingSegments.size() >= 1) {
// 始终合并所有录音片段,确保连续性
mergeAudioFiles();
// 更新录音时长为所有片段的总时长
updateRecordingDuration();
} else if (recordingSegments.size() == 1) {
// 只有一个录音片段,直接使用
recordingFile = recordingSegments.get(0);
}
// 更新状态
@@ -749,11 +725,9 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
handleMergeError(e);
} finally {
cleanupResources(muxer, buffer);
// 修复:延迟删除原始音频片段,确保合并文件已经完全写入且被使用
// 延迟删除,给用户足够时间试听
new Handler().postDelayed(() -> {
cleanupSegments(processedSegments);
}, 30000); // 延迟30秒删除确保用户有足够时间试听
// 修复:不删除录音片段,以便后续继续追加录音
// 只在用户点击"重新录音"时才删除所有片段
// cleanupSegments(processedSegments);
}
}

View File

@@ -127,7 +127,7 @@ public class UnderageActivity extends BaseMvpActivity<UnderagePresenter, Activit
// 密码正确,关闭页面
// ToastUtils.showShort("密码验证成功");
ARouter.getInstance().build(ARouteConstants.ME).navigation();
// ARouter.getInstance().build(ARouteConstants.ME).navigation();
ActivityUtils.finishActivity(WebViewActivity.class);
finish();
} else {

View File

@@ -182,7 +182,7 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
if (!userInfo.getIcon().isEmpty()) {
mBinding.headerInfo.flexEntry.setVisibility(VISIBLE);
for (String url : userInfo.getIcon()) {
if (url.contains("http")) {
if (url != null && url.contains("http")) {
ImageView imageView1 = new ImageView(Application.getInstance());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,

View File

@@ -357,7 +357,7 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
if (images != null && !images.isEmpty()) {
for (String url : images) {
if (url.contains("http")) {
if (url!=null && url.contains("http")) {
ImageView imageView = new ImageView(getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_57),