1:修改BUG
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3337,6 +3337,18 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -30,15 +30,14 @@ public class RequestedSongsAdapter extends BaseQuickAdapter<SongPlaylist.SongPla
|
||||
|
||||
private OnItemClickListener onItemClickListener;
|
||||
|
||||
public RequestedSongsAdapter() {
|
||||
|
||||
public RequestedSongsAdapter(String zcUserId) {
|
||||
super(R.layout.item_requested_song);
|
||||
this.zcUserId=zcUserId;
|
||||
}
|
||||
|
||||
private String zcUserId="";
|
||||
|
||||
public void setZcUserId(String zcUserId) {
|
||||
this.zcUserId=zcUserId;
|
||||
}
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onPlayClick(SongPlaylist.SongPlaylistBean song, int position);
|
||||
@@ -68,19 +67,31 @@ public class RequestedSongsAdapter extends BaseQuickAdapter<SongPlaylist.SongPla
|
||||
helper.setText(R.id.tv_request_status, "置顶");
|
||||
helper.setTextColor(R.id.tv_request_status, 0xFFFFFFFF);
|
||||
helper.setBackgroundRes(R.id.tv_request_status, com.xscm.moduleutil.R.drawable.bg_r34_3abc6d);
|
||||
|
||||
try {
|
||||
if (zcUserId.equals(SpUtil.getUserId()+"")){
|
||||
helper.getView(R.id.tv_request_status).setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
helper.getView(R.id.tv_request_status).setVisibility(View.GONE);
|
||||
}
|
||||
}catch (Exception e){
|
||||
helper.getView(R.id.tv_request_status).setVisibility(View.GONE);
|
||||
LogUtils.e("RequestedSongsAdapter",e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if (((RoomActivity)ActivityUtils.getTopActivity()).getMRoomInfoResp().getRoom_info().getPit_list().get(8).getUser_id()
|
||||
.equals(SpUtil.getUserId()+"")){
|
||||
helper.getView(R.id.tv_request_status).setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
helper.getView(R.id.tv_request_status).setVisibility(View.GONE);
|
||||
}
|
||||
}catch (Exception e){
|
||||
helper.getView(R.id.tv_request_status).setVisibility(View.GONE);
|
||||
LogUtils.e("RequestedSongsAdapter",e.getMessage());
|
||||
}
|
||||
|
||||
// try {
|
||||
// if (((RoomActivity)ActivityUtils.getTopActivity()).getMRoomInfoResp().getRoom_info().getPit_list().get(8).getUser_id()
|
||||
// .equals(SpUtil.getUserId()+"")){
|
||||
// helper.getView(R.id.tv_request_status).setVisibility(View.VISIBLE);
|
||||
// }else {
|
||||
// helper.getView(R.id.tv_request_status).setVisibility(View.GONE);
|
||||
// }
|
||||
// }catch (Exception e){
|
||||
// helper.getView(R.id.tv_request_status).setVisibility(View.GONE);
|
||||
// LogUtils.e("RequestedSongsAdapter",e.getMessage());
|
||||
// }
|
||||
|
||||
|
||||
// 设置tvRequestStatus的点击事件,只有置顶状态才能点击
|
||||
|
||||
@@ -30,6 +30,7 @@ public class RequestSongFragment extends BaseMvpDialogFragment<RequestSongPresen
|
||||
private int historySongsCount = 0; // 历史记录数量
|
||||
private String roomId;
|
||||
|
||||
private String zcUserId;
|
||||
|
||||
public RequestSongFragment() {
|
||||
// Required empty public constructor
|
||||
@@ -40,9 +41,11 @@ public class RequestSongFragment extends BaseMvpDialogFragment<RequestSongPresen
|
||||
* @return
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static RequestSongFragment show(FragmentManager fragmentManager) {
|
||||
public static RequestSongFragment show(String zcUserId,FragmentManager fragmentManager) {
|
||||
RequestSongFragment fragment = new RequestSongFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("zcUserId", zcUserId);
|
||||
fragment.setArguments(args);
|
||||
fragment.show(fragmentManager, "RequestSongFragment");
|
||||
return fragment;
|
||||
}
|
||||
@@ -64,8 +67,9 @@ public class RequestSongFragment extends BaseMvpDialogFragment<RequestSongPresen
|
||||
}
|
||||
|
||||
private void initViewPager() {
|
||||
zcUserId= getArguments().getString("zcUserId");
|
||||
// 创建适配器
|
||||
pagerAdapter = new RequestSongPagerAdapter(getActivity());
|
||||
pagerAdapter = new RequestSongPagerAdapter(zcUserId,getActivity());
|
||||
|
||||
// 设置适配器
|
||||
mBinding.viewPager.setAdapter(pagerAdapter);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.xscm.modulemain.activity.room.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -19,6 +20,7 @@ import com.xscm.modulemain.activity.room.adapter.RequestedSongsAdapter;
|
||||
import com.xscm.modulemain.activity.room.contacts.RequestSongContacts;
|
||||
import com.xscm.modulemain.activity.room.presenter.RequestSongPresenter;
|
||||
import com.xscm.modulemain.databinding.FragmentRequestedSongsBinding;
|
||||
import com.xscm.moduleutil.adapter.GiftTwoDetailsFragment;
|
||||
import com.xscm.moduleutil.base.BaseMvpFragment;
|
||||
import com.xscm.moduleutil.bean.SingerSongCount;
|
||||
import com.xscm.moduleutil.bean.SongPlaylist;
|
||||
@@ -37,6 +39,26 @@ public class RequestedSongsFragment extends BaseMvpFragment<RequestSongPresenter
|
||||
private int page = 1;
|
||||
private RequestedSongsAdapter adapter;
|
||||
private List<SongPlaylist.SongPlaylistBean> 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<RequestSongPresenter
|
||||
|
||||
private void initRecyclerView() {
|
||||
// 初始化RecyclerView
|
||||
adapter = new RequestedSongsAdapter();
|
||||
adapter = new RequestedSongsAdapter(zcUserId);
|
||||
mBinding.rvMyRequestedSongs.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mBinding.rvMyRequestedSongs.setAdapter(adapter);
|
||||
|
||||
|
||||
@@ -166,8 +166,11 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
if (ClickUtils.isFastDoubleClick(v)) {
|
||||
return;
|
||||
}
|
||||
LogUtils.e("cc",mBinding.wvZc.getUserId());
|
||||
RoomPitBean roomPitBean1=mBinding.wvZc.pitBean;
|
||||
LogUtils.e("roomPitBean1",roomPitBean1);
|
||||
// 保存RequestSongFragment的引用,以便后续调用其方法
|
||||
requestSongFragment = RequestSongFragment.show(getChildFragmentManager());
|
||||
requestSongFragment = RequestSongFragment.show(roomPitBean1.getUser_id(),getChildFragmentManager());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -211,6 +214,20 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.ciGsAva.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (ClickUtils.isFastDoubleClick(v)) {
|
||||
return;
|
||||
}
|
||||
if (roomInfoResp.getSinger_info()!=null && roomInfoResp.getSinger_info().getNext_song_info()!=null) {
|
||||
if (roomInfoResp.getSinger_info().getNext_song_info().getSinger_user_id() != 0)
|
||||
RoomUserInfoFragment.show(roomId, roomInfoResp.getSinger_info().getNext_song_info().getSinger_user_id() + "", "0", getHostUser(), false, 1, isNumberWhether(), getChildFragmentManager());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -633,9 +650,13 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
if (toPit.equals("9")) {
|
||||
RoomPitBean fromBean = adapter.getData().get(fromIndex);
|
||||
fromBean.setPit_number(toPit);
|
||||
mBinding.wvZc.setRoomWheatNumber("9");
|
||||
mBinding.wvZc.setData(fromBean);
|
||||
roomInfoResp.getRoom_info().getPit_list().set(8, fromBean);
|
||||
fromBean.clone();
|
||||
//这里需要是重新的指向地址,不然会出现,虽然页面展示的是,但是在点击的时候,找不到对应的数据
|
||||
RoomPitBean pitBean = fromBean.clone();
|
||||
|
||||
mBinding.wvZc.setData(pitBean);
|
||||
roomInfoResp.getRoom_info().getPit_list().set(8, pitBean);
|
||||
|
||||
|
||||
if (fromBean.getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
myPitNumber = 9;
|
||||
@@ -650,7 +671,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
temp.setCharm("");
|
||||
temp.setDress("");
|
||||
temp.setImageType(false);
|
||||
|
||||
temp.setPit_number(fromPit);
|
||||
roomInfoResp.getRoom_info().getPit_list().set(fromIndex, temp);
|
||||
roomPitBeans.set(fromIndex, temp);
|
||||
adapter.notifyItemChanged(fromIndex);
|
||||
@@ -666,6 +687,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
adapter.notifyItemChanged(fromIndex);
|
||||
adapter.notifyItemChanged(toIndex);
|
||||
}
|
||||
LogUtils.e("huanmai2",mBinding.wvZc.pitBean);
|
||||
setMike();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.blankj.utilcode.util.ActivityUtils;
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.xscm.modulemain.BaseMvpActivity;
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.activity.user.conacts.SingerVerificationContract;
|
||||
@@ -345,7 +346,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
recordingFile = segmentFile;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.e("SingerVerification", "录音失败: " + e.getMessage());
|
||||
LogUtils.e("SingerVerification", "录音失败: " + e.getMessage());
|
||||
// 从列表中移除失败的文件
|
||||
recordingSegments.remove(segmentFile);
|
||||
throw e;
|
||||
@@ -394,7 +395,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
}, 1000, 1000);
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.e("SingerVerification", "录音失败: " + e.getMessage());
|
||||
LogUtils.e("SingerVerification", "录音失败: " + e.getMessage());
|
||||
Toast.makeText(this, "录音失败: 请重试", Toast.LENGTH_SHORT).show();
|
||||
// 重置录音状态,允许重新录制
|
||||
isRecording = false;
|
||||
@@ -447,7 +448,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
updateUI();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "停止录音失败: " + e.getMessage());
|
||||
LogUtils.e("SingerVerification", "停止录音失败: " + e.getMessage());
|
||||
// Toast.makeText(this, "停止录音失败: ", Toast.LENGTH_SHORT).show();
|
||||
|
||||
// 发生异常时重置状态,允许重新录制
|
||||
@@ -526,7 +527,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
|
||||
@Override
|
||||
public boolean onError(MediaPlayer mp, int what, int extra) {
|
||||
Log.e("SingerVerification", "MediaPlayer错误: what=" + what + ", extra=" + extra);
|
||||
LogUtils.e("SingerVerification", "MediaPlayer错误: what=" + what + ", extra=" + extra);
|
||||
isPlaying = false;
|
||||
updateUI();
|
||||
return true; // 错误已处理
|
||||
@@ -538,7 +539,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
mediaPlayer.start();
|
||||
updateUI();
|
||||
} catch (IOException e) {
|
||||
Log.e("SingerVerification", "播放失败: " + e.getMessage());
|
||||
LogUtils.e("SingerVerification", "播放失败: " + e.getMessage());
|
||||
Toast.makeText(this, "播放失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
isPlaying = false;
|
||||
updateUI();
|
||||
@@ -558,7 +559,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
mediaPlayer = null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "停止播放失败: " + e.getMessage());
|
||||
LogUtils.e("SingerVerification", "停止播放失败: " + e.getMessage());
|
||||
} finally {
|
||||
// 无论是否出错,都重置状态
|
||||
isPlaying = false;
|
||||
@@ -617,16 +618,16 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
if (recordingSegments.size() > 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<SingerVerificati
|
||||
return;
|
||||
}
|
||||
|
||||
Log.d("SingerVerification", "提交认证,使用文件: " + recordingFile.getAbsolutePath() +
|
||||
LogUtils.d("SingerVerification", "提交认证,使用文件: " + recordingFile.getAbsolutePath() +
|
||||
", 大小: " + recordingFile.length() + " bytes");
|
||||
MvpPre.uploadFile(recordingFile, 3);
|
||||
}
|
||||
@@ -720,7 +721,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
int segmentCount = 0;
|
||||
|
||||
for (File segment : processedSegments) {
|
||||
Log.d("SingerVerification", "开始处理第 " + (segmentCount + 1) + " 个片段: " + segment.getAbsolutePath());
|
||||
LogUtils.d("SingerVerification", "开始处理第 " + (segmentCount + 1) + " 个片段: " + segment.getAbsolutePath());
|
||||
|
||||
long segmentDuration = processAudioSegment(muxer, segment, audioTrackIndex,
|
||||
buffer, bufferInfo, currentPresentationTimeUs);
|
||||
@@ -728,15 +729,15 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
if (segmentDuration > 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<SingerVerificati
|
||||
extractor.setDataSource(segment.getAbsolutePath());
|
||||
int audioTrackIndex = findAudioTrack(extractor);
|
||||
if (audioTrackIndex < 0) {
|
||||
Log.w("SingerVerification", "未找到音频轨道: " + segment.getAbsolutePath());
|
||||
LogUtils.w("SingerVerification", "未找到音频轨道: " + segment.getAbsolutePath());
|
||||
return 0;
|
||||
}
|
||||
|
||||
extractor.selectTrack(audioTrackIndex);
|
||||
MediaFormat format = extractor.getTrackFormat(audioTrackIndex);
|
||||
long estimatedDuration = format.getLong(MediaFormat.KEY_DURATION);
|
||||
Log.d("SingerVerification", "处理片段: " + segment.getAbsolutePath() +
|
||||
LogUtils.d("SingerVerification", "处理片段: " + segment.getAbsolutePath() +
|
||||
", 估计时长: " + estimatedDuration + "us, 基准时间: " + baseTimeUs + "us");
|
||||
|
||||
int sampleCount = 0;
|
||||
@@ -852,7 +853,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
actualDuration = estimatedDuration;
|
||||
}
|
||||
|
||||
Log.d("SingerVerification", "片段处理完成,实际时长: " + actualDuration + "us, 样本数: " + sampleCount);
|
||||
LogUtils.d("SingerVerification", "片段处理完成,实际时长: " + actualDuration + "us, 样本数: " + sampleCount);
|
||||
return actualDuration;
|
||||
|
||||
} finally {
|
||||
@@ -875,10 +876,10 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
// 确保合并文件存在且不为空
|
||||
if (mergedRecordingFile != null && mergedRecordingFile.exists() && mergedRecordingFile.length() > 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<SingerVerificati
|
||||
|
||||
// 修复:不立即清空录音片段列表,延迟清空以确保合并文件可以被正确使用
|
||||
// 将在延迟删除片段时清空列表
|
||||
Log.d("SingerVerification", "保留录音片段列表,将在延迟删除时清空");
|
||||
LogUtils.d("SingerVerification", "保留录音片段列表,将在延迟删除时清空");
|
||||
}
|
||||
|
||||
private void handleMergeError(Exception e) {
|
||||
Log.e("SingerVerification", "处理音频文件失败: " + e.getMessage(), e);
|
||||
Toast.makeText(this, "处理音频文件失败,使用第一段录音", Toast.LENGTH_SHORT).show();
|
||||
LogUtils.e("SingerVerification", "处理音频文件失败: " + e.getMessage(), e);
|
||||
// Toast.makeText(this, "处理音频文件失败,使用第一段录音", Toast.LENGTH_SHORT).show();
|
||||
if (!recordingSegments.isEmpty()) {
|
||||
recordingFile = recordingSegments.get(0);
|
||||
}
|
||||
@@ -904,7 +905,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
muxer.release();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "释放MediaMuxer失败", e);
|
||||
LogUtils.e("SingerVerification", "释放MediaMuxer失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -916,19 +917,19 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
if (segment.exists()) {
|
||||
boolean deleted = segment.delete();
|
||||
if (!deleted) {
|
||||
Log.w("SingerVerification", "删除音频片段失败: " + segment.getAbsolutePath());
|
||||
LogUtils.w("SingerVerification", "删除音频片段失败: " + segment.getAbsolutePath());
|
||||
} else {
|
||||
Log.d("SingerVerification", "成功删除音频片段: " + segment.getAbsolutePath());
|
||||
LogUtils.d("SingerVerification", "成功删除音频片段: " + segment.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "删除音频片段失败: " + segment.getAbsolutePath(), e);
|
||||
LogUtils.e("SingerVerification", "删除音频片段失败: " + segment.getAbsolutePath(), e);
|
||||
}
|
||||
}
|
||||
|
||||
// 修复:删除所有片段后,清空录音片段列表
|
||||
recordingSegments.clear();
|
||||
Log.d("SingerVerification", "已清空录音片段列表");
|
||||
LogUtils.d("SingerVerification", "已清空录音片段列表");
|
||||
}, 2000); // 延迟2秒删除,确保合并文件已经完全写入
|
||||
}
|
||||
|
||||
@@ -938,7 +939,7 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
*/
|
||||
private void updateRecordingDuration() {
|
||||
if (recordingFile == null || !recordingFile.exists()) {
|
||||
Log.e("SingerVerification", "录音文件不存在,无法更新时长");
|
||||
LogUtils.e("SingerVerification", "录音文件不存在,无法更新时长");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -950,10 +951,10 @@ public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificati
|
||||
recordingDuration = mp.getDuration();
|
||||
mp.release();
|
||||
|
||||
Log.d("SingerVerification", "更新录音时长为: " + recordingDuration + "ms");
|
||||
LogUtils.d("SingerVerification", "更新录音时长为: " + recordingDuration + "ms");
|
||||
updateUI();
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "获取录音时长失败: " + e.getMessage());
|
||||
LogUtils.e("SingerVerification", "获取录音时长失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ public class MyRoomListFragment extends BaseMvpFragment<MyRoomPresenter, RoomFra
|
||||
}
|
||||
|
||||
helper.setText(R.id.tv_name, item.getRoom_name());
|
||||
helper.setText(R.id.tv_sy, item.getToday_income() != null ? item.getToday_income() + "" : "0");
|
||||
helper.setText(R.id.tv_sy, item.getToday_profit() != null ? item.getToday_profit() + "" : "0");
|
||||
helper.setText(R.id.tv_user_id, "ID: " + item.getRoom_number());
|
||||
if (type == MyRoomListFragment.TYPE_CREATE) {
|
||||
helper.setText(R.id.tv_bl, "今日收益");
|
||||
|
||||
@@ -322,7 +322,14 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
this.userInfo = data;
|
||||
mBinding.rivUserHead.setData(data.getAvatar(), data.getDress(), data.getNobility_image());
|
||||
mBinding.tvNickName.setText(data.getNickname());
|
||||
mBinding.tvNickName.setTextColor((data.getNickname_color() != null && !data.getNickname_color().equals("")) ? Color.parseColor(data.getNickname_color()) : Color.parseColor("#ffffff"));
|
||||
if (!userInfo.getNickname_color().isEmpty()) {
|
||||
mBinding.tvNickName.setStartColor(Color.parseColor(data.getNickname_color()));
|
||||
mBinding.tvNickName.setShineColor(Color.parseColor(data.getNickname_color()));
|
||||
mBinding.tvNickName.setEndColor(Color.parseColor(data.getNickname_color()));
|
||||
mBinding.tvNickName.setShine(true);
|
||||
mBinding.tvNickName.setShineType(0);
|
||||
}
|
||||
// mBinding.tvNickName.setTextColor((data.getNickname_color() != null && !data.getNickname_color().equals("")) ? Color.parseColor(data.getNickname_color()) : Color.parseColor("#ffffff"));
|
||||
String sex = data.getSex() == 1 ? "男" : "女";
|
||||
mBinding.beautifulView.setText(sex + " | ID:" + data.getUser_code());
|
||||
mBinding.tvFollow.setText(data.getFollow_num() + "");
|
||||
|
||||
@@ -210,8 +210,8 @@ class BosomFriendAdapter(data: MutableList<MultiItemEntity>) : 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<View>(R.id.user_nav1).setOnClickListener {
|
||||
if (relation1.user_id1== SpUtil.getUserId()){
|
||||
@@ -286,9 +286,9 @@ class BosomFriendAdapter(data: MutableList<MultiItemEntity>) : 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<View>(R.id.user_nav1).setOnClickListener {
|
||||
if (relation1.user_id1== SpUtil.getUserId()){
|
||||
|
||||
@@ -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<ExpandColumnBean, BaseViewHolder> {
|
||||
public ExpandColumnAdapter() {
|
||||
@@ -52,7 +54,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter<ExpandColumnBean, Base
|
||||
ImageView iv_sex=helper.getView(R.id.iv_user_sex);
|
||||
//先让单图,多图,音频的布局显示
|
||||
helper.getView(R.id.dy_image_recyc).setVisibility(View.VISIBLE);
|
||||
helper.setText(R.id.tv_agree,(item.getAgree()!=null?item.getAgree():"0")+"岁");
|
||||
helper.setText(R.id.tv_agree,TimeUtils.getAgeByBirthDay(item.getBirthday())+"岁");
|
||||
//昵称
|
||||
helper.setText(com.xscm.moduleutil.R.id.dy_name_text, item.getNickname());
|
||||
ShineTextView tvName = helper.getView(com.xscm.moduleutil.R.id.dy_name_text);
|
||||
|
||||
@@ -45,7 +45,7 @@ public class RelationshipAdapter extends BaseQuickAdapter<RelationshipBean, com.
|
||||
}
|
||||
|
||||
|
||||
helper.setText(R.id.tv_cp_num, TimeUtils.formatDuration2(Long.parseLong(item.getEnd_time())));
|
||||
helper.setText(R.id.tv_cp_num, TimeUtils.formatDuration2(Long.parseLong(item.getEnd_time()) * 1000 - System.currentTimeMillis()));
|
||||
if (item.getUser_id1()== SpUtil.getUserId() || item.getUser_id2() == SpUtil.getUserId()){
|
||||
helper.getView(R.id.icon_cp_zd).setVisibility(View.VISIBLE);
|
||||
helper.getView(R.id.icon_cp_dele).setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -151,6 +151,9 @@ public class RedBagSendDialog extends BaseDialog<DialogRedBagSendBinding> {
|
||||
}
|
||||
}
|
||||
});
|
||||
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<DialogRedBagSendBinding> {
|
||||
}
|
||||
}
|
||||
});
|
||||
mBinding.rgDjs.check(R.id.rb_lk);
|
||||
redTime = 0;
|
||||
|
||||
mBinding.rgDjs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
|
||||
@Override
|
||||
|
||||
@@ -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);
|
||||
//加入房间
|
||||
|
||||
@@ -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" />
|
||||
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/im_gg"
|
||||
|
||||
Reference in New Issue
Block a user