This commit is contained in:
2025-11-12 16:42:51 +08:00
parent 8013268816
commit d80222afef
64 changed files with 1561 additions and 789 deletions

View File

@@ -50,6 +50,7 @@ dependencies {
implementation libs.material implementation libs.material
implementation libs.activity implementation libs.activity
implementation libs.constraintlayout implementation libs.constraintlayout
implementation project(':locktableview')
// implementation project(':modulevoice') // implementation project(':modulevoice')
// implementation project(':modulecircle') // implementation project(':modulecircle')
// implementation project(':modulevocal') // implementation project(':modulevocal')

View File

@@ -166,6 +166,19 @@
android:name=".activity.user.activity.RealNameActivity" android:name=".activity.user.activity.RealNameActivity"
android:exported="false" /> android:exported="false" />
<activity
android:name=".activity.user.activity.NoblePaymentActivity"
android:exported="false"/>
<activity
android:name=".activity.user.activity.NobleDetailsActivity"
android:exported="false"/>
<activity
android:name=".activity.user.activity.NobleTitleActivity"
android:exported="false"/>
<activity
android:name=".activity.user.activity.GiftWallActivity"
android:exported="false"/>
<activity <activity
android:name=".activity.WebViewActivity" android:name=".activity.WebViewActivity"

View File

@@ -57,7 +57,7 @@ open class Application : CommonAppContext() {
private fun initLogUtils() { private fun initLogUtils() {
LogUtils.getConfig() LogUtils.getConfig()
.setLogSwitch(true) // 全局开关 .setLogSwitch(false) // 全局开关
.setLog2FileSwitch(true) // 必须设为 true .setLog2FileSwitch(true) // 必须设为 true
.setDir(LOGUTILS_SAVE_PATH) // 设置有效路径 .setDir(LOGUTILS_SAVE_PATH) // 设置有效路径
.setFileFilter(LogUtils.V); // 允许所有级别 .setFileFilter(LogUtils.V); // 允许所有级别

View File

@@ -350,7 +350,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
selectShow(2); selectShow(2);
} else if (id == R.id.rl_me) { } else if (id == R.id.rl_me) {
mBinding.llBottomBar.setBackgroundResource(com.xscm.moduleutil.R.drawable.home_bbar_yuan); mBinding.llBottomBar.setBackgroundResource(com.xscm.moduleutil.R.drawable.home_bbar_xz);
selectShow(3); selectShow(3);
//C0101我的界面 //C0101我的界面
@@ -809,6 +809,7 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
public void activitiesPermissionSuccess(ActivitiesPermission activitiesPermission) { public void activitiesPermissionSuccess(ActivitiesPermission activitiesPermission) {
List<PermissionPicBean> list; List<PermissionPicBean> list;
if (activitiesPermission != null) { if (activitiesPermission != null) {
mBinding.dvr.setVisibility(View.VISIBLE);
list = new ArrayList<>(); list = new ArrayList<>();
if (activitiesPermission.getFirst_charge_permission() == 1) { if (activitiesPermission.getFirst_charge_permission() == 1) {
PermissionPicBean bean = new PermissionPicBean(); PermissionPicBean bean = new PermissionPicBean();
@@ -859,6 +860,8 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
} }
} }
}); });
}else {
mBinding.dvr.setVisibility(View.GONE);
} }
} }

View File

@@ -20,19 +20,25 @@ import android.text.Spannable
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.text.TextUtils import android.text.TextUtils
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
import android.util.DisplayMetrics
import android.util.Log import android.util.Log
import android.view.GestureDetector import android.view.GestureDetector
import android.view.Gravity import android.view.Gravity
import android.view.KeyEvent import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager import android.view.WindowManager
import android.view.animation.Animation
import android.view.animation.DecelerateInterpolator
import android.view.animation.TranslateAnimation
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.Button import android.widget.Button
import android.widget.EditText import android.widget.EditText
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
@@ -53,6 +59,7 @@ import com.liulishuo.okdownload.OkDownloadProvider
import com.orhanobut.logger.Logger import com.orhanobut.logger.Logger
import com.petterp.floatingx.assist.helper.FxScopeHelper import com.petterp.floatingx.assist.helper.FxScopeHelper
import com.petterp.floatingx.listener.control.IFxControl import com.petterp.floatingx.listener.control.IFxControl
import com.sunfusheng.marqueeview.DisplayUtil
import com.tencent.imsdk.v2.V2TIMManager import com.tencent.imsdk.v2.V2TIMManager
import com.tencent.imsdk.v2.V2TIMSDKListener import com.tencent.imsdk.v2.V2TIMSDKListener
import com.tencent.imsdk.v2.V2TIMUserFullInfo import com.tencent.imsdk.v2.V2TIMUserFullInfo
@@ -432,11 +439,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
override fun initData() { override fun initData() {
if (!EasyPermissions.hasPermissions(this, *permissions)) { if (!EasyPermissions.hasPermissions(this, *permissions)) {
PermissionDescriptionHelper.addPermissionDescription( PermissionDescriptionHelper.addPermissionDescription(false, mBinding?.root as ViewGroup, permissions)
false,
mBinding?.root as ViewGroup,
permissions
)
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, "请开启录音使用权限", this, "请开启录音使用权限",
1, *permissions 1, *permissions
@@ -492,7 +495,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
this, LinearLayoutManager.HORIZONTAL, false this, LinearLayoutManager.HORIZONTAL, false
) )
likeUserAdapter = LikeUserAdapter() likeUserAdapter = LikeUserAdapter()
mBinding!!.roomTop.userRecyclerView.adapter = likeUserAdapter mBinding?.roomTop?.userRecyclerView?.adapter = likeUserAdapter
likeUserAdapter!!.onItemClickListener = likeUserAdapter!!.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { adapter, view, position -> BaseQuickAdapter.OnItemClickListener { adapter, view, position ->
// RoomOnlineDialogFragment.show(roomId, "", mRoomUserBean, mRoomInfoResp, getSupportFragmentManager()); // RoomOnlineDialogFragment.show(roomId, "", mRoomUserBean, mRoomInfoResp, getSupportFragmentManager());
@@ -690,14 +693,22 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
} }
/**
* 设置顶部操作按钮的可见性和点击事件
* 包括结束按钮和延时按钮的初始化和事件绑定
*/
fun tob() { fun tob() {
// 获取并显示stubButtons2布局
val stub = mBinding!!.roomTop.stubButtons2 val stub = mBinding!!.roomTop.stubButtons2
stub.visibility = View.VISIBLE stub.visibility = View.VISIBLE
// 获取结束按钮和延时按钮的ImageView控件
val imActionJs = mBinding!!.roomTop.imActionJs.findViewById<ImageView>(R.id.im_action_js) val imActionJs = mBinding!!.roomTop.imActionJs.findViewById<ImageView>(R.id.im_action_js)
val imActionYs = mBinding!!.roomTop.imActionYs.findViewById<ImageView>(R.id.im_action_ys) val imActionYs = mBinding!!.roomTop.imActionYs.findViewById<ImageView>(R.id.im_action_ys)
if (imActionJs != null && imActionYs != null) { if (imActionJs != null && imActionYs != null) {
imActionJs.setOnClickListener { dialogEnd() } imActionJs.setOnClickListener { dialogEnd() }
// 设置结束按钮点击事件调用dialogEnd()方法
imActionYs.setOnClickListener { imActionYs.setOnClickListener {
// 设置延时按钮点击事件调用MvpPre的auctionDelay方法传入当前拍卖ID
MvpPre!!.auctionDelay( MvpPre!!.auctionDelay(
SpUtil.getauctionId() SpUtil.getauctionId()
) )
@@ -744,6 +755,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (visible) View.VISIBLE else View.INVISIBLE if (visible) View.VISIBLE else View.INVISIBLE
} }
// 根据传入的visible参数设置JS按钮的可见性
// 使用View.VISIBLE显示按钮使用View.INVISIBLE隐藏按钮
fun upYs(visible: Boolean) { fun upYs(visible: Boolean) {
mBinding!!.roomTop.imActionYs.visibility = mBinding!!.roomTop.imActionYs.visibility =
if (visible) View.VISIBLE else View.INVISIBLE if (visible) View.VISIBLE else View.INVISIBLE
@@ -820,7 +833,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
* 释放当前房间 * 释放当前房间
*/ */
private fun releaseRoom() { private fun releaseRoom() {
AgoraManager.getInstance(this).cleanup() AgoraManager.getInstance().cleanup()
CommonAppContext.getInstance().isPlaying = false CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false CommonAppContext.getInstance().isShow = false
QXGiftPlayerManager.getInstance(applicationContext).destroyEffectSvga() QXGiftPlayerManager.getInstance(applicationContext).destroyEffectSvga()
@@ -930,9 +943,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
mBinding!!.roomTop.btnFollow.text = "收藏" mBinding!!.roomTop.btnFollow.text = "收藏"
} }
if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") { if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") {
AgoraManager.getInstance(this).isBjMusic = false AgoraManager.getInstance().isBjMusic = false
} else { } else {
AgoraManager.getInstance(this).isBjMusic = true AgoraManager.getInstance().isBjMusic = true
} }
@@ -1549,7 +1562,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} else { } else {
if (customMusicFloatingView != null) { if (customMusicFloatingView != null) {
customMusicFloatingView!!.destroy() customMusicFloatingView!!.destroy()
AgoraManager.getInstance(this@RoomActivity).desMusic() AgoraManager.getInstance().desMusic()
isMusic = false isMusic = false
} }
@@ -1605,20 +1618,20 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (customMusicFloatingView != null) { if (customMusicFloatingView != null) {
customMusicFloatingView!!.destroy() customMusicFloatingView!!.destroy()
} }
AgoraManager.getInstance(this@RoomActivity).desMusic() AgoraManager.getInstance().desMusic()
if ((mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "4" || if ((mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "4" ||
mRoomInfoResp!!.room_info.type_id == "3" || mRoomInfoResp!!.room_info.type_id == "8") && mRoomInfoResp!!.room_info.type_id == "3" || mRoomInfoResp!!.room_info.type_id == "8") &&
mRoomInfoResp!!.room_info.label_id == "2" mRoomInfoResp!!.room_info.label_id == "2"
) { ) {
for (roomPitBean in mRoomInfoResp!!.song_pit_list) { for (roomPitBean in mRoomInfoResp!!.song_pit_list) {
AgoraManager.getInstance(this@RoomActivity).ClientRole(false) AgoraManager.getInstance().ClientRole(false)
ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding) ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding)
mBinding?.rlMic?.visibility = View.GONE mBinding?.rlMic?.visibility = View.GONE
} }
if (mRoomInfoResp!!.song_user_info != null && mRoomInfoResp!!.song_user_info.user_id != null) { if (mRoomInfoResp!!.song_user_info != null && mRoomInfoResp!!.song_user_info.user_id != null) {
if (mRoomInfoResp!!.song_user_info.user_id == SpUtil.getUserId().toString() + "") { if (mRoomInfoResp!!.song_user_info.user_id == SpUtil.getUserId().toString() + "") {
AgoraManager.getInstance(this@RoomActivity).ClientRole(false) AgoraManager.getInstance().ClientRole(false)
ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding) ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding)
mBinding?.rlMic?.visibility = View.GONE mBinding?.rlMic?.visibility = View.GONE
} }
@@ -1719,7 +1732,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
if (userId == currentUserId && "9" == pitNumber) { if (userId == currentUserId && "9" == pitNumber) {
if (customMusicFloatingView != null) { if (customMusicFloatingView != null) {
customMusicFloatingView!!.destroy() customMusicFloatingView!!.destroy()
AgoraManager.getInstance(this@RoomActivity).desMusic() AgoraManager.getInstance().desMusic()
isMusic = false isMusic = false
} }
mBinding!!.roomTop.rl.visibility = View.GONE mBinding!!.roomTop.rl.visibility = View.GONE
@@ -1844,12 +1857,134 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
} }
private fun handleMsgType1001(messageEvent: RoomMessageEvent) { // private fun handleMsgType1001(messageEvent: RoomMessageEvent) {
if (messageEvent.text.fromUserInfo.user_id != SpUtil.getUserId()) { // if (messageEvent.text.fromUserInfo.user_id != SpUtil.getUserId()) {
number++ // number++
// }
// mBinding!!.roomTop.tvNum.text = number.toString()
// }
private var currentMqttView: View? = null // 正在播放
var decorView: ViewGroup? = null //礼物的
private fun handleMsgType1001(roomMessageEvent: RoomMessageEvent) {
if (roomMessageEvent.text.fromUserInfo.enter_image?.isNotEmpty() == true){
showFloatingMessage(roomMessageEvent.text.fromUserInfo)
} }
mBinding!!.roomTop.tvNum.text = number.toString() // number++
// mBinding!!.roomTop.tvNum.text = number.toString() + ""
} }
private fun showFloatingMessage(userInfo: UserInfo) {
try {
// 清理之前的视图(如果存在)
if ( currentMqttView?.getParent() != null) {
val parent = currentMqttView?.getParent() as ViewGroup
parent.removeView(currentMqttView)
}
if (decorView == null) {
decorView = getWindow().getDecorView() as ViewGroup?
}
currentMqttView = LayoutInflater.from(this).inflate(R.layout.item_noble_piaoping, null)
val layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
layoutParams.topMargin = DisplayUtil.dip2px(this, 300f)
layoutParams.gravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL
currentMqttView?.setLayoutParams(layoutParams)
decorView?.addView(currentMqttView)
currentMqttView?.let { updateFloatingViewData(it, userInfo) }
currentMqttView?.let {
resetAndStartMqttAnimation(it, Runnable {
// 清理当前视图
if (currentMqttView?.getParent() != null) {
val parent = currentMqttView?.getParent() as ViewGroup
parent.removeView(currentMqttView)
}
currentMqttView = null
})
}
} catch (e: java.lang.Exception) {
}
}
private fun resetAndStartMqttAnimation(view: View, onAnimationEnd: Runnable) {
try {
val screenWidth = getScreenWidth()
// 设置初始位置:在屏幕右侧外部(完全不可见)
view.setTranslationX(screenWidth.toFloat())
val enterAnim = TranslateAnimation(
Animation.ABSOLUTE, screenWidth.toFloat(),
Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(),
Animation.ABSOLUTE, 0f,
Animation.ABSOLUTE, 0f
)
enterAnim.setDuration(1500)
enterAnim.setInterpolator(DecelerateInterpolator(2.0f))
enterAnim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
// 停留后退出
CommonAppContext.postDelayed(Runnable {
val exitAnim = TranslateAnimation(
Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(),
Animation.ABSOLUTE, -screenWidth.toFloat(),
Animation.ABSOLUTE, 0f,
Animation.ABSOLUTE, 0f
)
exitAnim.setDuration(3000)
exitAnim.setInterpolator(DecelerateInterpolator(2f))
exitAnim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
// 移除视图并处理下一个
onAnimationEnd.run()
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
view.startAnimation(exitAnim)
}, 5000) // 停留1秒
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
view.startAnimation(enterAnim)
} catch (e: java.lang.Exception) {
LogUtils.e("MQTT动画启动失败", e)
onAnimationEnd.run()
}
}
private fun getScreenWidth(): Int {
val displayMetrics = DisplayMetrics()
if (getWindowManager() != null) {
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics)
return displayMetrics.widthPixels
}
return getResources().getDisplayMetrics().widthPixels
}
private fun updateFloatingViewData(view: View, userInfo: UserInfo) {
val textView = view.findViewById<TextView?>(R.id.tv_name)
val im_bj = view.findViewById<ImageView?>(R.id.im_bj)
textView.text = userInfo.enter_text
ImageUtils.loadHeadCC(userInfo.enter_image, im_bj)
}
private fun handleMsgType1002(messageEvent: RoomMessageEvent, text: T?) { private fun handleMsgType1002(messageEvent: RoomMessageEvent, text: T?) {
number-- number--
@@ -1965,7 +2100,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
MessageListenerSingleton.getInstance().joinGroup(pendingRoomId) MessageListenerSingleton.getInstance().joinGroup(pendingRoomId)
MvpPre!!.getRoomIn(pendingRoomId, "") MvpPre!!.getRoomIn(pendingRoomId, "")
lastSwitchedRoomId = pendingRoomId!! lastSwitchedRoomId = pendingRoomId!!
AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = AgoraManager.getInstance().lastRoomId =
messageEvent.roomId messageEvent.roomId
} }
} }
@@ -2057,9 +2192,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
val parsedText: RoomMessageEvent.text = val parsedText: RoomMessageEvent.text =
GsonUtils.fromJson(text, RoomMessageEvent.text::class.java) GsonUtils.fromJson(text, RoomMessageEvent.text::class.java)
if (parsedText.is_mute == 1) { if (parsedText.is_mute == 1) {
AgoraManagerEx.getInstance(this).muteLocalAudioStreamEx(true) AgoraManagerEx.getInstance().muteLocalAudioStreamEx(true)
} else { } else {
AgoraManagerEx.getInstance(this).muteLocalAudioStreamEx(false) AgoraManagerEx.getInstance().muteLocalAudioStreamEx(false)
} }
} catch (e: Exception) { } catch (e: Exception) {
// Handle exception // Handle exception
@@ -2098,7 +2233,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
private fun handleMsgType126(messageEvent: RoomMessageEvent, text: T?) { private fun handleMsgType126(messageEvent: RoomMessageEvent, text: T?) {
if (text == null) return if (text == null) return
AgoraManager.getInstance(this) AgoraManager.getInstance()
.setLocalAudioEnabled(false, text.fromUserInfo.user_id.toString() + "") .setLocalAudioEnabled(false, text.fromUserInfo.user_id.toString() + "")
} }
@@ -2291,7 +2426,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
mBinding!!.imVoive.setImageResource(com.xscm.moduleutil.R.mipmap.room_voice_kg) mBinding!!.imVoive.setImageResource(com.xscm.moduleutil.R.mipmap.room_voice_kg)
voive = true voive = true
} }
AgoraManager.getInstance(this).muteSpeaker(!voive) AgoraManager.getInstance().muteSpeaker(!voive)
} else if (id == R.id.rl_more) { //点击PK } else if (id == R.id.rl_more) { //点击PK
val fragment = RoomPkDialogFragment.newInstance( val fragment = RoomPkDialogFragment.newInstance(
roomId, roomId,
@@ -2414,7 +2549,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
CommonAppContext.getInstance().isPlaying = false CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false CommonAppContext.getInstance().isShow = false
QXGiftPlayerManager.getInstance(this).destroyEffectSvga() QXGiftPlayerManager.getInstance(this).destroyEffectSvga()
AgoraManager.getInstance(this).cleanup() AgoraManager.getInstance().cleanup()
MyRoomSingleton.getInstance().onExitRoom() MyRoomSingleton.getInstance().onExitRoom()
MessageListenerSingleton.quitGroup(roomId) MessageListenerSingleton.quitGroup(roomId)
@@ -2518,15 +2653,15 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun switchMic(type: Int) { fun switchMic(type: Int) {
if (type == 1) { if (type == 1) {
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone) mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone)
AgoraManager.getInstance(this) AgoraManager.getInstance()
.setLocalAudioEnabled(true, SpUtil.getUserId().toString() + "") .setLocalAudioEnabled(true, SpUtil.getUserId().toString() + "")
isSwith = false isSwith = false
AgoraManager.getInstance(this).muteLocalAudioStream(false) AgoraManager.getInstance().muteLocalAudioStream(false)
AgoraManager.getInstance(this).ClientRole(true) AgoraManager.getInstance().ClientRole(true)
CommonAppContext.getInstance().isMai = true CommonAppContext.getInstance().isMai = true
} else { } else {
mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off) mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off)
AgoraManager.getInstance(this) AgoraManager.getInstance()
.setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "") .setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "")
isSwith = true isSwith = true
isMute(1) isMute(1)
@@ -2611,7 +2746,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
val typeId = mRoomInfoResp!!.room_info.type_id val typeId = mRoomInfoResp!!.room_info.type_id
val labelId = mRoomInfoResp!!.room_info.label_id val labelId = mRoomInfoResp!!.room_info.label_id
val userPitNumber = mRoomInfoResp!!.user_info.pit_number val userPitNumber = mRoomInfoResp?.user_info?.pit_number!!
// 情况1: typeId = 6 时,只显示消息按钮 // 情况1: typeId = 6 时,只显示消息按钮
if ("6" == typeId) { if ("6" == typeId) {
@@ -2938,9 +3073,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
// mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.collect)); // mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.collect));
} }
if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") { if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") {
AgoraManager.getInstance(this).isBjMusic = false AgoraManager.getInstance().isBjMusic = false
} else { } else {
AgoraManager.getInstance(this).isBjMusic = true AgoraManager.getInstance().isBjMusic = true
} }
AgoraManager.stopMuisc() AgoraManager.stopMuisc()
@@ -3016,7 +3151,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
ivSoundEffects(false) ivSoundEffects(false)
} }
// } // }
if (mRoomInfoResp!!.user_info.user_id == SpUtil.getUserId() if (mRoomInfoResp?.user_info?.user_id == SpUtil.getUserId()
&& mRoomInfoResp!!.user_info.pit_number == 9 && mRoomInfoResp!!.user_info.pit_number == 9
&& mRoomInfoResp!!.room_info.type_id != "2" && mRoomInfoResp!!.room_info.type_id != "2"
&& mRoomInfoResp!!.room_info.type_id != "6" && mRoomInfoResp!!.room_info.type_id != "6"
@@ -3162,13 +3297,13 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
*/ */
fun initializeAudio() { fun initializeAudio() {
if (mRoomUserBean!!.pit_number != 0) { if (mRoomUserBean!!.pit_number != 0) {
AgoraManager.getInstance(this).ClientRole(true) AgoraManager.getInstance().ClientRole(true)
AgoraManager.getInstance(this).muteLocalAudioStream(false) AgoraManager.getInstance().muteLocalAudioStream(false)
} else { } else {
AgoraManager.getInstance(this).ClientRole(false) AgoraManager.getInstance().ClientRole(false)
AgoraManager.getInstance(this).muteLocalAudioStream(true) AgoraManager.getInstance().muteLocalAudioStream(true)
} }
AgoraManager.getInstance(this) AgoraManager.getInstance()
.setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "") .setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "")
} }
@@ -3385,7 +3520,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
customMusicFloatingView!!.setOnItemClickListener(object : OnMusicItemClickListener { customMusicFloatingView!!.setOnItemClickListener(object : OnMusicItemClickListener {
override fun onMinimize() { override fun onMinimize() {
customMusicFloatingView!!.destroy() customMusicFloatingView!!.destroy()
AgoraManager.getInstance(this@RoomActivity).desMusic() AgoraManager.getInstance().desMusic()
isMusic = false isMusic = false
} }
@@ -3398,20 +3533,20 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
override fun onPause() { override fun onPause() {
// ToastUtils.showShort("暂停播放"); // ToastUtils.showShort("暂停播放");
// 调用播放器或通知 MusicView // 调用播放器或通知 MusicView
AgoraManager.getInstance(this@RoomActivity).pauseMusic() AgoraManager.getInstance().pauseMusic()
} }
override fun onResume() { override fun onResume() {
// ToastUtils.showShort("恢复播放"); // ToastUtils.showShort("恢复播放");
// 调用播放器或通知 MusicView // 调用播放器或通知 MusicView
AgoraManager.getInstance(this@RoomActivity).resumeMusic() AgoraManager.getInstance().resumeMusic()
} }
override fun onNext() { override fun onNext() {
// ToastUtils.showShort("下一首"); // ToastUtils.showShort("下一首");
// 切换歌曲 // 切换歌曲
// List<Music> musicSongBeans = AgoraManager.getInstance(RoomActivity.this).getMusicList(); // List<Music> musicSongBeans = AgoraManager.getInstance(RoomActivity.this).getMusicList();
AgoraManager.nextSong() AgoraManager.getInstance().nextSong()
} }
}) })
// customMusicFloatingView.initView(); // customMusicFloatingView.initView();
@@ -3484,8 +3619,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
// 恢复音频状态 // 恢复音频状态
if (AgoraManager.getInstance(this) != null) { if (AgoraManager.getInstance() != null) {
AgoraManager.getInstance(this).resumeMusic() AgoraManager.getInstance().resumeMusic()
} }
// 清除最小化状态标志 // 清除最小化状态标志
@@ -3732,7 +3867,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun quit() { fun quit() {
CommonAppContext.getInstance().isPlaying = false CommonAppContext.getInstance().isPlaying = false
CommonAppContext.getInstance().isShow = false CommonAppContext.getInstance().isShow = false
AgoraManager.getInstance(this).cleanup() AgoraManager.getInstance().cleanup()
MyRoomSingleton.getInstance().onExitRoom() MyRoomSingleton.getInstance().onExitRoom()
} }
@@ -3743,10 +3878,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun jiaR() { fun jiaR() {
LogUtils.e( LogUtils.e(
"@@@", "@@@",
"上一个房间的roonid" + AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId "上一个房间的roonid" + AgoraManager.getInstance().lastRoomId
) )
MvpPre?.getRoomIn(AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId, "") MvpPre?.getRoomIn(AgoraManager.getInstance().lastRoomId, "")
AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = "" AgoraManager.getInstance().lastRoomId = ""
} }
override fun userGuanzSuccess(s: String) { override fun userGuanzSuccess(s: String) {
@@ -3844,6 +3979,9 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
GiftDisplayManager.getInstance().clearAll() GiftDisplayManager.getInstance().clearAll()
mBinding!!.giftContainer.removeAllViews() mBinding!!.giftContainer.removeAllViews()
CommonAppContext.getInstance().isMai = false
CommonAppContext.getInstance().playId = null
// 确保父类的 onDestroy 被调用 // 确保父类的 onDestroy 被调用
super.finish() super.finish()
} }
@@ -3880,8 +4018,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
// 6. 清理 Agora 资源 // 6. 清理 Agora 资源
// if (AgoraManager.getInstance(this) != null) { // if (AgoraManager.getInstance() != null) {
// AgoraManager.getInstance(this).cleanup(); // AgoraManager.getInstance().cleanup();
// } // }
// 清理所有弹框 // 清理所有弹框
dismissAllDialogs() dismissAllDialogs()

View File

@@ -90,6 +90,11 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
@Override @Override
public void onDestroyView() { public void onDestroyView() {
onFragmentShowDestroy(); onFragmentShowDestroy();
// 清理消息队列,避免内存泄漏
synchronized (queueLock) {
messageQueue.clear();
messageHandler.removeCallbacksAndMessages(null);
}
super.onDestroyView(); super.onDestroyView();
} }
@@ -438,34 +443,37 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
} }
// 使用Handler将消息处理放到消息队列中避免阻塞 // 使用Handler将消息处理放到消息队列中避免阻塞
if (messageHandler.hasMessages(MSG_HANDLE_ROOM_MESSAGE)) { synchronized (queueLock) {
// 如果队列中已有待处理消息,将当前消息加入队列 if (messageHandler.hasMessages(MSG_HANDLE_ROOM_MESSAGE)) {
Message msg = Message.obtain(); // 如果队列中已有待处理消息,将当前消息加入队列
msg.what = MSG_HANDLE_ROOM_MESSAGE; messageQueue.add(message);
msg.obj = message; } else {
messageHandler.sendMessage(msg); // 立即处理第一条消息
} else { processRoomMessage(message);
// 立即处理第一条消息 // 标记有待处理消息
processRoomMessage(message); messageHandler.sendEmptyMessageDelayed(MSG_HANDLE_ROOM_MESSAGE, 100);
// 标记有待处理消息 }
messageHandler.sendEmptyMessageDelayed(MSG_HANDLE_ROOM_MESSAGE, 100);
} }
} }
private static final int MSG_HANDLE_ROOM_MESSAGE = 1001; private static final int MSG_HANDLE_ROOM_MESSAGE = 1001;
private final Handler messageHandler = new Handler(Looper.getMainLooper()) { // 将messageQueue移到类级别并添加同步控制
private List<RoomMessageEvent> messageQueue = new ArrayList<>(); private final List<RoomMessageEvent> messageQueue = new ArrayList<>();
private final Object queueLock = new Object(); // 用于同步的锁对象
private final Handler messageHandler = new Handler(Looper.getMainLooper()) {
@Override @Override
public void handleMessage(@NonNull Message msg) { public void handleMessage(@NonNull Message msg) {
if (msg.what == MSG_HANDLE_ROOM_MESSAGE) { if (msg.what == MSG_HANDLE_ROOM_MESSAGE) {
if (!messageQueue.isEmpty()) { synchronized (queueLock) {
// 批量处理消息 if (!messageQueue.isEmpty()) {
processBatchMessages(messageQueue); // 批量处理消息
messageQueue.clear(); processBatchMessages(new ArrayList<>(messageQueue)); // 创建副本避免并发修改
} else if (msg.obj instanceof RoomMessageEvent) { messageQueue.clear();
// 处理单条消息 } else if (msg.obj instanceof RoomMessageEvent) {
processRoomMessage((RoomMessageEvent) msg.obj); // 处理单条消息
processRoomMessage((RoomMessageEvent) msg.obj);
}
} }
} }
} }

View File

@@ -899,7 +899,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
if (getActivity() instanceof RoomActivity) { if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).setrlMic(false); ((RoomActivity) getActivity()).setrlMic(false);
((RoomActivity) getActivity()).ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding); ((RoomActivity) getActivity()).ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding);
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(false, SpUtil.getUserId() + ""); AgoraManager.getInstance().setLocalAudioEnabled(false, SpUtil.getUserId() + "");
} }
} else { } else {
if (getActivity() instanceof RoomActivity) { if (getActivity() instanceof RoomActivity) {

View File

@@ -131,10 +131,10 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
@Override @Override
protected void initData() { protected void initData() {
boolean b = AgoraManager.getInstance(getContext()).isBjMusic(); boolean b = AgoraManager.getInstance().isBjMusic();
if (b) { if (b) {
List<MusicSongBean> musicSongBeans = new ArrayList<>(); List<MusicSongBean> musicSongBeans = new ArrayList<>();
List<Music> music = AgoraManager.getInstance(getContext()).getMusicList(); List<Music> music = AgoraManager.getInstance().getMusicList();
if (music != null && music.size() > 0) { if (music != null && music.size() > 0) {
for (int i = 0; i < music.size(); i++) { for (int i = 0; i < music.size(); i++) {
MusicSongBean musicSongBean = new MusicSongBean(); MusicSongBean musicSongBean = new MusicSongBean();

View File

@@ -131,7 +131,7 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
input = s.toString(); input = s.toString();
SpUtil.setMusicName( input); SpUtil.setMusicName( input);
AgoraManager.getInstance(getContext()).searchMusic(input, 1); AgoraManager.getInstance().searchMusic(input, 1);
} }
}); });
} }
@@ -142,13 +142,13 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
@Override @Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) { public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++; page++;
AgoraManager.getInstance(getContext()).searchMusic(mBinding.editQuery.getText().toString(), page); AgoraManager.getInstance().searchMusic(mBinding.editQuery.getText().toString(), page);
} }
@Override @Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) { public void onRefresh(@NonNull RefreshLayout refreshLayout) {
page = 1; page = 1;
AgoraManager.getInstance(getContext()).searchMusic(mBinding.editQuery.getText().toString(), page); AgoraManager.getInstance().searchMusic(mBinding.editQuery.getText().toString(), page);
} }
}); });
@@ -170,18 +170,18 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
if (status==1) { if (status==1) {
MvpPre.song(roomId, SpUtil.getUserId() + "", item.getSongCode() + "", item.getName(), item.getSinger(), item.getPoster(), String.valueOf(item.getDurationS())); MvpPre.song(roomId, SpUtil.getUserId() + "", item.getSongCode() + "", item.getName(), item.getSinger(), item.getPoster(), String.valueOf(item.getDurationS()));
} else { } else {
if (AgoraManager.getInstance(getContext()).getMusicList()==null) { if (AgoraManager.getInstance().getMusicList()==null) {
// AgoraManager.getInstance(getContext()).isPreload2(item.getSongCode(), 1); // AgoraManager.getInstance().isPreload(item.getSongCode(), 1);
List<Music> music = new ArrayList<>(); List<Music> music = new ArrayList<>();
music.add(item); music.add(item);
AgoraManager.getInstance(getContext()).setMusicList(music); AgoraManager.getInstance().setMusicList(music);
EventBus.getDefault().post(item); EventBus.getDefault().post(item);
AgoraManager.getInstance(getContext()).nextSong(); AgoraManager.getInstance().nextSong();
} else { } else {
List<Music> music = AgoraManager.getInstance(getContext()).getMusicList(); List<Music> music = AgoraManager.getInstance().getMusicList();
music.add(item); music.add(item);
AgoraManager.getInstance(getContext()).setMusicList(music); AgoraManager.getInstance().setMusicList(music);
} }
} }

View File

@@ -252,7 +252,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
} else { } else {
isMicPlace = false; isMicPlace = false;
ToastUtils.show("将停止屏幕共享"); ToastUtils.show("将停止屏幕共享");
AgoraManager.getInstance(getActivity()).stopScreenCapture(); AgoraManager.getInstance().stopScreenCapture();
mBinding.im3.setImageResource(com.xscm.moduleutil.R.mipmap.gongxiang); mBinding.im3.setImageResource(com.xscm.moduleutil.R.mipmap.gongxiang);
CommonAppContext.getInstance().isMicPlace = false; CommonAppContext.getInstance().isMicPlace = false;
} }
@@ -282,17 +282,17 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
if (type == 1) { if (type == 1) {
mBinding.im1.setImageResource(com.xscm.moduleutil.R.mipmap.close_m); mBinding.im1.setImageResource(com.xscm.moduleutil.R.mipmap.close_m);
AgoraManager.getInstance(getActivity()).ClientRole(true); AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false); AgoraManager.getInstance().muteLocalAudioStream(false);
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(true,SpUtil.getUserId()+""); AgoraManager.getInstance().setLocalAudioEnabled(true,SpUtil.getUserId()+"");
isShow = false; isShow = false;
CommonAppContext.getInstance().isShowAg=false; CommonAppContext.getInstance().isShowAg=false;
} else { } else {
mBinding.im1.setImageResource(com.xscm.moduleutil.R.mipmap.op_m); mBinding.im1.setImageResource(com.xscm.moduleutil.R.mipmap.op_m);
AgoraManager.getInstance(getActivity()).ClientRole(true); AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true); AgoraManager.getInstance().muteLocalAudioStream(true);
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(false,SpUtil.getUserId()+""); AgoraManager.getInstance().setLocalAudioEnabled(false,SpUtil.getUserId()+"");
isShow = true; isShow = true;
CommonAppContext.getInstance().isShowAg=true; CommonAppContext.getInstance().isShowAg=true;
@@ -362,7 +362,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
// 调用退出房间方法 // 调用退出房间方法
if (label_id!=null && label_id.equals(LABEL_ID_MOVIE)){ if (label_id!=null && label_id.equals(LABEL_ID_MOVIE)){
MvpPre.quitRoom(roomId, SpUtil.getUserId() + ""); MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance(getActivity()).getLastRoomId()).navigation(); // ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance().getLastRoomId()).navigation();
return; return;
} }
if (roomInfoResp != null) { if (roomInfoResp != null) {
@@ -583,7 +583,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
((RoomActivity) getActivity()).quitRoom2(roomId); ((RoomActivity) getActivity()).quitRoom2(roomId);
if (label_id!=null && label_id.equals(LABEL_ID_MOVIE)){ if (label_id!=null && label_id.equals(LABEL_ID_MOVIE)){
((RoomActivity) getActivity()).jiaR(); ((RoomActivity) getActivity()).jiaR();
//// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance(getActivity()).getLastRoomId()).navigation(); //// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", AgoraManager.getInstance().getLastRoomId()).navigation();
return; return;
}else { }else {
((RoomActivity) getActivity()).performExitRoom(1); ((RoomActivity) getActivity()).performExitRoom(1);
@@ -616,8 +616,8 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
private void joinChannel() { private void joinChannel() {
AgoraManager.getInstance(getActivity()).updateChannelMediaOptions(); AgoraManager.getInstance().updateChannelMediaOptions();
AgoraManager.getInstance(getActivity()).post(); AgoraManager.getInstance().post();
} }
/** /**

View File

@@ -418,9 +418,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (mRoomInfoResp.getUser_info().getPit_number() != 0) { if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
mRoomActivity.switchMic(CommonAppContext.getInstance().isMai?1:2); mRoomActivity.switchMic(CommonAppContext.getInstance().isMai?1:2);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(CommonAppContext.getInstance().isMai); AgoraManager.getInstance().muteLocalAudioStream(CommonAppContext.getInstance().isMai);
} else { } else {
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true); AgoraManager.getInstance().muteLocalAudioStream(true);
} }
} }
@@ -461,7 +461,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (existingFragment != null) { if (existingFragment != null) {
transaction.show(existingFragment); transaction.show(existingFragment);
} else { } else {
callSpecificDestroyMethod(newFragment); // callSpecificDestroyMethod(newFragment);
transaction.add(containerId, newFragment, tag); transaction.add(containerId, newFragment, tag);
} }
transaction.commitAllowingStateLoss(); transaction.commitAllowingStateLoss();
@@ -765,12 +765,12 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (getActivity() instanceof RoomActivity) { if (getActivity() instanceof RoomActivity) {
RoomActivity roomActivity = (RoomActivity) getActivity(); RoomActivity roomActivity = (RoomActivity) getActivity();
if (!haveMe) { if (!haveMe) {
AgoraManager.getInstance(getContext()).ClientRole(false); AgoraManager.getInstance().ClientRole(false);
roomActivity.setrlMic(false); roomActivity.setrlMic(false);
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, SpUtil.getUserId() + ""); AgoraManager.getInstance().setLocalAudioEnabled(false, SpUtil.getUserId() + "");
} else { } else {
roomActivity.setrlMic(true); roomActivity.setrlMic(true);
if (AgoraManager.getInstance(getContext()).isLocalAudioEnabled()) { if (AgoraManager.getInstance().isLocalAudioEnabled()) {
roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone); roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone);
} else { } else {
// roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone_off); // roomActivity.ivMic(com.xscm.moduleutil.R.mipmap.room_microphone_off);
@@ -779,9 +779,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
} else { } else {
if (!user_id.equals(SpUtil.getUserId() + "") && getActivity() instanceof RoomActivity) { if (!user_id.equals(SpUtil.getUserId() + "") && getActivity() instanceof RoomActivity) {
AgoraManager.getInstance(getContext()).ClientRole(false); AgoraManager.getInstance().ClientRole(false);
((RoomActivity) getActivity()).setrlMic(false); ((RoomActivity) getActivity()).setrlMic(false);
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false, SpUtil.getUserId() + ""); AgoraManager.getInstance().setLocalAudioEnabled(false, SpUtil.getUserId() + "");
} }
} }
} }

View File

@@ -126,10 +126,10 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
did = roomInfoResp.getSong_user_info().getDid(); did = roomInfoResp.getSong_user_info().getDid();
if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) { if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) {
setBz(); setBz();
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()), 1); AgoraManager.getInstance().isPreload(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()), 1);
} else { } else {
if (AgoraManager.getInstance(getActivity()).isOnJoin()) { if (AgoraManager.getInstance().isOnJoin()) {
AgoraManager.getInstance(getActivity()).loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code())); AgoraManager.getInstance().loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()));
} }
} }
musicSongBean = roomInfoResp.getSong_user_info(); musicSongBean = roomInfoResp.getSong_user_info();
@@ -200,12 +200,12 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
private void setBz(){ private void setBz(){
if (volumeManager.getBz(SpUtil.getUserId()+"")){ if (volumeManager.getBz(SpUtil.getUserId()+"")){
AgoraManager.getInstance(getActivity()).selectAudioTrack(0); AgoraManager.getInstance().selectAudioTrack(0);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_on); mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_on);
mBinding.tvBz.setText("原唱"); mBinding.tvBz.setText("原唱");
isRotate = false; isRotate = false;
}else { }else {
AgoraManager.getInstance(getActivity()).selectAudioTrack(1); AgoraManager.getInstance().selectAudioTrack(1);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_off); mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_off);
mBinding.tvBz.setText("伴奏"); mBinding.tvBz.setText("伴奏");
isRotate = true; isRotate = true;
@@ -218,8 +218,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
int[] volumes = volumeManager.getUserVolumes(SpUtil.getUserId()+""); int[] volumes = volumeManager.getUserVolumes(SpUtil.getUserId()+"");
int musicVolume = volumes[0]; int musicVolume = volumes[0];
int playoutVolume = volumes[1]; int playoutVolume = volumes[1];
AgoraManager.getInstance(getContext()).setMusicVolume(musicVolume); // 使用原始值(0-200 AgoraManager.getInstance().setMusicVolume(musicVolume); // 使用原始值(0-200
AgoraManager.getInstance(getContext()).setPlayoutVolume(playoutVolume); AgoraManager.getInstance().setPlayoutVolume(playoutVolume);
} }
@Override @Override
@@ -515,7 +515,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
ToastUtils.showShort("暂时没有歌曲"); ToastUtils.showShort("暂时没有歌曲");
return; return;
} }
AgoraManager.getInstance(getActivity()).stopMuisc(); AgoraManager.getInstance().stopMuisc();
MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did); MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did);
} else if (id == R.id.ll_ds) { } else if (id == R.id.ll_ds) {
if (mBinding.muYc.pitBean.getUser_id() != null && !mBinding.muYc.pitBean.getUser_id().equals("")) { if (mBinding.muYc.pitBean.getUser_id() != null && !mBinding.muYc.pitBean.getUser_id().equals("")) {
@@ -530,13 +530,13 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
} }
} else if (id == R.id.ll_bz) { } else if (id == R.id.ll_bz) {
if (isRotate) { if (isRotate) {
AgoraManager.getInstance(getActivity()).selectAudioTrack(0); AgoraManager.getInstance().selectAudioTrack(0);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_on); mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_on);
mBinding.tvBz.setText("原唱"); mBinding.tvBz.setText("原唱");
isRotate = false; isRotate = false;
volumeManager.saveBz(SpUtil.getUserId()+"",true); volumeManager.saveBz(SpUtil.getUserId()+"",true);
} else { } else {
AgoraManager.getInstance(getActivity()).selectAudioTrack(1); AgoraManager.getInstance().selectAudioTrack(1);
mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_off); mBinding.imBz.setImageResource(com.xscm.moduleutil.R.mipmap.accompany_off);
mBinding.tvBz.setText("伴奏"); mBinding.tvBz.setText("伴奏");
isRotate = true; isRotate = true;
@@ -607,7 +607,7 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
position += 1000; position += 1000;
double duration = Math.ceil(position / 1000); double duration = Math.ceil(position / 1000);
if (duration >= Double.parseDouble(musicSongBean.getDuration())) { if (duration >= Double.parseDouble(musicSongBean.getDuration())) {
AgoraManager.getInstance(getActivity()).stopMuisc(); AgoraManager.getInstance().stopMuisc();
MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did); MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did);
} }
} }
@@ -647,17 +647,17 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
roomInfoResp.setSong_user_info(musicSongBean); roomInfoResp.setSong_user_info(musicSongBean);
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) { if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
AgoraManager.getInstance(getActivity()); AgoraManager.getInstance();
AgoraManager.stopMuisc(); AgoraManager.stopMuisc();
LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code()); LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code());
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1); AgoraManager.getInstance().isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
setAgorVolumes(); setAgorVolumes();
} else { } else {
volumeManager.saveBz(SpUtil.getUserId()+"",true); volumeManager.saveBz(SpUtil.getUserId()+"",true);
volumeManager.clearCurrentVolumes(); volumeManager.clearCurrentVolumes();
if (AgoraManager.getInstance(getActivity()).isOnJoin()) { if (AgoraManager.getInstance().isOnJoin()) {
AgoraManager.getInstance(getActivity()).loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code())); AgoraManager.getInstance().loadLrc(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()));
} }
} }
if (getActivity() instanceof RoomActivity) { if (getActivity() instanceof RoomActivity) {
@@ -724,8 +724,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
} }
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) { if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true; b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true); AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false); AgoraManager.getInstance().muteLocalAudioStream(false);
} else { } else {
b = false; b = false;
} }
@@ -766,8 +766,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
} }
if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) { if (SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
b = true; b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false); AgoraManager.getInstance().ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true); AgoraManager.getInstance().muteLocalAudioStream(true);
} else { } else {
b = false; b = false;
} }

View File

@@ -554,12 +554,12 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone); mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone);
is_mute = 0; is_mute = 0;
aBoolean = false; aBoolean = false;
AgoraManagerEx.getInstance(getActivity()).muteAllRemoteAudioStreamsExUserId(false); AgoraManager.getInstance().muteAllRemoteAudioStreamsExUserId(false);
} else { } else {
mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off); mBinding.imMkf.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off);
is_mute = 1; is_mute = 1;
aBoolean = true; aBoolean = true;
AgoraManagerEx.getInstance(getActivity()).muteAllRemoteAudioStreamsExUserId(true); AgoraManager.getInstance().muteAllRemoteAudioStreamsExUserId(true);
} }
RoomMessageEvent.text text = new RoomMessageEvent.text(); RoomMessageEvent.text text = new RoomMessageEvent.text();
text.setIs_mute(is_mute); text.setIs_mute(is_mute);
@@ -662,7 +662,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
LogUtils.e("pk_info", "" + roomInfoRespPk.getRoom_info().getRoom_id()); LogUtils.e("pk_info", "" + roomInfoRespPk.getRoom_info().getRoom_id());
LogUtils.e("pk_info2", "" + roomInfoResp.getRoom_info().getRoom_id()); LogUtils.e("pk_info2", "" + roomInfoResp.getRoom_info().getRoom_id());
AgoraManagerEx.getInstance(CommonAppContext.getInstance()) AgoraManagerEx.getInstance()
.joinChannelEx(pkSwTokenBean.getAgora_token(), roomInfoRespPk.getRoom_info().getRoom_id(), pkUserId); .joinChannelEx(pkSwTokenBean.getAgora_token(), roomInfoRespPk.getRoom_info().getRoom_id(), pkUserId);
} }
@@ -1075,6 +1075,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
pitBean.setSex(message.getText().getFromUserInfo().getSex() + ""); pitBean.setSex(message.getText().getFromUserInfo().getSex() + "");
pitBean.setCharm(message.getText().getFromUserInfo().getCharm()); pitBean.setCharm(message.getText().getFromUserInfo().getCharm());
pitBean.setDress(message.getText().getFromUserInfo().getDress()); pitBean.setDress(message.getText().getFromUserInfo().getDress());
pitBean.setMic_cycle(message.getText().getFromUserInfo().getMic_cycle()!=null?message.getText().getFromUserInfo().getMic_cycle():"");
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean); roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) { if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number())); wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
@@ -1088,8 +1089,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 通知父 Fragment // 通知父 Fragment
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) { if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true; b = true;
AgoraManager.getInstance(getActivity()).ClientRole(true); AgoraManager.getInstance().ClientRole(true);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false); AgoraManager.getInstance().muteLocalAudioStream(false);
} else { } else {
b = false; b = false;
} }
@@ -1108,6 +1109,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
pitBean.setSex(""); pitBean.setSex("");
pitBean.setCharm(""); pitBean.setCharm("");
pitBean.setDress(""); pitBean.setDress("");
pitBean.setMic_cycle("");
roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean); roomInfoResp.getRoom_info().getPit_list().set(Integer.parseInt(message.getText().getPit_number()) - 1, pitBean);
if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) { if (roomInfoRespPk == null || roomInfoRespPk.getPk_info() == null) {
wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number())); wheatLayoutSingManager.updateSingleWheat(pitBean, Integer.parseInt(message.getText().getPit_number()));
@@ -1120,8 +1122,8 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
} }
if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) { if (SpUtil.getUserId() == message.getText().getFromUserInfo().getUser_id()) {
b = true; b = true;
AgoraManager.getInstance(getActivity()).ClientRole(false); AgoraManager.getInstance().ClientRole(false);
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true); AgoraManager.getInstance().muteLocalAudioStream(true);
} else { } else {
b = false; b = false;
} }
@@ -1218,7 +1220,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
//释放定时器 //释放定时器
releaseCountDownTimer(); releaseCountDownTimer();
if (roomInfoRespPk.getRoom_info() != null && roomInfoRespPk.getRoom_info().getRoom_id() != null) { if (roomInfoRespPk.getRoom_info() != null && roomInfoRespPk.getRoom_info().getRoom_id() != null) {
AgoraManagerEx.getInstance(getContext()).leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId()); AgoraManagerEx.getInstance().leaveChannelEx(roomInfoRespPk.getRoom_info().getRoom_id(), SpUtil.getUserId());
} }
MvpPre.postRoomInfo(roomId, "0", 2); MvpPre.postRoomInfo(roomId, "0", 2);
mBinding.imStart2.setVisibility(GONE); mBinding.imStart2.setVisibility(GONE);
@@ -1428,8 +1430,13 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
} }
releaseCountDownTimer(); releaseCountDownTimer();
var rootContainer = WheatLayoutSingManager.Companion.getInstance().getRootContainer(); // 添加空值检查
flexboxLayout.removeView(rootContainer); if (flexboxLayout != null) {
var rootContainer = WheatLayoutSingManager.Companion.getInstance().getRootContainer();
if (flexboxLayout.indexOfChild(rootContainer) >= 0) {
flexboxLayout.removeView(rootContainer);
}
}
if (wheatLayoutManager1 != null) { if (wheatLayoutManager1 != null) {
wheatLayoutManager1.clear(); wheatLayoutManager1.clear();
@@ -1437,12 +1444,20 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
if (wheatLayoutManager2 != null) { if (wheatLayoutManager2 != null) {
wheatLayoutManager2.clear(); wheatLayoutManager2.clear();
} }
mBinding.flexboxLayout.removeAllViews();
mBinding.flexboxLayout2.removeAllViews(); // 添加对 mBinding 的空值检查
if (mBinding != null) {
if (mBinding.flexboxLayout != null) {
mBinding.flexboxLayout.removeAllViews();
}
if (mBinding.flexboxLayout2 != null) {
mBinding.flexboxLayout2.removeAllViews();
}
}
if (MvpPre != null) { if (MvpPre != null) {
MvpPre.detachView(); MvpPre.detachView();
} }
} }
} }

View File

@@ -101,7 +101,7 @@ public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresente
@Override @Override
protected void initData() { protected void initData() {
MvpPre.getBanners(); MvpPre.getBanners("3");
MvpPre.getCarousels(1, 1, "10", "2", "");//顶部推荐 MvpPre.getCarousels(1, 1, "10", "2", "");//顶部推荐
MvpPre.getCategories(); MvpPre.getCategories();
} }

View File

@@ -95,7 +95,7 @@ public class HotListPresenter extends BasePresenter<HotListContacts.View> implem
LogUtils.e("token",token); LogUtils.e("token",token);
LogUtils.e("roomId:",roomId); LogUtils.e("roomId:",roomId);
// 初始化 Agora 并加入房间 // 初始化 Agora 并加入房间
AgoraManager.getInstance(getView().getSelfActivity()) AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs); .joinRoom(token, roomId, uid, enableMic,enableJs);
// 2. 加入房间 // 2. 加入房间
// rtcCore.joinRoom(token, roomId, uid, enableMic); // rtcCore.joinRoom(token, roomId, uid, enableMic);

View File

@@ -58,10 +58,10 @@ public class RoomPresenter extends BasePresenter<RoomContacts.View> implements R
LogUtils.e("roomId:",roomId); LogUtils.e("roomId:",roomId);
if (getView()!= null && getView().getSelfActivity()!=null){ if (getView()!= null && getView().getSelfActivity()!=null){
AgoraManager.getInstance(getView().getSelfActivity()) AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs); .joinRoom(token, roomId, uid, enableMic,enableJs);
}else { }else {
AgoraManager.getInstance(mContext.getApplicationContext()) AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic,enableJs); .joinRoom(token, roomId, uid, enableMic,enableJs);
} }
if (MvpRef==null){ if (MvpRef==null){

View File

@@ -55,11 +55,11 @@ public class VoiceCategoryPresenter extends BasePresenter<VoiceCategoryContacts.
public void getMediaRoom(String label_id) { public void getMediaRoom(String label_id) {
} }
public void getBanners() { public void getBanners(String s) {
// Type listType = new TypeToken<List<BannerModel>>() {}.getType(); // Type listType = new TypeToken<List<BannerModel>>() {}.getType();
// List<BannerModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType); // List<BannerModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType);
// MvpRef.get().setBanners(restoredRoomModels); // MvpRef.get().setBanners(restoredRoomModels);
api.getBanners(new BaseObserver<List<BannerModel>>() { api.getBanners(s,new BaseObserver<List<BannerModel>>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
addDisposable(d); addDisposable(d);
@@ -74,9 +74,8 @@ public class VoiceCategoryPresenter extends BasePresenter<VoiceCategoryContacts.
} }
}); });
} }
@Override @Override
public void getCarousels(int type, int page, String page_limit, String is_top, String label_id) { public void getCarousels(int type, int page, String page_limit, String is_top, String label_id) {
if (type == 1) {//这是获取顶部的推荐房间 if (type == 1) {//这是获取顶部的推荐房间

View File

@@ -1,11 +1,11 @@
package com.example.modulevocal.activity.ui.main; package com.xscm.modulemain.activity.user;
import static androidx.lifecycle.Transformations.map; import static androidx.lifecycle.Transformations.map;
import androidx.arch.core.util.Function;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModel;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;
import java.util.List; import java.util.List;

View File

@@ -1,30 +1,28 @@
package com.example.modulevocal.activity; package com.xscm.modulemain.activity.user.activity;
import android.annotation.SuppressLint;
import android.graphics.Color; import android.graphics.Color;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.ui.main.GiftWallConacts;
import com.example.modulevocal.activity.ui.main.GiftWallPresenter;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import androidx.viewpager.widget.ViewPager;
import com.example.modulevocal.activity.ui.main.SectionsPagerAdapter;
import com.example.modulevocal.databinding.ActivityGiftWallBinding;
import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayoutMediator;
import com.xscm.moduleutil.activity.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.moduleutil.bean.CombinedGiftBean; import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.GiftWallConacts;
import com.xscm.modulemain.activity.user.presenter.GiftWallPresenter;
import com.xscm.modulemain.adapter.SectionsGifPagerAdapter;
import com.xscm.modulemain.databinding.ActivityGiftWallBinding;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.bean.RoomTypeModel;
import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.utils.SpUtil;
/** /**
* 礼物墙 * 礼物墙
*/ */
public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, ActivityGiftWallBinding> implements GiftWallConacts.View { public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, ActivityGiftWallBinding> implements GiftWallConacts.View {
SectionsPagerAdapter sectionsPagerAdapter; SectionsGifPagerAdapter sectionsPagerAdapter;
@Override @Override
protected void initData() { protected void initData() {
@@ -35,7 +33,7 @@ public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, Activit
// 在获取到数据后调用此方法初始化 ViewPager // 在获取到数据后调用此方法初始化 ViewPager
private void setupViewPagerWithData(GiftUserWallBean data) { private void setupViewPagerWithData(GiftUserWallBean data) {
sectionsPagerAdapter = new SectionsPagerAdapter(this, data); sectionsPagerAdapter = new SectionsGifPagerAdapter(this, data);
ViewPager2 viewPager = mBinding.viewPager; ViewPager2 viewPager = mBinding.viewPager;
viewPager.setAdapter(sectionsPagerAdapter); viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = mBinding.tabs; TabLayout tabs = mBinding.tabs;

View File

@@ -1,4 +1,6 @@
package com.example.modulevocal.activity; package com.xscm.modulemain.activity.user.activity;
import static android.view.View.GONE;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
@@ -6,36 +8,31 @@ import android.graphics.LinearGradient;
import android.graphics.Shader; import android.graphics.Shader;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.widget.GridView; import android.widget.GridView;
import android.widget.TextView; import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.GridNobleAdapter; import com.xscm.modulemain.BaseMvpActivity;
import com.example.modulevocal.adapter.NobliityBannerAdapter; import com.xscm.modulemain.R;
import com.example.modulevocal.conacts.NobleTitleConacts; import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNobleDetailsBinding; import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.example.modulevocal.presenter.NobleTitlePresenter; import com.xscm.modulemain.adapter.GridNobleAdapter;
import com.xscm.moduleutil.activity.BaseMvpActivity; import com.xscm.modulemain.adapter.NobliityBannerAdapter;
import com.xscm.modulemain.databinding.ActivityNobleDetailsBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*; import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog; import com.xscm.moduleutil.bean.BindType;
import com.zhpan.bannerview.BannerViewPager; import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.zhpan.bannerview.constants.PageStyle; import com.zhpan.bannerview.constants.PageStyle;
import java.util.List; import java.util.List;
import static android.view.View.GONE;
/** /**
* @Description: 这是爵位详情方案 * @Description: 这是爵位详情方案
* @Author: qx * @Author: qx

View File

@@ -1,38 +1,43 @@
package com.example.modulevocal.activity; package com.xscm.modulemain.activity.user.activity;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.content.Intent; import android.content.Intent;
import android.graphics.Paint; import android.graphics.Paint;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.NoblePrivilegeAdapter;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNoblePaymentBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.hjq.toast.ToastUtils; import com.hjq.toast.ToastUtils;
import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory; import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.xscm.moduleutil.activity.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.xscm.modulemain.adapter.NoblePrivilegeAdapter;
import com.xscm.modulemain.databinding.ActivityNoblePaymentBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.adapter.PayMethodAdapter; import com.xscm.moduleutil.adapter.PayMethodAdapter;
import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*; import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.xscm.moduleutil.color.ThemeableDrawableUtils; import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.event.PayEvent; import com.xscm.moduleutil.event.PayEvent;
import com.xscm.moduleutil.utils.*; import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.widget.PaymentUtil; import com.xscm.moduleutil.widget.PaymentUtil;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import org.greenrobot.eventbus.ThreadMode;
@@ -43,9 +48,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
/** /**
* @Description: 这是爵位支付方案 * @Description: 这是爵位支付方案
* @Author: qx * @Author: qx

View File

@@ -1,53 +1,46 @@
package com.example.modulevocal.activity; package com.xscm.modulemain.activity.user.activity;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.graphics.LinearGradient; import android.graphics.LinearGradient;
import android.graphics.Shader; import android.graphics.Shader;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.widget.HorizontalScrollView; import android.widget.HorizontalScrollView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.alibaba.android.arouter.launcher.ARouter;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNobleTitleBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.rmondjone.locktableview.LockTableView; import com.rmondjone.locktableview.LockTableView;
import com.rmondjone.xrecyclerview.ProgressStyle; import com.rmondjone.xrecyclerview.ProgressStyle;
import com.rmondjone.xrecyclerview.XRecyclerView; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.moduleutil.activity.BaseMvpActivity; import com.xscm.modulemain.R;
import com.xscm.moduleutil.activity.IPresenter; import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.moduleutil.base.BaseRoomContacts; import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.xscm.modulemain.databinding.ActivityNobleTitleBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*; import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog; import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.xscm.moduleutil.bean.TableCellData;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.TimeUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
/** /**
* @Description: 爵位展示页面 * @Description: 爵位展示页面
* @Author: qx * @Author: qx
* @Data: 2022/4/18 21:05 * @Data: 2022/4/18 21:05
*/ */
public class NobleTitleActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNobleTitleBinding> implements NobleTitleConacts.View { public class NobleTitleActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNobleTitleBinding> implements com.xscm.modulemain.activity.user.conacts.NobleTitleConacts.View {
private LinearLayout mContentView; private LinearLayout mContentView;
private List<NobilitDeatils.nobilityPowerItem> mNobilityPowerItemList = new ArrayList<>(); private List<NobilitDeatils.nobilityPowerItem> mNobilityPowerItemList = new ArrayList<>();
private String lid; private String lid;

View File

@@ -23,6 +23,7 @@ import com.xscm.modulemain.activity.user.presenter.SettingPresenter;
import com.xscm.modulemain.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.dialog.YouthModelDialog; import com.xscm.modulemain.dialog.YouthModelDialog;
import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.dialog.RealNameDialog; import com.xscm.moduleutil.dialog.RealNameDialog;
import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.utils.SpUtil;
@@ -50,6 +51,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
private int clickCount = 0; private int clickCount = 0;
private static final int REQUIRED_CLICKS = 6; private static final int REQUIRED_CLICKS = 6;
private UserInfo userInfo;
private Handler handler = new Handler(); private Handler handler = new Handler();
private Runnable resetRunnable = new Runnable() { private Runnable resetRunnable = new Runnable() {
@Override @Override
@@ -60,7 +62,21 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
private static final long RESET_DELAY = 1000; // 1秒无操作自动重置 private static final long RESET_DELAY = 1000; // 1秒无操作自动重置
protected void initData() { protected void initData() {
userInfo = SpUtil.getUserInfo();
mBinding.tvBbh.setText(CommonAppConfig.getInstance().getVersion()); mBinding.tvBbh.setText(CommonAppConfig.getInstance().getVersion());
if (userInfo != null) {
if (userInfo.getIs_hide() != null && userInfo.getIs_hide().equals("1")) {
mBinding.llQhdz.setVisibility(View.VISIBLE);
if (userInfo.getHide_status()!=null && userInfo.getHide_status().equals("1")){
mBinding.swit.setChecked(true);
}else {
mBinding.swit.setChecked(false);
}
} else {
mBinding.llQhdz.setVisibility(View.GONE);
}
}
} }
@Override @Override
@@ -89,6 +105,11 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private void onClick(View view) { private void onClick(View view) {
if (MvpPre == null) {
MvpPre = bindPresenter();
}
if (view.getId() == R.id.ll_youth) { if (view.getId() == R.id.ll_youth) {
// startActivity(new Intent(this, UnderageActivity.class)); // startActivity(new Intent(this, UnderageActivity.class));
showYouthModelDialog(); showYouthModelDialog();
@@ -137,7 +158,7 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
} }
}).setNegativeButton("取消", null).create().show(); }).setNegativeButton("取消", null).create().show();
} else if (view.getId() == R.id.swit) { } else if (view.getId() == R.id.swit) {
if (mBinding.swit.isChecked()) { /* if (mBinding.swit.isChecked()) {
ConfigManager.getInstance().switchEnvironment(EnvironmentEnum.PRODUCTION); ConfigManager.getInstance().switchEnvironment(EnvironmentEnum.PRODUCTION);
EnvironmentEnum selectedEnv = EnvironmentEnum.PRODUCTION; EnvironmentEnum selectedEnv = EnvironmentEnum.PRODUCTION;
EnvironmentPrefs prefs = new EnvironmentPrefs(this); EnvironmentPrefs prefs = new EnvironmentPrefs(this);
@@ -147,6 +168,11 @@ public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivityS
EnvironmentEnum selectedEnv = EnvironmentEnum.TEST; EnvironmentEnum selectedEnv = EnvironmentEnum.TEST;
EnvironmentPrefs prefs = new EnvironmentPrefs(this); EnvironmentPrefs prefs = new EnvironmentPrefs(this);
prefs.setSelectedEnvironment(selectedEnv); prefs.setSelectedEnvironment(selectedEnv);
}*/
if (mBinding.swit.isChecked()) {
MvpPre.getModifyHideStatus("1");
} else {
MvpPre.getModifyHideStatus("0");
} }
} else if (view.getId() == R.id.ll_tcdl) { } else if (view.getId() == R.id.ll_tcdl) {
new AlertDialog.Builder(this).setMessage("确定要退出登录吗?") new AlertDialog.Builder(this).setMessage("确定要退出登录吗?")

View File

@@ -1,6 +1,7 @@
package com.example.modulevocal.activity.ui.main; package com.xscm.modulemain.activity.user.conacts;
import android.app.Activity; import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter; import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView; import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;

View File

@@ -4,7 +4,11 @@ import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter; import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView; import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.WalletBean;
import java.util.List;
public final class MeConacts { public final class MeConacts {
@@ -16,9 +20,9 @@ public final class MeConacts {
void hideSkill(boolean hideSkill); void hideSkill(boolean hideSkill);
// void isFirstRecharge(EntranceCheckBean entranceCheckBean); void wallet(WalletBean walletBean);
// void setMemberList(GuardMemberBean guardMemberBean); void setBanners(List<BannerModel> bannerModels);
} }
public interface IMePre extends IPresenter { public interface IMePre extends IPresenter {
@@ -33,6 +37,9 @@ public final class MeConacts {
void entranceCheckFirstRecharge(); void entranceCheckFirstRecharge();
void getMemberList(String userId, int page); void getMemberList(String userId, int page);
void wallet();
} }
} }

View File

@@ -1,9 +1,14 @@
package com.example.modulevocal.conacts; package com.xscm.modulemain.activity.user.conacts;
import android.app.Activity; import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter; import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView; import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.*; import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import java.util.List; import java.util.List;

View File

@@ -15,5 +15,7 @@ public class SettingConacts {
void clearLoginInfo(); void clearLoginInfo();
void cancel(); void cancel();
void getModifyHideStatus(String hide_status);
} }
} }

View File

@@ -1,4 +1,4 @@
package com.example.modulevocal.activity.ui.main; package com.xscm.modulemain.activity.user.fragment;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
@@ -6,14 +6,16 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.GridView; import android.widget.GridView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.example.modulevocal.databinding.FragmentGiftWallBinding;
import com.xscm.modulemain.activity.user.PageViewModel;
import com.xscm.modulemain.adapter.GiftWallAdapter;
import com.xscm.modulemain.databinding.FragmentGiftWallBinding;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -114,11 +114,24 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
} else { } else {
mBinding.slidingTabLayout.setCurrentTab(0); mBinding.slidingTabLayout.setCurrentTab(0);
} }
mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getSex() + ""); mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getNobility_image());
String sex = userInfo.getSex()==1?"":"";
mBinding.headerInfo.tvUserId.setText(sex+" | ID:"+userInfo.getUser_code());
mBinding.headerInfo.tvNickName.setText(userInfo.getNickname()); mBinding.headerInfo.tvNickName.setText(userInfo.getNickname());
mBinding.headerInfo.tvUserId.setText(userInfo.getUser_code()); mBinding.headerInfo.tvNickName.setTextColor( (userInfo.getNickname_color()!=null && !userInfo.getNickname_color().equals(""))?Color.parseColor(userInfo.getNickname_color()):Color.parseColor("#333333"));
// mBinding.headerInfo.tvUserId.setText(userInfo.getUser_code());
mBinding.headerInfo.tvAge.setText(userInfo.getAge() + ""); mBinding.headerInfo.tvAge.setText(userInfo.getAge() + "");
mBinding.headerInfo.tvJj.setText(userInfo.getProfile()); mBinding.headerInfo.tvJj.setText(userInfo.getProfile());
if (userInfo.getIs_use_code()==1){
mBinding.headerInfo.imBeautiful.setVisibility(View.VISIBLE);
}else {
mBinding.headerInfo.imBeautiful.setVisibility(View.GONE);
}
LinearLayout llContainer = mBinding.headerInfo.llImageContainer; LinearLayout llContainer = mBinding.headerInfo.llImageContainer;
llContainer.removeAllViews(); // 清空旧的 ImageView llContainer.removeAllViews(); // 清空旧的 ImageView

View File

@@ -6,6 +6,7 @@ import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
@@ -15,7 +16,14 @@ import android.widget.LinearLayout;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.stx.xhb.xbanner.XBanner;
import com.tencent.mm.opensdk.modelbiz.WXOpenCustomerServiceChat;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.xscm.modulemain.R; 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.databinding.FragmentVocalRangeBinding; import com.xscm.modulemain.databinding.FragmentVocalRangeBinding;
import com.xscm.modulemain.activity.user.activity.BlacklistActivity; import com.xscm.modulemain.activity.user.activity.BlacklistActivity;
import com.xscm.modulemain.activity.user.activity.DailyTasksActivity; import com.xscm.modulemain.activity.user.activity.DailyTasksActivity;
@@ -31,7 +39,9 @@ import com.xscm.modulemain.activity.user.presenter.MePresenter;
import com.xscm.modulemain.activity.WebViewActivity; import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.moduleutil.base.BaseMvpFragment; import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.utils.SpUtil;
@@ -90,18 +100,51 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
// mBinding.meMyCustom.setOnClickListener(this::onClick); // mBinding.meMyCustom.setOnClickListener(this::onClick);
// mBinding.meMyHelp.setOnClickListener(this::onClick); // mBinding.meMyHelp.setOnClickListener(this::onClick);
mBinding.ivSz.setOnClickListener(this::onClick); mBinding.ivSz.setOnClickListener(this::onClick);
mBinding.beautifulViewCopy.setOnClickListener(this::onClick); mBinding.tvCopy.setOnClickListener(this::onClick);
// mBinding.meMyShare.setOnClickListener(this::onClick); // mBinding.meMyShare.setOnClickListener(this::onClick);
mBinding.tvHome.setOnClickListener(this::onClick); mBinding.tvHome.setOnClickListener(this::onClick);
mBinding.meDressUp.setOnClickListener(this::onClick); mBinding.meDressUp.setOnClickListener(this::onClick);
mBinding.tvMyWallet.setOnClickListener(this::onClick); mBinding.tvMyWallet.setOnClickListener(this::onClick);
mBinding.meDaily.setOnClickListener(this::onClick); mBinding.meDaily.setOnClickListener(this::onClick);
mBinding.meMyGuild.setOnClickListener(this::onClick); mBinding.llMeGuild.setOnClickListener(this::onClick);
mBinding.tvMyShopping.setOnClickListener(this::onClick); mBinding.llMyShopping.setOnClickListener(this::onClick);
mBinding.imMyRoom.setOnClickListener(this::onClick); mBinding.imMyRoom.setOnClickListener(this::onClick);
mBinding.meMyDan.setOnClickListener(this::onClick); mBinding.meMyDan.setOnClickListener(this::onClick);
mBinding.ivHb.setOnClickListener(this::onClick); mBinding.ivHb.setOnClickListener(this::onClick);
mBinding.ivKf.setOnClickListener(this::onClick); mBinding.ivFk.setOnClickListener(this::onClick);
mBinding.llRecharge.setOnClickListener(this::onClick);
mBinding.llMeIncome.setOnClickListener(this::onClick);
mBinding.llMeHelp.setOnClickListener(this::onClick);
mBinding.llGiftWall.setOnClickListener(this::onClick);
mBinding.clNobleTitle.setOnClickListener(this::onClick);
mBinding.banner.loadImage(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, Object model, View view, int position) {
BannerModel bannerModel = (BannerModel) model;
ImageUtils.loadCenterCrop((String) bannerModel.getXBannerUrl(), (ImageView) view);
}
});
mBinding.banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
@Override
public void onItemClick(XBanner banner, Object model, View view, int position) {
// if (ProxyChecker.isProxySet(context)) {
// ToastUtils.show("使用代理禁止访问");
// return;
// }
/**
* 1房间2文章3链接 其他详情图
*
* type=1时该值表示房间idtype=2时表示文章id
*/
BannerModel bannerModel = (BannerModel) model;
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();
}
});
} }
@@ -109,6 +152,8 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
MvpPre.getMyInfo(); MvpPre.getMyInfo();
MvpPre.wallet();
MvpPre.getBanners("6");
// MvpPre.getMemberList(SpUtils.getUserId(), 1); // MvpPre.getMemberList(SpUtils.getUserId(), 1);
} }
@@ -126,12 +171,12 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
Intent intent=new Intent(getContext(), BlacklistActivity.class); Intent intent=new Intent(getContext(), BlacklistActivity.class);
intent.putExtra("type",0); intent.putExtra("type",0);
startActivity(intent); startActivity(intent);
}else if (id==R.id.me_my_guild){ }else if (id==R.id.ll_me_guild){
Intent intent=new Intent(getContext(), WebViewActivity.class); Intent intent=new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/union/index?id="+SpUtil.getToken()); intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/union/index?id="+SpUtil.getToken());
intent.putExtra("title", "公会"); intent.putExtra("title", "公会");
startActivity(intent); startActivity(intent);
}else if (id==R.id.tv_my_shopping){ }else if (id==R.id.ll_my_shopping){
Intent intent=new Intent(getContext(), WebViewActivity.class); Intent intent=new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/prop/propMall?id="+SpUtil.getToken()); intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/prop/propMall?id="+SpUtil.getToken());
intent.putExtra("title", "道具商城"); intent.putExtra("title", "道具商城");
@@ -181,13 +226,18 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
startActivity(new Intent(getContext(), DailyTasksActivity.class)); 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)); // 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 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", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/other/grade?id=" + SpUtil.getToken());
intent.putExtra("title", "等级"); intent.putExtra("title", "等级");
startActivity(intent); startActivity(intent);
}else if (id == R.id.iv_kf){//反馈 }else if (id == R.id.ll_me_help){//反馈
Intent intent = new Intent(getContext(), WebViewActivity.class); 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", 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", "http://192.168.110.17:8080/web/index.html#/pages/feedback/help?id=" + SpUtil.getToken());
@@ -198,8 +248,23 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/other/income?id=" + SpUtil.getToken()); intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url()+"/web/index.html#/pages/other/income?id=" + SpUtil.getToken());
intent.putExtra("title", "邀请"); intent.putExtra("title", "邀请");
startActivity(intent); startActivity(intent);
}else if (id==R.id.beautiful_view_copy){ }else if (id==R.id.tv_copy){
copyComment(mBinding.beautifulView.getText().toString()); copyComment(mBinding.beautifulView.getText().toString());
}else if (id==R.id.ll_recharge){//充值
startActivity(new Intent(getActivity(), RechargeActivity.class));
}else if (id==R.id.ll_me_income){
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId(); // 填移动应用(App)的 AppId
IWXAPI api = WXAPIFactory.createWXAPI(getContext(), appId);
// 判断当前版本是否支持拉起客服会话
WXOpenCustomerServiceChat.Req req = new WXOpenCustomerServiceChat.Req();
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){//我的页面的礼物墙
startActivity(new Intent(getContext(), GiftWallActivity.class));
}else if (id==R.id.cl_noble_title){//爵位展示页面
startActivity(new Intent(getContext(), NobleTitleActivity.class));
} }
} }
private void copyComment(String content) { private void copyComment(String content) {
@@ -245,12 +310,21 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
public void myInfoSuccess(UserInfo data) { public void myInfoSuccess(UserInfo data) {
SpUtil.saveUserInfo(data); SpUtil.saveUserInfo(data);
this.userInfo = data; this.userInfo = data;
mBinding.rivUserHead.setData(data.getAvatar(), data.getDress(), String.valueOf(data.getSex())); mBinding.rivUserHead.setData(data.getAvatar(), data.getDress(),data.getNobility_image());
mBinding.tvNickName.setText(data.getNickname()); mBinding.tvNickName.setText(data.getNickname());
mBinding.beautifulView.setText("ID:"+data.getUser_code()); 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.tvFollow.setText(data.getFollow_num()+"");
mBinding.tvFans.setText(data.getFans_num()+""); mBinding.tvFans.setText(data.getFans_num()+"");
mBinding.tvFriends.setText(data.getLook_me_num()+""); mBinding.tvFriends.setText(data.getLook_me_num()+"");
if (data.getIs_use_code()==1){
mBinding.imBeautiful.setVisibility(View.VISIBLE);
}else {
mBinding.imBeautiful.setVisibility(View.GONE);
}
if (data.getAuth()==1){ if (data.getAuth()==1){
SpUtil.setRealName(true); SpUtil.setRealName(true);
}else { }else {
@@ -298,26 +372,16 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
public void hideSkill(boolean hideSkill) { public void hideSkill(boolean hideSkill) {
} }
@Override
public void wallet(WalletBean walletBean) {
mBinding.tvIcon.setText(walletBean.getCoin());
}
/** @Override
* 首充有礼显示 public void setBanners(List<BannerModel> bannerModels) {
*/ mBinding.banner.setBannerData(com.xscm.moduleutil.R.layout.index_image_banner, bannerModels);
// @Override }
// public void isFirstRecharge(EntranceCheckBean entranceCheckBean) {
//// if (entranceCheckBean != null) {
//// mBinding.ivFirstCharge.setVisibility(entranceCheckBean.isAllow_show() ? View.VISIBLE : View.GONE);
//// }
// }
/**
* 获取守护数
*/
// @Override
// public void setMemberList(GuardMemberBean guardMemberBean) {
//// if (guardMemberBean != null) {
//// mBinding.tvGuardNum.setText(guardMemberBean.getHead().getTotal_number());
//// }
// }
private void copyUserId(CharSequence content) { private void copyUserId(CharSequence content) {
ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE); ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE);
@@ -327,85 +391,6 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
} }
} }
// private List<MeItemBean> initItems() {
// List<MeItemBean> items = new ArrayList<>();
// // 成为大神
// MeItemBean skill = new MeItemBean(true, true);
// skill.setIcon(R.mipmap.me_icon_cwds);
// skill.setName("成为大神");
// skill.setType("skill");
// items.add(skill);
// // 我的订单
//// MeItemBean order = new MeItemBean(true, false);
//// order.setIcon(R.mipmap.me_icon_wddd);
//// order.setName("我的订单");
//// order.setType("order");
//// items.add(order);
//// // 评价订单
//// MeItemBean pjOrder = new MeItemBean(true, false);
//// pjOrder.setIcon(R.mipmap.me_icon_pjdd);
//// pjOrder.setName("评价订单");
//// pjOrder.setType("pjOrder");
//// items.add(pjOrder);
// // 我的等级
// MeItemBean wdDengji = new MeItemBean(true, true);
// wdDengji.setIcon(R.mipmap.me_icon_wddj);
// wdDengji.setName("我的等级");
// wdDengji.setType("wdDengji");
// items.add(wdDengji);
// // 我的公会
// MeItemBean wdGonghui = new MeItemBean(true, true);
// wdGonghui.setIcon(R.mipmap.me_icon_wdgh);
// wdGonghui.setName("我的公会");
// wdGonghui.setType("wdGonghui");
// items.add(wdGonghui);
//// // 邀请有礼
//// MeItemBean yqYouli = new MeItemBean(true, true);
//// yqYouli.setIcon(R.mipmap.me_icon_yqyl);
//// yqYouli.setName("邀请有礼");
//// yqYouli.setType("yqYouli");
//// items.add(yqYouli);
// // 实名认证
// MeItemBean verified = new MeItemBean(false, true);
// verified.setIcon(R.mipmap.me_icon_smrz);
// verified.setName("实名认证");
// verified.setType("verified");
// items.add(verified);
//
// return items;
// }
// private List<MeItemBean> initItems2() {
// List<MeItemBean> items = new ArrayList<>();
// // 在线客服
// MeItemBean customerService = new MeItemBean(true, true);
// customerService.setType("customer_service");
// customerService.setName("在线客服");
// customerService.setIcon(R.mipmap.me_icon_service);
// items.add(customerService);
// // 帮助中心
// MeItemBean helpCenter = new MeItemBean(true, true);
// helpCenter.setType("help_center");
// helpCenter.setName("帮助中心");
// helpCenter.setIcon(R.mipmap.me_icon_help);
// items.add(helpCenter);
// // 设置
// MeItemBean settings = new MeItemBean(false, true);
// settings.setType("settings");
// settings.setName("设置");
// settings.setIcon(R.mipmap.me_icon_setting);
// items.add(settings);
//
// return items;
// }
/**
* 关闭首充入口
*/
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void closeFirstCharge(CloseFirstChargeEvent closeFirstChargeEvent) {
//// mBinding.ivFirstCharge.setVisibility(View.GONE);
// }
@Override @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

View File

@@ -12,15 +12,17 @@ import com.xscm.moduleutil.utils.cos.CosUploadManager;
import com.xscm.moduleutil.utils.oss.OSSOperUtils; import com.xscm.moduleutil.utils.oss.OSSOperUtils;
import java.io.File; import java.io.File;
import java.lang.ref.WeakReference;
import java.util.List; import java.util.List;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
public class EditUserPresenter extends BasePresenter<EditUserConactos.View> implements EditUserConactos.IMePre { public class EditUserPresenter extends BasePresenter<EditUserConactos.View> implements EditUserConactos.IMePre {
EditUserConactos.View mView;
public EditUserPresenter(EditUserConactos.View view, Context context) { public EditUserPresenter(EditUserConactos.View view, Context context) {
super(view, context); super(view, context);
mView = view;
} }
@Override @Override
public void topicList(String page, String page_limit) { public void topicList(String page, String page_limit) {
@@ -85,6 +87,9 @@ public class EditUserPresenter extends BasePresenter<EditUserConactos.View> impl
@Override @Override
public void onNext(UserInfo userInfo) { public void onNext(UserInfo userInfo) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().getUserHomeSuccess(userInfo); MvpRef.get().getUserHomeSuccess(userInfo);
} }
}); });

View File

@@ -1,9 +1,12 @@
package com.example.modulevocal.activity.ui.main; package com.xscm.modulemain.activity.user.presenter;
import android.content.Context; import android.content.Context;
import com.xscm.modulemain.activity.user.conacts.GiftWallConacts;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter; import com.xscm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
/** /**

View File

@@ -3,16 +3,23 @@ package com.xscm.modulemain.activity.user.presenter;
import android.content.Context; import android.content.Context;
import com.xscm.modulemain.activity.user.conacts.MeConacts; import com.xscm.modulemain.activity.user.conacts.MeConacts;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter; import com.xscm.moduleutil.presenter.BasePresenter;
import java.lang.ref.WeakReference;
import java.util.List;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
public class MePresenter extends BasePresenter<MeConacts.View> implements MeConacts.IMePre { public class MePresenter extends BasePresenter<MeConacts.View> implements MeConacts.IMePre {
MeConacts.View mView;
public MePresenter(MeConacts.View view, Context context) { public MePresenter(MeConacts.View view, Context context) {
super(view, context); super(view, context);
mView = view;
} }
@Override @Override
@@ -164,28 +171,39 @@ public class MePresenter extends BasePresenter<MeConacts.View> implements MeCona
} }
public void getConfig() { @Override
// api.appUpdate(new com.qpyy.libcommon.http.BaseObserver<AppUpdateModel>() { public void wallet() {
// @Override api.wallet(new BaseObserver<WalletBean>() {
// public void onSubscribe(Disposable d) { @Override
// addDisposable(d); public void onSubscribe(Disposable d) {
// } addDisposable(d);
// }
// @Override
// public void onNext(AppUpdateModel appUpdateModel) { @Override
// String channelId = "default"; public void onNext(WalletBean walletBean) {
// try { MvpRef.get().wallet(walletBean);
// channelId = MetaDataUtils.getMetaDataInApp("TD_CHANNEL_ID"); }
// } catch (Exception e) { });
// e.printStackTrace(); }
// }
// MvpRef.get().hideSkill(appUpdateModel != null && appUpdateModel.getChannels() != null && appUpdateModel.getChannels().contains(channelId)); public void getBanners(String s) {
// } // Type listType = new TypeToken<List<BannerModel>>() {}.getType();
// // List<BannerModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType);
// @Override // MvpRef.get().setBanners(restoredRoomModels);
// public void onComplete() { api.getBanners(s,new BaseObserver<List<BannerModel>>() {
// @Override
// } public void onSubscribe(Disposable d) {
// }); addDisposable(d);
}
@Override
public void onNext(List<BannerModel> bannerModels) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().setBanners(bannerModels);
}
});
} }
} }

View File

@@ -1,17 +1,23 @@
package com.example.modulevocal.presenter; package com.xscm.modulemain.activity.user.presenter;
import android.content.Context; import android.content.Context;
import com.example.modulevocal.conacts.MeConacts;
import com.example.modulevocal.conacts.NobleTitleConacts; import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.moduleutil.bean.*; import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.NobilitDeatils;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.NobilityPrice;
import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter; import com.xscm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.List; import java.util.List;
import io.reactivex.disposables.Disposable;
/** /**
* com.example.modulevocal.presenter * com.example.modulevocal.presenter
* qx * qx

View File

@@ -51,7 +51,7 @@ public class RechargePresenter extends BasePresenter<RechargeConactos.View> impl
@Override @Override
public void appPay(String user_id, String money, String coin, String type, String type_params, String type_id) { public void appPay(String user_id, String money, String coin, String type, String type_params, String type_id) {
api.appPay(user_id, money, coin, type,type_params,type_id, new BaseObserver<AppPay>() { api.appPay(user_id, money, coin, type,type_params,type_id,"", new BaseObserver<AppPay>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
addDisposable(d); addDisposable(d);

View File

@@ -6,13 +6,18 @@ import com.xscm.modulemain.activity.user.conacts.SettingConacts;
import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter; import com.xscm.moduleutil.presenter.BasePresenter;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
public class SettingPresenter extends BasePresenter<SettingConacts.View> implements SettingConacts.IMePre { public class SettingPresenter extends BasePresenter<SettingConacts.View> implements SettingConacts.IMePre {
private SettingConacts.View mView;
public SettingPresenter(SettingConacts.View view, Context context) { public SettingPresenter(SettingConacts.View view, Context context) {
super(view, context); super(view, context);
mView = view;
} }
@Override @Override
public void clearLoginInfo() { public void clearLoginInfo() {
api.clearLoginInfo(new BaseObserver<String>() { api.clearLoginInfo(new BaseObserver<String>() {
@@ -23,6 +28,9 @@ public class SettingPresenter extends BasePresenter<SettingConacts.View> impleme
@Override @Override
public void onNext(String s) { public void onNext(String s) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().clearLoginInfo(s); MvpRef.get().clearLoginInfo(s);
} }
}); });
@@ -39,8 +47,26 @@ public class SettingPresenter extends BasePresenter<SettingConacts.View> impleme
@Override @Override
public void onNext(String s) { public void onNext(String s) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().cancel(s); MvpRef.get().cancel(s);
} }
}); });
} }
@Override
public void getModifyHideStatus(String hide_status) {
api.getModifyHideStatus(hide_status, new BaseObserver<String>() {
@Override
public void onSubscribe(@NotNull Disposable d) {
addDisposable(d);
}
@Override
public void onNext(@NotNull String s) {
}
});
}
} }

View File

@@ -45,7 +45,7 @@ public class BlackAdapter extends BaseQuickAdapter<BlackUserBean, BaseViewHolder
@Override @Override
protected void convert(BaseViewHolder helper, BlackUserBean item) { protected void convert(BaseViewHolder helper, BlackUserBean item) {
MeHeadView headView = helper.getView(R.id.im_user); MeHeadView headView = helper.getView(R.id.im_user);
headView.setData(item.getAvatar(), "", item.getSex() + ""); headView.setData(item.getAvatar(), "", "");
helper.setText(R.id.tv_nick_name, item.getNickname()); helper.setText(R.id.tv_nick_name, item.getNickname());
TextView imageView= helper.getView(R.id.im_g); TextView imageView= helper.getView(R.id.im_g);
helper.setText(R.id.tv_oline, item.getIs_online() == 1 ? "[在线]" : "[离线]"); helper.setText(R.id.tv_oline, item.getIs_online() == 1 ? "[在线]" : "[离线]");

View File

@@ -35,7 +35,9 @@ import com.xscm.moduleutil.bean.GiftBean;
import com.xscm.moduleutil.bean.RoomMessageEvent; import com.xscm.moduleutil.bean.RoomMessageEvent;
import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.room.EMMessageInfo; import com.xscm.moduleutil.bean.room.EMMessageInfo;
import com.xscm.moduleutil.bean.room.EmotionDeatils;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.MeHeadView;
import com.xscm.moduleutil.utils.logger.Logger; import com.xscm.moduleutil.utils.logger.Logger;
import com.xscm.moduleutil.widget.AdaptiveImageView; import com.xscm.moduleutil.widget.AdaptiveImageView;
import com.xscm.moduleutil.widget.GifAvatarOvalView; import com.xscm.moduleutil.widget.GifAvatarOvalView;
@@ -45,6 +47,7 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
/** /**
@@ -209,9 +212,11 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
emojiImageView.setVisibility(View.VISIBLE); emojiImageView.setVisibility(View.VISIBLE);
helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.GONE); helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.GONE);
MeHeadView avatar = helper.getView(com.xscm.moduleutil.R.id.avatar);
avatar.setData(emMessage.getText().getFromUserInfo().getAvatar(), "", emMessage.getText().getFromUserInfo().getNobility_image());
ImageUtils.loadHeadCC(emMessage.getText().getFromUserInfo().getAvatar(), helper.getView(com.xscm.moduleutil.R.id.avatar)); ImageUtils.loadHeadCC(emMessage.getText().getFromUserInfo().getAvatar(), helper.getView(com.xscm.moduleutil.R.id.avatar));
helper.setText(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname()); // helper.setText(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname());
helper.setTextColor(com.xscm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname_color()!=null && !emMessage.getText().getFromUserInfo().getNickname_color().isEmpty()? Color.parseColor(emMessage.getText().getFromUserInfo().getNickname_color()):Color.parseColor("#CCA882"));
if (emMessage.getText().getText() != null) { if (emMessage.getText().getText() != null) {
helper.setText(com.xscm.moduleutil.R.id.tv_content, getSpannable(emMessage)); helper.setText(com.xscm.moduleutil.R.id.tv_content, getSpannable(emMessage));
} }
@@ -270,9 +275,16 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition(); String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition();
emojiImageView.setTag(uniqueId); emojiImageView.setTag(uniqueId);
if (Objects.equals(emMessage.getText().getEmoji().getAnimate_image(), "") || //这段代码使用 Optional 链式调用安全地获取 emMessage 中的 animate_image 字段,避免空指针异常。如果任意环节为 null则返回空字符串。
emMessage.getText().getEmoji().getAnimate_image().isEmpty()) { String animateImage = Optional.ofNullable(emMessage)
.map(RoomMessageEvent::getText)
.map(RoomMessageEvent.T::getEmoji)
.map(EmotionDeatils::getAnimate_image)
.orElse("");
// if (Objects.equals(emMessage.getText().getEmoji().getAnimate_image(), "") ||
// emMessage.getText().getEmoji().getAnimate_image().isEmpty()) {
if (!animateImage.isEmpty()){
// 检查视图是否仍属于当前数据项 // 检查视图是否仍属于当前数据项
if (uniqueId.equals(emojiImageView.getTag())) { if (uniqueId.equals(emojiImageView.getTag())) {
ImageUtils.loadHeadCC(emMessage.getText().getEmoji().getImage(), emojiImageView); ImageUtils.loadHeadCC(emMessage.getText().getEmoji().getImage(), emojiImageView);
@@ -280,35 +292,42 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
return; return;
} }
// 使用 RequestListener 监听加载完成 if (!emMessage.getText().getEmoji().getAnimate_image().isEmpty()) {
Glide.with(mContext) // 使用 RequestListener 监听加载完成
.load(emMessage.getText().getEmoji().getAnimate_image()) Glide.with(mContext)
.listener(new RequestListener<Drawable>() { .load(emMessage.getText().getEmoji().getAnimate_image())
@Override .listener(new RequestListener<Drawable>() {
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, @Override
DataSource dataSource, boolean isFirstResource) { public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target,
// 检查视图是否仍属于当前数据项 DataSource dataSource, boolean isFirstResource) {
if (uniqueId.equals(emojiImageView.getTag())) { // 检查视图是否仍属于当前数据项
// 加载完成后执行 if (uniqueId.equals(emojiImageView.getTag())) {
new Handler().postDelayed(() -> { // 加载完成后执行
// 再次检查视图状态 new Handler().postDelayed(() -> {
if (uniqueId.equals(emojiImageView.getTag())) { // 再次检查视图状态
Glide.with(mContext) if (uniqueId.equals(emojiImageView.getTag())) {
.load(emMessage.getText().getEmoji().getImage()) Glide.with(mContext)
.into(emojiImageView); .load(emMessage.getText().getEmoji().getImage())
} .into(emojiImageView);
}, 1500); }
}, 1500);
}
return false;
} }
return false;
}
@Override @Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target,
boolean isFirstResource) { boolean isFirstResource) {
return false;
} return false;
}) }
.into(emojiImageView); })
.into(emojiImageView);
}else {
Glide.with(mContext)
.load(emMessage.getText().getEmoji().getImage())
.into(emojiImageView);
}
} else { } else {
helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.VISIBLE); helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.VISIBLE);
emojiImageView.setVisibility(View.GONE); emojiImageView.setVisibility(View.GONE);
@@ -573,7 +592,7 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
public void onViewRecycled(@NonNull BaseViewHolder holder) { public void onViewRecycled(@NonNull BaseViewHolder holder) {
Logger.e("onViewRecycled", "onViewRecycled"); Logger.e("onViewRecycled", "onViewRecycled");
// AdaptiveImageView imEmj = (AdaptiveImageView)holder.getView(com.xscm.moduleutil.R.id.im_emj); // AdaptiveImageView imEmj = (AdaptiveImageView)holder.getView(com.xscm.moduleutil.R.id.im_emj);
GifAvatarOvalView avatarOvalView = holder.getView(com.xscm.moduleutil.R.id.avatar); MeHeadView avatarOvalView = holder.getView(com.xscm.moduleutil.R.id.avatar);
ImageView ivNobility = holder.getView(com.xscm.moduleutil.R.id.iv_nobility); ImageView ivNobility = holder.getView(com.xscm.moduleutil.R.id.iv_nobility);
ImageView ivCharm = holder.getView(com.xscm.moduleutil.R.id.iv_charm); ImageView ivCharm = holder.getView(com.xscm.moduleutil.R.id.iv_charm);
@@ -592,7 +611,6 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, Ba
// 清理其他图片 // 清理其他图片
if (avatarOvalView != null) { if (avatarOvalView != null) {
avatarOvalView.setImageDrawable(null);
Glide.with(avatarOvalView.getContext()).clear(avatarOvalView); Glide.with(avatarOvalView.getContext()).clear(avatarOvalView);
} }
if (ivNobility != null) { if (ivNobility != null) {

View File

@@ -2,6 +2,7 @@ package com.xscm.modulemain.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.hjq.toast.ToastUtils;
import com.xscm.modulemain.R; import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.room.EmotionDeatils; import com.xscm.moduleutil.bean.room.EmotionDeatils;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;
@@ -28,9 +29,17 @@ public class EmotionAdapter extends BaseQuickAdapter<EmotionDeatils, BaseViewHol
protected void convert(BaseViewHolder helper, EmotionDeatils item) { protected void convert(BaseViewHolder helper, EmotionDeatils item) {
ImageUtils.loadHeadCC(item.getImage(), helper.getView(R.id.iv_emotion)); ImageUtils.loadHeadCC(item.getImage(), helper.getView(R.id.iv_emotion));
helper.setText(R.id.tv_emotion_name, item.getName()); helper.setText(R.id.tv_emotion_name, item.getName());
if (item.is_lock()==0){
helper.setVisible(R.id.iv_select,false);
}else {
helper.setVisible(R.id.iv_select,true);
}
// 设置点击事件 // 设置点击事件
helper.itemView.setOnClickListener(v -> { helper.itemView.setOnClickListener(v -> {
if (item.is_lock()==1){
ToastUtils.show("当前属于爵位专属,请先开通爵位");
return;
}
if (onEmotionClickListener != null) { if (onEmotionClickListener != null) {
onEmotionClickListener.onEmotionClick(item); onEmotionClickListener.onEmotionClick(item);
} }

View File

@@ -1,5 +1,6 @@
package com.xscm.modulemain.adapter; package com.xscm.modulemain.adapter;
import android.graphics.Color;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@@ -53,6 +54,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter<ExpandColumnBean, Base
helper.setText(R.id.tv_agree,(item.getAgree()!=null?item.getAgree():"0")+""); helper.setText(R.id.tv_agree,(item.getAgree()!=null?item.getAgree():"0")+"");
//昵称 //昵称
helper.setText(R.id.dy_name_text, item.getNickname()); helper.setText(R.id.dy_name_text, item.getNickname());
helper.setTextColor(R.id.dy_name_text,(item.getNickname_color()!=null && !item.getNickname_color().isEmpty())? Color.parseColor(item.getNickname_color()):Color.parseColor("#333333"));
helper.setText(R.id.tv_address, item.getLoginip()); helper.setText(R.id.tv_address, item.getLoginip());
if (item.getUser_id().equals(SpUtil.getUserId()+"")){ if (item.getUser_id().equals(SpUtil.getUserId()+"")){
helper.setVisible(R.id.gensui, false); helper.setVisible(R.id.gensui, false);
@@ -77,7 +79,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter<ExpandColumnBean, Base
//头像 //头像
// ImageUtils.loadHeadCC(item.getAvatar(), (ImageView) helper.getView(R.id.dy_head_image)); // ImageUtils.loadHeadCC(item.getAvatar(), (ImageView) helper.getView(R.id.dy_head_image));
MeHeadView headView = helper.getView(R.id.dy_head_image); MeHeadView headView = helper.getView(R.id.dy_head_image);
headView.setData(item.getAvatar(), "", item.getSex()); headView.setData(item.getAvatar(), "", item.getNobility_image());
if (item.getHome_bgimages() != null && !item.getHome_bgimages().isEmpty()) { if (item.getHome_bgimages() != null && !item.getHome_bgimages().isEmpty()) {
// String[] arrIv = item.getHome_bgimages().toArray(new String[item.getHome_bgimages().size()]); // String[] arrIv = item.getHome_bgimages().toArray(new String[item.getHome_bgimages().size()]);

View File

@@ -1,4 +1,4 @@
package com.example.modulevocal.activity.ui.main; package com.xscm.modulemain.adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -6,15 +6,14 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.TopUsersAdapter; import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.CombinedGiftBean; import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageLoader; import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;

View File

@@ -1,24 +1,16 @@
package com.example.modulevocal.adapter; package com.xscm.modulemain.adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager; import com.xscm.modulemain.R;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.ui.main.GiftWallAdapter;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.bean.NobilitList; import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.widget.CircularImage; import com.xscm.moduleutil.widget.CircularImage;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**

View File

@@ -1,8 +1,8 @@
package com.example.modulevocal.adapter; package com.xscm.modulemain.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R; import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.NobilityPrice; import com.xscm.moduleutil.bean.NobilityPrice;
/** /**

View File

@@ -1,9 +1,8 @@
package com.example.modulevocal.adapter; package com.xscm.modulemain.adapter;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import android.widget.TextView; import com.xscm.modulemain.R;
import com.example.modulevocal.R;
import com.xscm.moduleutil.bean.NobilitList; import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.TopRoom; import com.xscm.moduleutil.bean.TopRoom;
import com.xscm.moduleutil.utils.ImageLoader; import com.xscm.moduleutil.utils.ImageLoader;

View File

@@ -38,7 +38,7 @@ public class SearchUserResultAdapter extends BaseQuickAdapter<UserResultResp, Ba
helper.setText(R.id.dy_name_text, KeyWordUtil.matcherSearchTitle(Color.parseColor("#FFBC00"), item.getNickname(), keyWord)); helper.setText(R.id.dy_name_text, KeyWordUtil.matcherSearchTitle(Color.parseColor("#FFBC00"), item.getNickname(), keyWord));
helper.setText(R.id.tv_id, "ID:" + item.getUser_code()); helper.setText(R.id.tv_id, "ID:" + item.getUser_code());
MeHeadView headView = helper.getView(R.id.dy_head_image); MeHeadView headView = helper.getView(R.id.dy_head_image);
headView.setData(item.getHead_picture(), "", item.getSex()); headView.setData(item.getHead_picture(), "", "");
// if (item.getUser_id().equals(SpUtil.getUserId() + "")) { // if (item.getUser_id().equals(SpUtil.getUserId() + "")) {
// helper.setVisible(R.id.gensui, false); // helper.setVisible(R.id.gensui, false);
// } else { // } else {

View File

@@ -1,12 +1,14 @@
package com.example.modulevocal.activity.ui.main; package com.xscm.modulemain.adapter;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.fragment.app.*; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.bean.GiftUserWallBean;
import java.io.Serializable; import java.io.Serializable;
@@ -15,7 +17,7 @@ import java.io.Serializable;
* A [FragmentPagerAdapter] that returns a fragment corresponding to * A [FragmentPagerAdapter] that returns a fragment corresponding to
* one of the sections/tabs/pages. * one of the sections/tabs/pages.
*/ */
public class SectionsPagerAdapter extends FragmentStateAdapter { public class SectionsGifPagerAdapter extends FragmentStateAdapter {
@StringRes @StringRes
private static final int[] TAB_TITLES = new int[]{com.xscm.moduleutil.R.string.tab_text_1, com.xscm.moduleutil.R.string.tab_text_2}; private static final int[] TAB_TITLES = new int[]{com.xscm.moduleutil.R.string.tab_text_1, com.xscm.moduleutil.R.string.tab_text_2};
@@ -28,7 +30,7 @@ public class SectionsPagerAdapter extends FragmentStateAdapter {
// this.giftData = giftData; // this.giftData = giftData;
// } // }
public SectionsPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) { public SectionsGifPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) {
super(fragmentActivity); super(fragmentActivity);
this.mContext = fragmentActivity; this.mContext = fragmentActivity;
this.giftData = giftData; this.giftData = giftData;

View File

@@ -6,6 +6,7 @@ import static android.view.View.VISIBLE;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -376,9 +377,12 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
@Override @Override
public void getRoomUserInfo(UserInfo userInfo1) { public void getRoomUserInfo(UserInfo userInfo1) {
this.userInfo = userInfo1; this.userInfo = userInfo1;
mBinding.ivAvatar.setData(userInfo.getAvatar(), "", userInfo.getSex() + ""); mBinding.ivAvatar.setData(userInfo.getAvatar(), "", userInfo.getNobility_image() + "");
String sex = userInfo.getSex()==1?"":"";
mBinding.tvId.setText(sex+" | ID:"+userInfo.getUser_code());
mBinding.tvName.setText(userInfo.getNickname()); mBinding.tvName.setText(userInfo.getNickname());
mBinding.tvId.setText("ID:" + userInfo.getUser_code()); mBinding.tvName.setTextColor( (userInfo.getNickname_color()!=null && !userInfo.getNickname_color().equals(""))? Color.parseColor(userInfo.getNickname_color()):Color.parseColor("#333333"));
// mBinding.tvId.setText("ID:" + userInfo.getUser_code());
if (userInfo.getIs_in_pit() == 1) { if (userInfo.getIs_in_pit() == 1) {
mBinding.roomMCz.setText("下麦"); mBinding.roomMCz.setText("下麦");
} else { } else {

View File

@@ -120,15 +120,15 @@ public class SoundEffectsDialogFragment extends BaseMvpDialogFragment<WheatPrese
mBinding.tvSure.setOnClickListener(v -> { mBinding.tvSure.setOnClickListener(v -> {
if (selectedPosition != -1){ if (selectedPosition != -1){
if (selectedPosition == 0){ if (selectedPosition == 0){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "xs.mp3").getPath()); AgoraManager.getInstance().potexao(new File(getSavePath() + "xs.mp3").getPath());
}else if (selectedPosition == 1){ }else if (selectedPosition == 1){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "hh.mp3").getPath()); AgoraManager.getInstance().potexao(new File(getSavePath() + "hh.mp3").getPath());
}else if (selectedPosition == 2){ }else if (selectedPosition == 2){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "gg.mp3").getPath()); AgoraManager.getInstance().potexao(new File(getSavePath() + "gg.mp3").getPath());
}else if (selectedPosition == 3){ }else if (selectedPosition == 3){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "zs.mp3").getPath()); AgoraManager.getInstance().potexao(new File(getSavePath() + "zs.mp3").getPath());
}else if (selectedPosition == 4){ }else if (selectedPosition == 4){
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "mmd.mp3").getPath()); AgoraManager.getInstance().potexao(new File(getSavePath() + "mmd.mp3").getPath());
} }
} }

View File

@@ -105,7 +105,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
mBinding.swMonitoring.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { mBinding.swMonitoring.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) { public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
AgoraManager.getInstance(getContext()).enableHeadphoneMonitor(b); AgoraManager.getInstance().enableHeadphoneMonitor(b);
//耳返设置完保存本地 //耳返设置完保存本地
SpUtil.setAuricularBack(b ? 1 : 0); SpUtil.setAuricularBack(b ? 1 : 0);
} }
@@ -135,7 +135,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
int percentage = (int) ((progress / 200.0) * 100); int percentage = (int) ((progress / 200.0) * 100);
mBinding.tvSeekbarValue.setText("人声" + percentage + "%"); mBinding.tvSeekbarValue.setText("人声" + percentage + "%");
SpUtil.setMusicVolume(progress); // 保存原始值(0-200) SpUtil.setMusicVolume(progress); // 保存原始值(0-200)
AgoraManager.getInstance(getContext()).setMusicVolume(progress); // 使用原始值(0-200) AgoraManager.getInstance().setMusicVolume(progress); // 使用原始值(0-200)
// 保存当前用户的音量设置 // 保存当前用户的音量设置
volumeManager.saveCurrentVolumes( volumeManager.saveCurrentVolumes(
mBinding.seekBar1.getProgress(), mBinding.seekBar1.getProgress(),
@@ -167,7 +167,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mBinding.tvSeekbarValue2.setText("伴奏" + progress + "%"); mBinding.tvSeekbarValue2.setText("伴奏" + progress + "%");
SpUtil.settPlayoutVolume(progress); SpUtil.settPlayoutVolume(progress);
AgoraManager.getInstance(getContext()).setPlayoutVolume(progress); AgoraManager.getInstance().setPlayoutVolume(progress);
// 保存当前用户的音量设置 // 保存当前用户的音量设置
volumeManager.saveCurrentVolumes( volumeManager.saveCurrentVolumes(
mBinding.seekBar1.getProgress(), mBinding.seekBar1.getProgress(),
@@ -204,7 +204,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
MixerResp item = tunerAdapter.getItem(position); MixerResp item = tunerAdapter.getItem(position);
// MvpPre.setUserMixer(roomId, item.getId()); // MvpPre.setUserMixer(roomId, item.getId());
// RtcManager.getInstance().setTone(item.getId()); // RtcManager.getInstance().setTone(item.getId());
AgoraManager.getInstance(mContext).setTone(item.getId()); AgoraManager.getInstance().setTone(item.getId());
} }
}); });
@@ -225,7 +225,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
// 执行选中项的操作 // 执行选中项的操作
MixerResp item = tunerAdapter2.getItem(position); MixerResp item = tunerAdapter2.getItem(position);
AgoraManager.getInstance(mContext).setTone(item.getId()); AgoraManager.getInstance().setTone(item.getId());
// MvpPre.setUserMixer(roomId, item.getId()); // MvpPre.setUserMixer(roomId, item.getId());
// RtcManager.getInstance().setTone(item.getId()); // RtcManager.getInstance().setTone(item.getId());
} }
@@ -245,12 +245,12 @@ public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, R
mBinding.seekBar1.setMax(200); mBinding.seekBar1.setMax(200);
mBinding.seekBar1.setProgress(musicVolume); mBinding.seekBar1.setProgress(musicVolume);
mBinding.tvSeekbarValue.setText("人声" + musicPercentage + "%"); mBinding.tvSeekbarValue.setText("人声" + musicPercentage + "%");
AgoraManager.getInstance(getContext()).setMusicVolume(musicVolume); // 使用原始值(0-200) AgoraManager.getInstance().setMusicVolume(musicVolume); // 使用原始值(0-200)
// 更新伴奏音量 // 更新伴奏音量
mBinding.seekBar2.setProgress(playoutVolume); mBinding.seekBar2.setProgress(playoutVolume);
// int playoutPercentage = (int) ((playoutVolume / 200.0) * 100); // int playoutPercentage = (int) ((playoutVolume / 200.0) * 100);
mBinding.tvSeekbarValue2.setText("伴奏" + playoutVolume + "%"); mBinding.tvSeekbarValue2.setText("伴奏" + playoutVolume + "%");
AgoraManager.getInstance(getContext()).setPlayoutVolume(playoutVolume); AgoraManager.getInstance().setPlayoutVolume(playoutVolume);
} }
@Override @Override

View File

@@ -147,7 +147,7 @@ public class RoomManager {
LogUtils.e("token", token); LogUtils.e("token", token);
LogUtils.e("roomId:", roomId); LogUtils.e("roomId:", roomId);
// 初始化 Agora 并加入房间 // 初始化 Agora 并加入房间
AgoraManager.getInstance(context) AgoraManager.getInstance()
.joinRoom(token, roomId, uid, enableMic, enableJs); .joinRoom(token, roomId, uid, enableMic, enableJs);
cacheRoomData(roomId, resp); cacheRoomData(roomId, resp);
navigateToRoom(context, roomId, password, resp, false, taskId); navigateToRoom(context, roomId, password, resp, false, taskId);

View File

@@ -467,6 +467,7 @@ class WheatLayoutSingManager private constructor(
sex = "" sex = ""
user_code = "" user_code = ""
dress_picture = "" dress_picture = ""
mic_cycle = ""
} }
view.setData(view.pitBean) view.setData(view.pitBean)
} }

View File

@@ -64,7 +64,7 @@
android:layout_marginStart="@dimen/dp_4" android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/im_1" android:layout_toRightOf="@+id/im_1"
android:gravity="left|center" android:gravity="left|center"
android:text="111111000" tools:text="111111000"
android:textColor="@color/color_FF333333" android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_28" /> android:textSize="@dimen/sp_28" />
</RelativeLayout> </RelativeLayout>

View File

@@ -229,34 +229,45 @@
<!-- android:layout_marginEnd="@dimen/dp_20"--> <!-- android:layout_marginEnd="@dimen/dp_20"-->
<!-- android:layout_marginBottom="@dimen/dp_100"--> <!-- android:layout_marginBottom="@dimen/dp_100"-->
<!-- android:src="@mipmap/shouchl"/>--> <!-- android:src="@mipmap/shouchl"/>-->
<com.xscm.moduleutil.widget.DropHomeView
<com.stx.xhb.xbanner.XBanner android:id="@+id/dvr"
android:id="@+id/banner" android:layout_width="wrap_content"
android:layout_width="@dimen/dp_75" android:layout_height="wrap_content"
android:layout_height="@dimen/dp_85"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true" android:gravity="center_vertical"
android:layout_marginEnd="@dimen/dp_20" android:orientation="horizontal"
android:layout_marginBottom="@dimen/dp_100" android:visibility="gone"
android:clickable="true" tools:visibility="visible">
android:focusable="true"
android:scaleType="fitCenter" <com.stx.xhb.xbanner.XBanner
app:AutoPlayTime="3000" android:id="@+id/banner"
app:pageChangeDuration="3000" android:layout_width="@dimen/dp_75"
app:pointContainerPosition="BOTTOM" android:layout_height="@dimen/dp_85"
app:pointNormal="@mipmap/room_ic_banner_point_normal" android:layout_alignParentEnd="true"
app:pointSelect="@mipmap/room_ic_banner_point_select" android:layout_alignParentBottom="true"
app:pointTopBottomPadding="@dimen/dp_2" android:layout_marginEnd="@dimen/dp_20"
app:pointsPosition="CENTER" android:layout_marginBottom="@dimen/dp_100"
app:pointsVisibility="true" /> android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:AutoPlayTime="3000"
app:pageChangeDuration="3000"
app:pointContainerPosition="BOTTOM"
app:pointNormal="@mipmap/room_ic_banner_point_normal"
app:pointSelect="@mipmap/room_ic_banner_point_select"
app:pointTopBottomPadding="@dimen/dp_2"
app:pointsPosition="CENTER"
app:pointsVisibility="true" />
</com.xscm.moduleutil.widget.DropHomeView>
<RelativeLayout <RelativeLayout
android:id="@+id/cool_wait_view" android:id="@+id/cool_wait_view"
android:visibility="gone" android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:layout_width="match_parent" android:visibility="gone">
android:layout_height="match_parent">
<app.dinus.com.loadingdrawable.LoadingView <app.dinus.com.loadingdrawable.LoadingView
android:layout_width="@dimen/dp_100" android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100" android:layout_height="@dimen/dp_100"

View File

@@ -60,7 +60,7 @@
android:layout_marginStart="@dimen/dp_4" android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/im_1" android:layout_toRightOf="@+id/im_1"
android:gravity="left|center" android:gravity="left|center"
android:text="111111000" tools:text="111111000"
android:textColor="@color/colorWhite100" android:textColor="@color/colorWhite100"
android:textSize="@dimen/sp_28" /> android:textSize="@dimen/sp_28" />
</RelativeLayout> </RelativeLayout>

View File

@@ -111,6 +111,34 @@
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:background="@color/color_FFE5E5E5" /> android:background="@color/color_FFE5E5E5" />
<LinearLayout
android:id="@+id/ll_qhdz"
style="@style/My_Info_Item_LL_Style"
android:background="@drawable/bg_r15_white"
android:visibility="gone"
tools:visibility="visible"
>
<TextView
style="@style/My_Info_Item_Title_Style"
android:text="是否隐身" />
<Switch
android:id="@+id/swit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right|center"
android:gravity="right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_alignParentBottom="true"
android:background="@color/color_e2e2e2" />
<LinearLayout <LinearLayout
android:id="@+id/ll_shb" android:id="@+id/ll_shb"
style="@style/My_Info_Item_LL_Style" style="@style/My_Info_Item_LL_Style"
@@ -236,33 +264,6 @@
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:background="@color/color_e2e2e2" /> android:background="@color/color_e2e2e2" />
<LinearLayout
android:id="@+id/ll_qhdz"
style="@style/My_Info_Item_LL_Style"
android:layout_marginTop="@dimen/dp_12"
android:background="@drawable/bg_r15_white"
android:visibility="gone"
>
<TextView
style="@style/My_Info_Item_Title_Style"
android:text="@string/change_address" />
<Switch
android:id="@+id/swit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right|center"
android:gravity="right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_alignParentBottom="true"
android:background="@color/color_e2e2e2" />
<LinearLayout <LinearLayout
android:id="@+id/ll_qhzh" android:id="@+id/ll_qhzh"

View File

@@ -65,7 +65,7 @@
android:layout_marginStart="@dimen/dp_4" android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/im_1" android:layout_toRightOf="@+id/im_1"
android:gravity="left|center" android:gravity="left|center"
android:text="111111000" tools:text="111111000"
android:textColor="@color/colorWhite100" android:textColor="@color/colorWhite100"
android:textSize="@dimen/sp_28" /> android:textSize="@dimen/sp_28" />
</RelativeLayout> </RelativeLayout>

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,45 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_60"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_85"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:padding="8dp"> >
<ImageView <ImageView
android:id="@+id/iv_emotion" android:id="@+id/iv_emotion"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:scaleType="fitCenter" android:scaleType="fitCenter"
tools:src="@mipmap/ic_launcher" tools:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/tv_emotion_name" android:id="@+id/tv_emotion_name"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4" android:layout_marginTop="@dimen/dp_4"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:gravity="center" android:gravity="center"
android:textColor="#BBB9C6" android:textColor="#BBB9C6"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_emotion" /> app:layout_constraintTop_toBottomOf="@+id/iv_emotion" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
android:src="@mipmap/noble_is_lock"
android:scaleType="fitCenter"
android:id="@+id/iv_select"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -108,7 +108,8 @@
android:gravity="center" android:gravity="center"
android:text="0" android:text="0"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_12" /> android:textSize="@dimen/sp_12"
android:visibility="gone"/>
<ImageView <ImageView

View File

@@ -71,7 +71,8 @@
android:layout_height="@dimen/dp_20" android:layout_height="@dimen/dp_20"
android:text="ID:" android:text="ID:"
android:textColor="@color/color_FF999999" android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12" /> android:textSize="@dimen/sp_12"
android:visibility="gone"/>
<TextView <TextView
android:id="@+id/tv_user_id" android:id="@+id/tv_user_id"
@@ -81,6 +82,16 @@
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
tools:text="123131" /> tools:text="123131" />
<ImageView
android:id="@+id/im_beautiful"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_11"
android:layout_marginLeft="5dp"
app:layout_constraintStart_toEndOf="@+id/tv_copy"
app:layout_constraintTop_toTopOf="@+id/tv_copy"
android:scaleType="fitCenter"
android:src="@mipmap/beautiful"/>
</LinearLayout> </LinearLayout>
<TextView <TextView

View File

@@ -66,19 +66,19 @@ android {
// // 测试版配置 // // 测试版配置
beta { beta {
// dimension "environment" dimension "environment"
// // 测试版包名:基础包名 + .betacom.example.myapp.beta // // 测试版包名:基础包名 + .betacom.example.myapp.beta
// applicationIdSuffix ".beta" applicationIdSuffix ".beta"
// // 测试版版本名1.0-beta // // 测试版版本名1.0-beta
// versionNameSuffix "-beta" versionNameSuffix "-beta"
// //
// // 【测试版应用名称】动态生成带标识的名称 // // 【测试版应用名称】动态生成带标识的名称
// resValue "string", "app_name", "羽声-测试版" resValue "string", "app_name", "羽声-测试版"
// //
// // 【测试版图标】替换为测试专用图标 // // 【测试版图标】替换为测试专用图标
// manifestPlaceholders = [ manifestPlaceholders = [
// appIcon: "@mipmap/ic_launcher_app_bat" // 需在main/res/mipmap放置该图标 appIcon: "@mipmap/ic_launcher_app_bat" // 需在main/res/mipmap放置该图标
// ] ]
} }
} }

View File

@@ -46,7 +46,8 @@ public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
switch (resp.errCode) { switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK: case BaseResp.ErrCode.ERR_OK:
// 支付成功:这里需要调用后台接口确认支付状态(避免本地判断不可靠) // 支付成功:这里需要调用后台接口确认支付状态(避免本地判断不可靠)
PayEvent messageEvent = new PayEvent(1, "支付成功");
EventBus.getDefault().post(messageEvent);
break; break;
case BaseResp.ErrCode.ERR_USER_CANCEL: case BaseResp.ErrCode.ERR_USER_CANCEL:
checkPayResultFromServer(); checkPayResultFromServer();

View File

@@ -59,6 +59,11 @@ legacySupportV4 = "1.0.0"
fragmentKtx = "1.5.6" fragmentKtx = "1.5.6"
interpolator = "1.0.0" interpolator = "1.0.0"
material3Android = "1.4.0"
uiToolingPreviewAndroid = "1.9.4"
tilesToolingPreview = "1.5.0"
constraintlayoutVersion = "2.2.1"
[libraries] [libraries]
alipay-alipaysdk-android = { module = "com.alipay.sdk:alipaysdk-android", version.ref = "alipayAlipaysdkAndroid" } alipay-alipaysdk-android = { module = "com.alipay.sdk:alipaysdk-android", version.ref = "alipayAlipaysdkAndroid" }
android-flexbox = { module = "com.google.android:flexbox", version.ref = "flexboxVersion" } android-flexbox = { module = "com.google.android:flexbox", version.ref = "flexboxVersion" }
@@ -118,6 +123,10 @@ androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version
androidx-legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacySupportV4" } androidx-legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacySupportV4" }
androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" } androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" }
androidx-interpolator = { group = "androidx.interpolator", name = "interpolator", version.ref = "interpolator" } androidx-interpolator = { group = "androidx.interpolator", name = "interpolator", version.ref = "interpolator" }
androidx-material3-android = { group = "androidx.compose.material3", name = "material3-android", version.ref = "material3Android" }
androidx-ui-tooling-preview-android = { group = "androidx.compose.ui", name = "ui-tooling-preview-android", version.ref = "uiToolingPreviewAndroid" }
androidx-tiles-tooling-preview = { group = "androidx.wear.tiles", name = "tiles-tooling-preview", version.ref = "tilesToolingPreview" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayoutVersion" }
[plugins] [plugins]

View File

@@ -62,4 +62,4 @@ include ':tuiconversation'
include ':tuicore' include ':tuicore'
//include ':moduleroom' //include ':moduleroom'
include ':Loadinglibrary' include ':Loadinglibrary'
include 'locktableview'