点唱房功能
This commit is contained in:
@@ -44,6 +44,7 @@ public class NobleDetailsActivity extends BaseMvpActivity<NobleTitlePresenter, A
|
||||
GridNobleAdapter mGiftWallAdapter;
|
||||
|
||||
private String lid="";
|
||||
|
||||
private String xlid="";
|
||||
|
||||
@Override
|
||||
@@ -181,6 +182,8 @@ public class NobleDetailsActivity extends BaseMvpActivity<NobleTitlePresenter, A
|
||||
mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_h_kt);
|
||||
mBinding.imLjkt.setClickable( false);
|
||||
}
|
||||
|
||||
xlid=nobilitLists.getLid()+"";
|
||||
}
|
||||
private void applyGradientToTextView(TextView textView) {
|
||||
ViewTreeObserver vto = textView.getViewTreeObserver();
|
||||
|
||||
@@ -72,13 +72,13 @@ public class NobleTitleActivity extends BaseMvpActivity<NobleTitlePresenter, Act
|
||||
Intent intent = new Intent(this, NobleDetailsActivity.class);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("lid",lid);
|
||||
intent.putExtras( bundle);
|
||||
intent.putExtras(bundle);
|
||||
startActivity(intent);
|
||||
}else if (id== R.id.im_me_noble_xf) {
|
||||
Intent intent = new Intent(this, NoblePaymentActivity.class);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("lid",lid);
|
||||
intent.putExtras( bundle);
|
||||
intent.putExtras(bundle);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,471 @@
|
||||
package com.xscm.modulemain.activity.user.activity;
|
||||
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.MediaPlayer;
|
||||
import android.media.MediaRecorder;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
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.moduleutil.bean.SongPlaylist;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
/**
|
||||
* 歌手认证
|
||||
* 该Activity用于处理用户进行歌手认证的相关功能,包括录音、试听、重新录制和提交认证等操作。
|
||||
*/
|
||||
|
||||
public class SingerVerificationActivity extends BaseMvpActivity<SingerVerificationPresenter, ActivitySingerVerificationBinding> implements SingerVerificationContract.View {
|
||||
// 权限请求码
|
||||
private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
|
||||
// 录音权限
|
||||
private static final String[] PERMISSIONS = {Manifest.permission.RECORD_AUDIO};
|
||||
|
||||
// 录音和播放相关变量
|
||||
private MediaRecorder mediaRecorder; // 媒体录音对象
|
||||
private MediaPlayer mediaPlayer; // 媒体播放对象
|
||||
private File recordingFile; // 录音文件
|
||||
private final Handler handler = new Handler(Looper.getMainLooper()); // 主线程Handler
|
||||
private long recordingStartTime; // 录音开始时间
|
||||
private boolean isRecording = false; // 是否正在录音
|
||||
private boolean isPlaying = false; // 是否正在播放
|
||||
private long recordingDuration = 0L; // 录音时长
|
||||
private Timer timer; // 计时器
|
||||
|
||||
private int isSinger;//传递过来的参数,
|
||||
/**
|
||||
* 绑定Presenter
|
||||
* @return 返回该Activity对应的Presenter实例
|
||||
*/
|
||||
@Override
|
||||
protected SingerVerificationPresenter bindPresenter() {
|
||||
return new SingerVerificationPresenter(this, this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取布局ID
|
||||
* @return 返回Activity的布局资源ID
|
||||
*/
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_singer_verification;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
* 设置UI组件的初始状态和事件监听
|
||||
*/
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
|
||||
// 请求录音权限
|
||||
if (!hasPermissions()) {
|
||||
ActivityCompat.requestPermissions(this, PERMISSIONS, REQUEST_RECORD_AUDIO_PERMISSION);
|
||||
}
|
||||
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 && recordingFile == null) {
|
||||
startRecording();
|
||||
}
|
||||
return true;
|
||||
case MotionEvent.ACTION_UP:
|
||||
if (isRecording) {
|
||||
stopRecording();
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
// 设置播放按钮点击事件
|
||||
mBinding.playButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (isPlaying) {
|
||||
// 正在播放,点击停止播放
|
||||
stopPlaying();
|
||||
// 恢复按钮状态
|
||||
mBinding.playButton.setText("试听");
|
||||
mBinding.playButton.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.but_st, 0, 0);
|
||||
} else {
|
||||
// 未播放,点击开始播放
|
||||
startPlaying();
|
||||
// 更改按钮状态为"结束"
|
||||
mBinding.playButton.setText("结束");
|
||||
mBinding.playButton.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.but_tz, 0, 0);
|
||||
}
|
||||
}
|
||||
});
|
||||
//
|
||||
mBinding.reRecordButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
reRecord();
|
||||
}
|
||||
});
|
||||
//认证
|
||||
mBinding.imSubmit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
submitVerification();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mBinding.topBar.setTitle("歌手认证");
|
||||
mBinding.topBar.setColor(getResources().getColor(R.color.white));
|
||||
isSinger= getIntent().getIntExtra("isSinger",-1);
|
||||
if (isSinger==-1){
|
||||
mBinding.clCorner.setVisibility(VISIBLE);
|
||||
mBinding.cornerStatus.setText("暂未认证");
|
||||
}else if (isSinger==0){
|
||||
mBinding.clCorner.setVisibility(GONE);
|
||||
mBinding.cornerStatus.setText("认证中");
|
||||
}else if (isSinger==1){
|
||||
mBinding.clCorner.setVisibility(GONE);
|
||||
mBinding.cornerStatus.setText("已认证");
|
||||
}else if (isSinger==2){
|
||||
mBinding.clCorner.setVisibility(VISIBLE);
|
||||
mBinding.cornerStatus.setText("认证失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查应用是否拥有所有必要的权限
|
||||
* 遍历权限列表,检查每个权限是否已被授予
|
||||
*
|
||||
* @return 如果所有权限都已授予则返回true,否则返回false
|
||||
*/
|
||||
private boolean hasPermissions() {
|
||||
// 遍历权限数组中的每个权限
|
||||
for (String permission : PERMISSIONS) {
|
||||
// 检查当前权限是否已被授予
|
||||
// 如果权限未被授予(返回值不等于PERMISSION_GRANTED),则返回false
|
||||
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 如果所有权限都已检查并授予,则返回true
|
||||
return true;
|
||||
}
|
||||
|
||||
// 开始录音
|
||||
private void startRecording() {
|
||||
if (!hasPermissions()) {
|
||||
ActivityCompat.requestPermissions(this, PERMISSIONS, REQUEST_RECORD_AUDIO_PERMISSION);
|
||||
return;
|
||||
}
|
||||
|
||||
// 停止可能正在播放的音频
|
||||
stopPlaying();
|
||||
|
||||
// 创建录音文件
|
||||
try {
|
||||
recordingFile = createAudioFile();
|
||||
|
||||
mediaRecorder = new MediaRecorder();
|
||||
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
|
||||
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
|
||||
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
|
||||
mediaRecorder.setOutputFile(recordingFile.getAbsolutePath());
|
||||
mediaRecorder.prepare();
|
||||
mediaRecorder.start();
|
||||
|
||||
isRecording = true;
|
||||
recordingStartTime = System.currentTimeMillis();
|
||||
recordingDuration = 0L;
|
||||
|
||||
// 启动计时器
|
||||
timer = new Timer();
|
||||
timer.scheduleAtFixedRate(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isRecording) {
|
||||
recordingDuration = System.currentTimeMillis() - recordingStartTime;
|
||||
|
||||
// 检查是否达到最大录音时间(5分钟)
|
||||
if (recordingDuration >= 5 * 60 * 1000) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Toast.makeText(SingerVerificationActivity.this, "已达到最大录音时间5分钟,录音自动停止", Toast.LENGTH_SHORT).show();
|
||||
stopRecording();
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}, 1000, 1000);
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.e("SingerVerification", "录音失败: " + e.getMessage());
|
||||
Toast.makeText(this, "录音失败: " + e.getMessage() + ",请重试", Toast.LENGTH_SHORT).show();
|
||||
// 重置录音状态,允许重新录制
|
||||
isRecording = false;
|
||||
if (mediaRecorder != null) {
|
||||
mediaRecorder.release();
|
||||
mediaRecorder = null;
|
||||
}
|
||||
if (recordingFile != null && recordingFile.exists()) {
|
||||
recordingFile.delete();
|
||||
recordingFile = null;
|
||||
}
|
||||
updateUI();
|
||||
}
|
||||
}
|
||||
|
||||
// 停止录音
|
||||
private void stopRecording() {
|
||||
try {
|
||||
if (isRecording && mediaRecorder != null) {
|
||||
isRecording = false;
|
||||
mediaRecorder.stop();
|
||||
mediaRecorder.release();
|
||||
mediaRecorder = null;
|
||||
|
||||
// 取消计时器
|
||||
if (timer != null) {
|
||||
timer.cancel();
|
||||
timer = null;
|
||||
}
|
||||
|
||||
// 检查录音时长是否达到最小要求(60秒)
|
||||
if (recordingDuration < 60 * 1000) {
|
||||
Toast.makeText(this, "录音时间太短,请至少录制60秒", Toast.LENGTH_SHORT).show();
|
||||
// 删除不符合要求的录音文件
|
||||
if (recordingFile != null && recordingFile.exists()) {
|
||||
recordingFile.delete();
|
||||
recordingFile = null;
|
||||
}
|
||||
recordingDuration = 0L;
|
||||
} else {
|
||||
Toast.makeText(this, "录音完成", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
updateUI();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "停止录音失败: " + e.getMessage());
|
||||
Toast.makeText(this, "停止录音失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
|
||||
// 发生异常时重置状态,允许重新录制
|
||||
isRecording = false;
|
||||
if (mediaRecorder != null) {
|
||||
mediaRecorder.release();
|
||||
mediaRecorder = null;
|
||||
}
|
||||
if (recordingFile != null && recordingFile.exists()) {
|
||||
recordingFile.delete();
|
||||
recordingFile = null;
|
||||
}
|
||||
recordingDuration = 0L;
|
||||
updateUI();
|
||||
}
|
||||
}
|
||||
|
||||
// 开始播放
|
||||
private void startPlaying() {
|
||||
if (recordingFile == null || !recordingFile.exists()) {
|
||||
Toast.makeText(this, "没有录制的文件", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
stopRecording();
|
||||
|
||||
mediaPlayer = new MediaPlayer();
|
||||
mediaPlayer.setDataSource(recordingFile.getAbsolutePath());
|
||||
mediaPlayer.prepare();
|
||||
mediaPlayer.start();
|
||||
|
||||
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
||||
@Override
|
||||
public void onCompletion(MediaPlayer mp) {
|
||||
isPlaying = false;
|
||||
|
||||
// 恢复按钮状态
|
||||
mBinding.playButton.setText("试听");
|
||||
mBinding.playButton.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.but_st, 0, 0);
|
||||
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
|
||||
isPlaying = true;
|
||||
updateUI();
|
||||
} catch (IOException e) {
|
||||
Log.e("SingerVerification", "播放失败: " + e.getMessage());
|
||||
Toast.makeText(this, "播放失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
// 停止播放
|
||||
private void stopPlaying() {
|
||||
try {
|
||||
if (isPlaying && mediaPlayer != null) {
|
||||
isPlaying = false;
|
||||
mediaPlayer.stop();
|
||||
mediaPlayer.release();
|
||||
mediaPlayer = null;
|
||||
|
||||
// 恢复按钮状态
|
||||
mBinding.playButton.setText("试听");
|
||||
mBinding.playButton.setCompoundDrawablesWithIntrinsicBounds(0, R.mipmap.but_st, 0, 0);
|
||||
|
||||
updateUI();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("SingerVerification", "停止播放失败: " + e.getMessage());
|
||||
Toast.makeText(this, "停止播放失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
// 重新录音
|
||||
private void reRecord() {
|
||||
stopPlaying();
|
||||
stopRecording();
|
||||
if (recordingFile != null && recordingFile.exists()) {
|
||||
recordingFile.delete();
|
||||
}
|
||||
recordingFile = null;
|
||||
recordingDuration = 0L;
|
||||
updateUI();
|
||||
}
|
||||
|
||||
// 提交认证
|
||||
private void submitVerification() {
|
||||
if (recordingFile == null || !recordingFile.exists()) {
|
||||
Toast.makeText(this, "请先录制音频", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
MvpPre.uploadFile(recordingFile, 3);
|
||||
}
|
||||
|
||||
// 创建音频文件
|
||||
private File createAudioFile() throws IOException {
|
||||
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
|
||||
String audioFileName = "AUDIO_" + timeStamp + "_";
|
||||
File storageDir = getExternalFilesDir(Environment.DIRECTORY_MUSIC);
|
||||
|
||||
return File.createTempFile(
|
||||
audioFileName,
|
||||
".m4a",
|
||||
storageDir
|
||||
);
|
||||
}
|
||||
|
||||
// 更新UI
|
||||
private void updateUI() {
|
||||
|
||||
// 更新时间显示
|
||||
mBinding.timeTextView.setText(formatTime(recordingDuration));
|
||||
// 计算录音进度(假设最大录音时间为5分钟=300秒)
|
||||
int maxRecordingTime = 300; // 5分钟
|
||||
int progress = (int) ((recordingDuration / 1000) * 100 / maxRecordingTime);
|
||||
mBinding.progressArc.setProgress(progress); // 更新按钮状态
|
||||
}
|
||||
|
||||
// 格式化时间显示
|
||||
private String formatTime(long millis) {
|
||||
long totalSeconds = millis / 1000;
|
||||
long minutes = totalSeconds / 60;
|
||||
long seconds = totalSeconds % 60;
|
||||
return String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
if (requestCode == REQUEST_RECORD_AUDIO_PERMISSION) {
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
Toast.makeText(this, "录音权限已获取", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(this, "需要录音权限才能进行认证", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
stopRecording();
|
||||
stopPlaying();
|
||||
if (timer != null) {
|
||||
timer.cancel();
|
||||
timer = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upLoadSuccess(String url, int type) {
|
||||
MvpPre.singerAuth(url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void singerAuth(String s) {
|
||||
reRecord();
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSong(SongPlaylist s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishComment() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSong() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
package com.xscm.modulemain.activity.user.activity;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
|
||||
import com.xscm.modulemain.adapter.UserPlaylistAdapter;
|
||||
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.ActivityUserPlaylistBinding;
|
||||
import com.xscm.modulemain.dialog.CustomInputDialog;
|
||||
import com.xscm.moduleutil.bean.SongPlaylist;
|
||||
import com.xscm.moduleutil.utils.SpUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 我的歌单
|
||||
*/
|
||||
public class UserPlaylistActivity extends BaseMvpActivity<SingerVerificationPresenter, ActivityUserPlaylistBinding> implements SingerVerificationContract.View {
|
||||
|
||||
private int page = 0;
|
||||
private UserPlaylistAdapter mAdapter;
|
||||
private List<SongPlaylist.SongPlaylistBean> mSongPlaylistBean;
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
mBinding.topBar.setTitle("歌单列表");
|
||||
mBinding.topBar.setRightText("新增");
|
||||
mBinding.topBar.setRightTxtVisible(true);
|
||||
mBinding.topBar.setRightColor(Color.parseColor("#3ABC6D"));
|
||||
mBinding.topBar.getTvRight().setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//新增歌单
|
||||
// 在Activity或Fragment中调用
|
||||
CustomInputDialog customInputDialog = new CustomInputDialog(UserPlaylistActivity.this);
|
||||
customInputDialog.show();
|
||||
}
|
||||
});
|
||||
mBinding.recycleView.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
// 初始化适配器
|
||||
mAdapter = new UserPlaylistAdapter(this, new ArrayList<>());
|
||||
mBinding.recycleView.setAdapter(mAdapter);
|
||||
// 设置滑动操作
|
||||
// ItemTouchHelper itemTouchHelper = UserPlaylistAdapter.getItemTouchHelper(mAdapter);
|
||||
// itemTouchHelper.attachToRecyclerView(mBinding.recycleView);
|
||||
|
||||
|
||||
// 设置编辑点击事件
|
||||
mAdapter.setOnEditClickListener(position -> {
|
||||
// 处理编辑点击事件
|
||||
CustomInputDialog customInputDialog = new CustomInputDialog(UserPlaylistActivity.this);
|
||||
customInputDialog.PlaylistBean(mSongPlaylistBean.get(position));
|
||||
customInputDialog.setOnDialogDismissListener(new CustomInputDialog.OnDialogDismissListener() {
|
||||
@Override
|
||||
public void onDialogDismiss(boolean dataChanged) {
|
||||
if (dataChanged)
|
||||
// 数据已更改,重新加载数据
|
||||
page = 1;
|
||||
MvpPre.getSong(SpUtil.getUserId() + "", "", page + "", "10");
|
||||
}
|
||||
});
|
||||
customInputDialog.show();
|
||||
|
||||
|
||||
});
|
||||
|
||||
// 设置删除点击事件
|
||||
mAdapter.setOnDeleteClickListener(position -> {
|
||||
// 处理删除点击事件
|
||||
MvpPre.deleteSong(mSongPlaylistBean.get(position).getId() + "");
|
||||
|
||||
});
|
||||
|
||||
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
page++;
|
||||
MvpPre.getSong(SpUtil.getUserId() + "", "", page + "", "10");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
// EventBus.getDefault().post(new BannerRefreshEvent());
|
||||
page = 1;
|
||||
MvpPre.getSong(SpUtil.getUserId() + "", "", page + "", "10");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
page = 1;
|
||||
MvpPre.getSong(SpUtil.getUserId() + "", "", page + "", "10");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_user_playlist;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SingerVerificationPresenter bindPresenter() {
|
||||
return new SingerVerificationPresenter(this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upLoadSuccess(String url, int type) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void singerAuth(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSong(SongPlaylist s) {
|
||||
if (mAdapter != null) {
|
||||
if (page == 1) {
|
||||
// 第一页,直接设置数据
|
||||
if (s == null || s.getLists() == null || s.getLists().size() == 0) {
|
||||
return;
|
||||
}
|
||||
mSongPlaylistBean = s.getLists();
|
||||
mAdapter.setNewData(s.getLists());
|
||||
} else {
|
||||
if (s == null || s.getLists() == null || s.getLists().size() == 0) {
|
||||
return;
|
||||
}
|
||||
mSongPlaylistBean.addAll(s.getLists());
|
||||
// 更多页面,添加数据
|
||||
mAdapter.addData(s.getLists());
|
||||
}
|
||||
|
||||
// 更新歌单数量
|
||||
mBinding.tvNum.setText("共" + s.getCount() + "首歌");
|
||||
}
|
||||
|
||||
// 结束刷新或加载更多
|
||||
if (mBinding.smartRefreshLayout != null) {
|
||||
mBinding.smartRefreshLayout.finishRefresh();
|
||||
mBinding.smartRefreshLayout.finishLoadMore();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishComment() {
|
||||
mBinding.smartRefreshLayout.finishRefresh();
|
||||
mBinding.smartRefreshLayout.finishLoadMore();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSong() {
|
||||
page = 1;
|
||||
MvpPre.getSong(SpUtil.getUserId() + "", "", page + "", "10");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.xscm.modulemain.activity.user.conacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.xscm.moduleutil.activity.IPresenter;
|
||||
import com.xscm.moduleutil.activity.IView;
|
||||
import com.xscm.moduleutil.bean.SongPlaylist;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* 歌手验证合约类,定义了歌手验证功能所需的视图和 presenter 接口
|
||||
* 该类采用了合约模式,将视图和 presenter 的接口定义在一起,便于维护
|
||||
*/
|
||||
public class SingerVerificationContract {
|
||||
/**
|
||||
* 歌手验证视图接口,继承自 IView<Activity>
|
||||
* 该接口定义了歌手验证功能所需的视图层方法
|
||||
*/
|
||||
public interface View extends IView<Activity> {
|
||||
void upLoadSuccess(String url, int type);
|
||||
void singerAuth(String s);
|
||||
void getSong(SongPlaylist s);
|
||||
|
||||
void finishComment();
|
||||
|
||||
void deleteSong();
|
||||
}
|
||||
|
||||
/**
|
||||
* 歌手验证的 presenter 接口,继承自 IPresenter
|
||||
* 该接口定义了歌手验证功能所需的 presenter 层方法
|
||||
*/
|
||||
public interface IMePre extends IPresenter {
|
||||
void uploadFile(File file, int type);
|
||||
|
||||
void singerAuth(String url);
|
||||
|
||||
void getSong(String userId,String roomId,String page,String pageSize);
|
||||
|
||||
void deleteSong(String songId);
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,8 @@ import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.activity.user.activity.GiftWallActivity;
|
||||
import com.xscm.modulemain.activity.user.activity.NobleTitleActivity;
|
||||
import com.xscm.modulemain.activity.user.activity.RechargeActivity;
|
||||
import com.xscm.modulemain.activity.user.activity.SingerVerificationActivity;
|
||||
import com.xscm.modulemain.activity.user.activity.UserPlaylistActivity;
|
||||
import com.xscm.modulemain.databinding.FragmentVocalRangeBinding;
|
||||
import com.xscm.modulemain.activity.user.activity.BlacklistActivity;
|
||||
import com.xscm.modulemain.activity.user.activity.DailyTasksActivity;
|
||||
@@ -54,7 +56,7 @@ import java.util.List;
|
||||
*/
|
||||
public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVocalRangeBinding> implements MeConacts.View {
|
||||
|
||||
// private MyInfoResp mMyInfoResp;
|
||||
// private MyInfoResp mMyInfoResp;
|
||||
private UserInfo userInfo;
|
||||
|
||||
public static VocalRangeFragment newInstance() {
|
||||
@@ -84,7 +86,6 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.llVisit.setOnClickListener(this::onClick);
|
||||
@@ -119,6 +120,8 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
mBinding.llMeHelp.setOnClickListener(this::onClick);
|
||||
mBinding.llGiftWall.setOnClickListener(this::onClick);
|
||||
mBinding.clNobleTitle.setOnClickListener(this::onClick);
|
||||
mBinding.llSinger.setOnClickListener(this::onClick);
|
||||
mBinding.llPlaylist.setOnClickListener(this::onClick);
|
||||
|
||||
mBinding.banner.loadImage(new XBanner.XBannerAdapter() {
|
||||
@Override
|
||||
@@ -140,15 +143,13 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
* type=1时,该值表示房间id;type=2时,表示文章id
|
||||
*/
|
||||
BannerModel bannerModel = (BannerModel) model;
|
||||
Intent intent=new Intent(getActivity(), WebViewActivity.class);
|
||||
Intent intent = new Intent(getActivity(), WebViewActivity.class);
|
||||
intent.putExtra("url", bannerModel.getUrl());
|
||||
intent.putExtra("title", "防骗指南");
|
||||
startActivity(intent);
|
||||
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", bannerModel.getUrl()).withString("title", "首页横幅").navigation();
|
||||
}
|
||||
});
|
||||
ShineTextView tvNickName = mBinding.tvNickName;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -172,46 +173,50 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
// ARouter.getInstance().build(ARouteConstants.ME_VISIT).navigation();
|
||||
// AppLogUtil.reportAppLog(AppLogEvent.C0104);
|
||||
} else if (id == R.id.ll_follow) {//关注
|
||||
Intent intent=new Intent(getContext(), BlacklistActivity.class);
|
||||
intent.putExtra("type",0);
|
||||
Intent intent = new Intent(getContext(), BlacklistActivity.class);
|
||||
intent.putExtra("type", 0);
|
||||
startActivity(intent);
|
||||
} else if (id == R.id.ll_me_guild) {
|
||||
Intent intent = new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/union/index?id=" + SpUtil.getToken());
|
||||
}else if (id==R.id.ll_me_guild){
|
||||
Intent intent=new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_GUILD_URL(),SpUtil.getToken()));
|
||||
intent.putExtra("title", "公会");
|
||||
startActivity(intent);
|
||||
} else if (id == R.id.ll_my_shopping) {
|
||||
Intent intent = new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/prop/propMall?id=" + SpUtil.getToken());
|
||||
}else if (id==R.id.ll_my_shopping){
|
||||
Intent intent=new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_PROP_MALL_URL(),SpUtil.getToken()));
|
||||
intent.putExtra("title", "道具商城");
|
||||
startActivity(intent);
|
||||
}
|
||||
else if (id == R.id.ll_fans) {//粉丝
|
||||
Intent intent=new Intent(getContext(), BlacklistActivity.class);
|
||||
intent.putExtra("type",2);
|
||||
} else if (id == R.id.ll_fans) {//粉丝
|
||||
Intent intent = new Intent(getContext(), BlacklistActivity.class);
|
||||
intent.putExtra("type", 2);
|
||||
startActivity(intent);
|
||||
} else if (id == R.id.ll_friends) {//访客
|
||||
// if (userInfo.getCharm_level()>=20){
|
||||
Intent intent=new Intent(getContext(), BlacklistActivity.class);
|
||||
intent.putExtra("type",3);
|
||||
startActivity(intent);
|
||||
Intent intent = new Intent(getContext(), BlacklistActivity.class);
|
||||
intent.putExtra("type", 3);
|
||||
startActivity(intent);
|
||||
// }else {
|
||||
// ToastUtils.showShort("需要魅力等级20以上才能查看");
|
||||
// }
|
||||
|
||||
// ARouter.getInstance().build(ARouteConstants.ME_MY_FRIENDS).withInt("type", 0).navigation();
|
||||
// AppLogUtil.reportAppLog(AppLogEvent.C0112);
|
||||
}
|
||||
else if (id == R.id.im_my_room) {
|
||||
} else if (id == R.id.im_my_room) {
|
||||
//我的房间
|
||||
startActivity(new Intent(getContext(), MyRoomActivity.class));
|
||||
} else if (id == R.id.tv_nick_name || id == R.id.tv_home) {//编辑信息
|
||||
} else if (id == R.id.tv_nick_name || id == R.id.tv_home) {//编辑信息
|
||||
startActivity(new Intent(getContext(), EditUserInfoActivity.class));
|
||||
}else if (id == R.id.tv_my_wallet){//钱包
|
||||
} else if (id == R.id.tv_my_wallet) {//钱包
|
||||
startActivity(new Intent(getContext(), MyMoneyActivity.class));
|
||||
}else if (id == R.id.riv_user_head ){//用户主页
|
||||
} else if (id == R.id.riv_user_head) {//用户主页
|
||||
Intent intent = new Intent(getContext(), UserHomepageActivity.class);
|
||||
intent.putExtra("userId",SpUtil.getUserId()+"");
|
||||
intent.putExtra("userId", SpUtil.getUserId() + "");
|
||||
startActivity(intent);
|
||||
}
|
||||
// else if (id == R.id.me_my_lv) {
|
||||
@@ -220,42 +225,44 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
// //装扮商城
|
||||
// ARouter.getInstance().build(ARouteConstants.ME_SHOP).withString("from", "我的界面").navigation();
|
||||
// }
|
||||
else if (id == R.id.me_dress_up){//个性装扮
|
||||
else if (id == R.id.me_dress_up) {//个性装扮
|
||||
startActivity(new Intent(getContext(), PersonalityActivity.class));
|
||||
}
|
||||
else if (id == R.id.tv_my_bb) {
|
||||
} else if (id == R.id.tv_my_bb) {
|
||||
//我的背包
|
||||
startActivity(new Intent(getContext(), MyBagActivity.class));
|
||||
} else if (id==R.id.me_daily) {//每日任务
|
||||
} else if (id == R.id.me_daily) {//每日任务
|
||||
startActivity(new Intent(getContext(), DailyTasksActivity.class));
|
||||
}
|
||||
else if (id == R.id.iv_sz) {//设置
|
||||
} else if (id == R.id.iv_sz) {//设置
|
||||
// startActivity(new Intent(getContext(), SettingActivity.class));
|
||||
Intent intent = new Intent(getContext(), SettingActivity.class);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable("userInfo", userInfo);
|
||||
intent.putExtras(bundle);
|
||||
startActivity(intent);
|
||||
}else if (id == R.id.me_my_dan){//等级
|
||||
} else if (id == R.id.me_my_dan) {//等级
|
||||
Intent intent = new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/other/grade?id=" + SpUtil.getToken());
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_GRADE_URL(),SpUtil.getToken()));
|
||||
intent.putExtra("title", "等级");
|
||||
startActivity(intent);
|
||||
}else if (id == R.id.ll_me_help){//反馈
|
||||
} else if (id == R.id.ll_me_help) {//反馈
|
||||
Intent intent = new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/help?id=" + SpUtil.getToken());
|
||||
// intent.putExtra("url", "http://192.168.110.17:8080/web/index.html#/pages/feedback/help?id=" + SpUtil.getToken());
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_HELP_URL(), SpUtil.getToken()));
|
||||
intent.putExtra("title", "反馈");
|
||||
startActivity(intent);
|
||||
}else if (id == R.id.iv_hb){//邀请
|
||||
} else if (id == R.id.iv_hb) {//邀请
|
||||
Intent intent = new Intent(getContext(), WebViewActivity.class);
|
||||
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/other/income?id=" + SpUtil.getToken());
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_INVITATION_URL(),SpUtil.getToken()));
|
||||
intent.putExtra("title", "邀请");
|
||||
startActivity(intent);
|
||||
}else if (id==R.id.tv_copy){
|
||||
} else if (id == R.id.tv_copy) {
|
||||
copyComment(mBinding.beautifulView.getText().toString());
|
||||
}else if (id==R.id.ll_recharge){//充值
|
||||
} else if (id == R.id.ll_recharge) {//充值
|
||||
startActivity(new Intent(getActivity(), RechargeActivity.class));
|
||||
}else if (id==R.id.ll_me_income){
|
||||
} else if (id == R.id.ll_me_income) {
|
||||
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId(); // 填移动应用(App)的 AppId
|
||||
IWXAPI api = WXAPIFactory.createWXAPI(getContext(), appId);
|
||||
|
||||
@@ -264,12 +271,21 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
req.corpId = "ww1de4300858c0b461"; // 企业ID
|
||||
req.url = "https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7"; // 客服URL
|
||||
api.sendReq(req);
|
||||
}else if (id==R.id.ll_gift_wall){//我的页面的礼物墙
|
||||
} else if (id == R.id.ll_gift_wall) {//我的页面的礼物墙
|
||||
startActivity(new Intent(getContext(), GiftWallActivity.class));
|
||||
}else if (id==R.id.cl_noble_title){//爵位展示页面
|
||||
} else if (id == R.id.cl_noble_title) {//爵位展示页面
|
||||
startActivity(new Intent(getContext(), NobleTitleActivity.class));
|
||||
} else if (id == R.id.ll_singer) {//歌手认证
|
||||
Intent intent = new Intent(getContext(), SingerVerificationActivity.class);
|
||||
intent.putExtra("isSinger", userInfo.getSinger_status());
|
||||
startActivity(intent);
|
||||
|
||||
} else if (id == R.id.ll_playlist) {//我的歌单
|
||||
Intent intent = new Intent(getContext(), UserPlaylistActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
private void copyComment(String content) {
|
||||
// 获取剪贴板管理器
|
||||
ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
@@ -281,66 +297,28 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
// 可选:通知用户文本已复制
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查看用户主页(我的空间)
|
||||
*/
|
||||
public void userOnclick(View view) {
|
||||
//我的空间
|
||||
// if (mMyInfoResp != null) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", mMyInfoResp.getUser_id()).navigation();
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
// @Override
|
||||
// public void myInfoSuccess(MyInfoResp data) {
|
||||
// this.mMyInfoResp = data;
|
||||
// SpUtils.saveUserId(data.getUser_id());
|
||||
// SpUtils.saveMyRoomId(data.getRoom_id());
|
||||
// mBinding.tvNickName.setText(data.getNickname());
|
||||
// mBinding.tvFollow.setText(data.getFollow_count());
|
||||
// mBinding.tvFans.setText(data.getFans_count());
|
||||
// mBinding.tvFriends.setText(data.getFriend_count());
|
||||
// mBinding.tvVisit.setText(data.getVisit_count());
|
||||
// mBinding.beautifulView.setText("ID:"+data.getUser_code());
|
||||
// mBinding.beautifulViewCopy.setOnClickListener(v->copyUserId(data.getUser_code()));
|
||||
// mBinding.rivUserHead.setData(data.getHead_picture(), data.getRank_info().getPicture(), data.getSex());
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void myInfoSuccess(UserInfo data) {
|
||||
SpUtil.saveUserInfo(data);
|
||||
this.userInfo = data;
|
||||
mBinding.rivUserHead.setData(data.getAvatar(), data.getDress(),data.getNobility_image());
|
||||
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"));
|
||||
String sex = data.getSex() == 1 ? "男" : "女";
|
||||
mBinding.beautifulView.setText(sex + " | ID:" + data.getUser_code());
|
||||
mBinding.tvFollow.setText(data.getFollow_num() + "");
|
||||
mBinding.tvFans.setText(data.getFans_num() + "");
|
||||
mBinding.tvFriends.setText(data.getLook_me_num() + "");
|
||||
|
||||
|
||||
if (!data.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()+"");
|
||||
mBinding.tvFans.setText(data.getFans_num()+"");
|
||||
mBinding.tvFriends.setText(data.getLook_me_num()+"");
|
||||
|
||||
if (data.getIs_use_code()==1){
|
||||
if (data.getIs_use_code() == 1) {
|
||||
mBinding.imBeautiful.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
} else {
|
||||
mBinding.imBeautiful.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (data.getAuth()==1){
|
||||
if (data.getAuth() == 1) {
|
||||
SpUtil.setRealName(true);
|
||||
}else {
|
||||
} else {
|
||||
SpUtil.setRealName(false);
|
||||
}
|
||||
|
||||
@@ -369,6 +347,14 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
}
|
||||
}
|
||||
|
||||
if (data.getSinger_status()!=1){
|
||||
mBinding.llSinger.setVisibility(View.VISIBLE);
|
||||
mBinding.llPlaylist.setVisibility(View.GONE);
|
||||
}else {
|
||||
mBinding.llSinger.setVisibility(View.GONE);
|
||||
mBinding.llPlaylist.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -385,6 +371,7 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
public void hideSkill(boolean hideSkill) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wallet(WalletBean walletBean) {
|
||||
mBinding.tvIcon.setText(walletBean.getCoin());
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
package com.xscm.modulemain.activity.user.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.xscm.modulemain.activity.user.conacts.SingerVerificationContract;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.bean.SongPlaylist;
|
||||
import com.xscm.moduleutil.http.BaseObserver;
|
||||
import com.xscm.moduleutil.presenter.BasePresenter;
|
||||
import com.xscm.moduleutil.utils.Md5Utils;
|
||||
import com.xscm.moduleutil.utils.cos.CosUploadManager;
|
||||
import com.xscm.moduleutil.utils.oss.OSSOperUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
/**
|
||||
* 歌手验证器Presenter类,负责处理歌手验证相关的业务逻辑
|
||||
* 继承自BasePresenter,实现了SingerVerificationContract.IMePre接口
|
||||
*/
|
||||
public class SingerVerificationPresenter extends BasePresenter<SingerVerificationContract.View> implements SingerVerificationContract.IMePre {
|
||||
// 视图接口对象,用于与View层交互
|
||||
SingerVerificationContract.View mView;
|
||||
|
||||
/**
|
||||
* 构造函数,初始化Presenter
|
||||
*
|
||||
* @param view 视图接口对象,用于与View层交互
|
||||
* @param context 上下文对象,用于获取系统资源等
|
||||
*/
|
||||
public SingerVerificationPresenter(SingerVerificationContract.View view, Context context) {
|
||||
super(view, context); // 调用父类构造函数
|
||||
mView = view; // 保存视图接口对象的引用
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadFile(File file, int type) {
|
||||
String fileMD5 = Md5Utils.getFileMD5(file);
|
||||
String suffix = "";
|
||||
if (file.getName().contains(".")) {
|
||||
suffix = file.getName().substring(file.getName().lastIndexOf("."));
|
||||
}
|
||||
String url = "audio/" + fileMD5 + suffix;
|
||||
CosUploadManager.getInstance(CommonAppContext.getInstance()).upParameters(url, file.getPath(), new CosUploadManager.UploadCallback() {
|
||||
@Override
|
||||
public void onSuccess(String url) {
|
||||
if (MvpRef == null) {
|
||||
MvpRef = new WeakReference<>(mView);
|
||||
}
|
||||
MvpRef.get().upLoadSuccess(url, type);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Exception e) {
|
||||
ToastUtils.show("上传失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure1(IllegalStateException e) {
|
||||
ToastUtils.show("上传失败");
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void singerAuth(String url) {
|
||||
api.singerAuth(url, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
if (MvpRef == null) {
|
||||
MvpRef = new WeakReference<>(mView);
|
||||
}
|
||||
MvpRef.get().singerAuth(s);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSong(String userId, String roomId, String page, String pageSize) {
|
||||
api.getSong(userId, roomId, page, pageSize, new BaseObserver<SongPlaylist>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(SongPlaylist songPlaylist) {
|
||||
if (MvpRef == null) {
|
||||
MvpRef = new WeakReference<>(mView);
|
||||
}
|
||||
MvpRef.get().getSong(songPlaylist);
|
||||
MvpRef.get().finishComment();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteSong(String songId) {
|
||||
api.deleteSong(songId, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
if (MvpRef == null) {
|
||||
MvpRef = new WeakReference<>(mView);
|
||||
}
|
||||
MvpRef.get().deleteSong();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user