TRTC支持个播跨房PK

This commit is contained in:
huangjian
2022-04-13 15:48:20 +08:00
parent 4c63f93491
commit 810b2559f9
16 changed files with 170 additions and 46 deletions

View File

@@ -678,7 +678,8 @@
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".ui.webview.CommonWebViewActivity" android:name=".ui.webview.CommonWebViewActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"/>
<activity <activity
android:name=".ui.webview.SimpleWebViewActivity" android:name=".ui.webview.SimpleWebViewActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
@@ -1177,9 +1178,11 @@
android:label="一键登录" android:label="一键登录"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".ui.webview.DialogWebViewActivity" android:name=".ui.webview.DialogWebViewActivity"
android:theme="@style/dialog_web_view_activity" /> android:theme="@style/dialog_web_view_activity"
android:windowSoftInputMode="adjustPan"/>
<activity <activity
android:name=".ui.webview.DatingRuleWebViewActivity" android:name=".ui.webview.DatingRuleWebViewActivity"

View File

@@ -29,9 +29,12 @@ import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.erban.ui.widget.recyclerview.layoutmanager.FullyGridLayoutManager; import com.yizhuan.erban.ui.widget.recyclerview.layoutmanager.FullyGridLayoutManager;
import com.yizhuan.erban.vip.VipBroadcastDialog; import com.yizhuan.erban.vip.VipBroadcastDialog;
import com.yizhuan.tutu.room_chat.activity.RoomInviteFansActivity; import com.yizhuan.tutu.room_chat.activity.RoomInviteFansActivity;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel; import com.yizhuan.xchat_android_core.redpackage.RedPackageModel;
import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo; import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.giftvalue.GiftValueModel; import com.yizhuan.xchat_android_core.room.giftvalue.GiftValueModel;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel; import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
@@ -41,6 +44,7 @@ import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel; import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver; import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
@@ -222,13 +226,30 @@ public class RoomOperationDialog extends BottomSheetDialog {
return; return;
} }
if ((AvRoomDataManager.get().isRoomOwner() || AvRoomDataManager.get().isSuperAdmin()) && final RoomPkBean pkBean = AvRoomDataManager.get().roomPkLiveData.getValue();
!AvRoomDataManager.get().isCpRoom()) { if (AvRoomDataManager.get().isRoomOwner() && !AvRoomDataManager.get().isCpRoom()) {
String str = AvRoomDataManager.get().isOpenAnotherPKMode() ? "主播PK中" : "主播PK"; String str = AvRoomDataManager.get().isOpenAnotherPKMode() ? "主播PK中" : "主播PK";
if (pkBean != null) {
if (pkBean.getPkState() == 2 &&
(pkBean.getWinUid() == 0 ||
pkBean.getWinUid() == AuthModel.get().getCurrentUid() ||
pkBean.getPenaltyEndTime() < CurrentTimeUtils.getCurrentTime())) {
str = "结束PK";
}
}
int icon = AvRoomDataManager.get().isOpenAnotherPKMode() ? int icon = AvRoomDataManager.get().isOpenAnotherPKMode() ?
R.drawable.ic_room_opt_single_pk_in : R.drawable.ic_room_opt_single_pk_open :
R.drawable.ic_room_opt_single_pk_in; R.drawable.ic_room_opt_single_pk_in;
String finalStr = str;
optAdapter.addData(new OptAction(icon, str, () -> { optAdapter.addData(new OptAction(icon, str, () -> {
if (pkBean != null && "结束PK".equals(finalStr)) {
SingleRoomPKModel.INSTANCE
.endSingleRoomPk(pkBean.getRoundId())
.doOnSuccess(s -> SingleToastUtil.showToast("结束PK成功!"))
.doOnError(throwable -> SingleToastUtil.showToast(throwable.getMessage()))
.subscribe();
return;
}
if (AvRoomDataManager.get().isOpenAnotherPKMode()) { if (AvRoomDataManager.get().isOpenAnotherPKMode()) {
SingleToastUtil.showToast("正在和主播PK中..."); SingleToastUtil.showToast("正在和主播PK中...");

View File

@@ -41,9 +41,8 @@ class SingleRoomPKBoardView @JvmOverloads constructor(
init { init {
addView(binding.root, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) addView(binding.root, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
AvRoomDataManager.get().roomPkLiveData.observeForever(observer)
binding.viewRankListContributeRight.showCharmStyle() binding.viewRankListContributeRight.showCharmStyle()
AvRoomDataManager.get().roomPkLiveData.observeForever(observer)
binding.ivFindHim.setOnClickListener { binding.ivFindHim.setOnClickListener {
roomPkBean?.let { roomPkBean?.let {
AVRoomActivity.start(context, it.aUid) AVRoomActivity.start(context, it.aUid)

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -162,6 +162,18 @@ public class AudioEngineManager {
return this.iAudioEngine != null && this.iAudioEngine.isEnableLoopBack(); return this.iAudioEngine != null && this.iAudioEngine.isEnableLoopBack();
} }
public void connectOtherRoom(String roomId,long userUid){
if (iAudioEngine != null) {
iAudioEngine.connectOtherRoom(roomId, userUid);
}
}
public void disconnectOtherRoom() {
if (iAudioEngine != null){
iAudioEngine.disconnectOtherRoom();
}
}
//音乐播放相关---------------begin-------------------------- //音乐播放相关---------------begin--------------------------
public void adjustAudioMixingVolume(int volume) { public void adjustAudioMixingVolume(int volume) {
if (this.iAudioEngine == null) return; if (this.iAudioEngine == null) return;

View File

@@ -34,6 +34,10 @@ public interface IAudioEngine {
boolean isEnableLoopBack(); boolean isEnableLoopBack();
void connectOtherRoom(String roomId, long userUid);
void disconnectOtherRoom();
//音乐播放相关---------------begin-------------------------- //音乐播放相关---------------begin--------------------------
void adjustAudioMixingVolume(int volume); void adjustAudioMixingVolume(int volume);

View File

@@ -1213,7 +1213,7 @@ public final class IMNetEaseManager {
} }
switch (second) { switch (second) {
case CUSTOM_MSG_SUB_ROOM_PK_INVITE: case CUSTOM_MSG_SUB_ROOM_PK_INVITE:
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_INVITE: case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_INVITE:
if ((AvRoomDataManager.get().isRoomOwner() || AvRoomDataManager.get().isSuperAdmin()) && if ((AvRoomDataManager.get().isRoomOwner() || AvRoomDataManager.get().isSuperAdmin()) &&
!AvRoomDataManager.get().isOpenAnotherPKMode()) { !AvRoomDataManager.get().isOpenAnotherPKMode()) {
noticeRoomEvent(msg, RoomEvent.ROOM_PK_INVITE); noticeRoomEvent(msg, RoomEvent.ROOM_PK_INVITE);
@@ -1222,6 +1222,10 @@ public final class IMNetEaseManager {
case CUSTOM_MSG_SUB_ROOM_PK_ACCEPT: case CUSTOM_MSG_SUB_ROOM_PK_ACCEPT:
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_ACCEPT: case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_ACCEPT:
noticeRoomEvent(msg, RoomEvent.ROOM_PK_ACCEPT); noticeRoomEvent(msg, RoomEvent.ROOM_PK_ACCEPT);
if (second == CUSTOM_MSG_SUB_SINGLE_ROOM_PK_ACCEPT &&
AuthModel.get().getCurrentUid() == roomPkBean.getInviteUid()) {
AudioEngineManager.get().connectOtherRoom(String.valueOf(roomPkBean.getARoomId()), roomPkBean.getAUid());
}
break; break;
case CUSTOM_MSG_SUB_ROOM_PK_REFUSE: case CUSTOM_MSG_SUB_ROOM_PK_REFUSE:
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_REFUSE: case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_REFUSE:
@@ -1235,10 +1239,19 @@ public final class IMNetEaseManager {
AvRoomDataManager.get().roomPkLiveData.postValue(roomPkBean); AvRoomDataManager.get().roomPkLiveData.postValue(roomPkBean);
break; break;
case CUSTOM_MSG_SUB_ROOM_PK_FINISH: case CUSTOM_MSG_SUB_ROOM_PK_FINISH:
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_FINISH:
noticeRoomEvent(msg, RoomEvent.ROOM_PK_FINISH); noticeRoomEvent(msg, RoomEvent.ROOM_PK_FINISH);
AvRoomDataManager.get().roomPkLiveData.postValue(null); AvRoomDataManager.get().roomPkLiveData.postValue(null);
break; break;
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_FINISH:
AvRoomDataManager.get().roomPkLiveData.postValue(null);
break;
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_RESULT:
noticeRoomEvent(msg, RoomEvent.ROOM_PK_FINISH);
AvRoomDataManager.get().roomPkLiveData.postValue(roomPkBean);
if (AuthModel.get().getCurrentUid() == roomPkBean.getCUid()) {
AudioEngineManager.get().disconnectOtherRoom();
}
break;
case CUSTOM_MSG_SUB_ROOM_PK_NOTIFY: case CUSTOM_MSG_SUB_ROOM_PK_NOTIFY:
case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_NOTIFY: case CUSTOM_MSG_SUB_SINGLE_ROOM_PK_NOTIFY:
noticeRoomEvent(msg, RoomEvent.ROOM_PK_NOTIFY); noticeRoomEvent(msg, RoomEvent.ROOM_PK_NOTIFY);
@@ -1650,17 +1663,15 @@ public final class IMNetEaseManager {
if (curRoomInfo == null) return; if (curRoomInfo == null) return;
noticeEnterMessages(); noticeEnterMessages();
if (curRoomInfo != null) { long uid = AuthModel.get().getCurrentUid();
long uid = AuthModel.get().getCurrentUid(); if (curRoomInfo.getUid() == uid) {
if (curRoomInfo.getUid() == uid) { StatisticManager.Instance().onEventStart(BasicConfig.INSTANCE.getAppContext(),
StatisticManager.Instance().onEventStart(BasicConfig.INSTANCE.getAppContext(), StatisticsProtocol.Event.EVENT_OPENROOM, "开房");
StatisticsProtocol.Event.EVENT_OPENROOM, "开房");
}
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_ROOM_LIST_LABEL,
"区分房间标签:" + curRoomInfo.getRoomTag());
} }
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_ROOM_LIST_LABEL,
"区分房间标签:" + curRoomInfo.getRoomTag());
//进入房间时长 //进入房间时长
StatisticManager.Instance().onEventStart(BasicConfig.INSTANCE.getAppContext(), StatisticManager.Instance().onEventStart(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.EVENT_ROOM_LENGTH_OF_STAY_TIME, "在房间内停留时长"); StatisticsProtocol.Event.EVENT_ROOM_LENGTH_OF_STAY_TIME, "在房间内停留时长");
@@ -1668,7 +1679,7 @@ public final class IMNetEaseManager {
//进入房间次数 //进入房间次数
Map<String, String> attributes = new HashMap<>(2); Map<String, String> attributes = new HashMap<>(2);
attributes.put("userUid", AuthModel.get().getCurrentUid() + ""); attributes.put("userUid", AuthModel.get().getCurrentUid() + "");
attributes.put("roomUid", curRoomInfo != null ? curRoomInfo.getUid() + "" : "0"); attributes.put("roomUid", curRoomInfo.getUid() + "");
StatisticManager.Instance().onEvent( StatisticManager.Instance().onEvent(
BasicConfig.INSTANCE.getAppContext(), BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.EVENT_ENTER_ROOM_COUNT, StatisticsProtocol.Event.EVENT_ENTER_ROOM_COUNT,
@@ -1943,18 +1954,9 @@ public final class IMNetEaseManager {
} }
if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) {
if (!roomQueueInfo.mRoomMicInfo.isMicMute()) { //开麦
//开麦 AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER);
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER); AudioEngineManager.get().setMute(roomQueueInfo.mRoomMicInfo.isMicMute() || AvRoomDataManager.get().mIsNeedOpenMic);
//是否需要开麦
if (AvRoomDataManager.get().mIsNeedOpenMic) {
//闭麦
AudioEngineManager.get().setMute(true);
AvRoomDataManager.get().mIsNeedOpenMic = true;
}
} else {
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE);
}
} }
noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount()); noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount());
} }

View File

@@ -141,6 +141,15 @@ public class RtcEngineManager extends BaseEngine {
return false; return false;
} }
@Override
public void connectOtherRoom(String roomId, long userUid) {
}
@Override
public void disconnectOtherRoom() {
}
@Override @Override
public void setRemoteMute(long uid, boolean mute) { public void setRemoteMute(long uid, boolean mute) {
Logger.t(TAG).d("setRemoteMute uid:%s mute:%s", uid, mute); Logger.t(TAG).d("setRemoteMute uid:%s mute:%s", uid, mute);

View File

@@ -350,6 +350,14 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
TRTCEngineAdapterListener.onLeaveChannel(lastStats); TRTCEngineAdapterListener.onLeaveChannel(lastStats);
} }
@Override
public void onSwitchRole(int errCode, String errMsg) {
Log.d(TAG, "errCode=" + errCode + " errMsg=" + errMsg);
TRTCEngineAdapterListener.onClientRoleChanged(
userRole == TRTCRoleAnchor ? CLIENT_ROLE_AUDIENCE : CLIENT_ROLE_BROADCASTER,
userRole == TRTCRoleAnchor ? CLIENT_ROLE_BROADCASTER : CLIENT_ROLE_AUDIENCE);
}
@Override @Override
public void onUserVoiceVolume(ArrayList<TRTCCloudDef.TRTCVolumeInfo> userVolumes, int totalVolume) { public void onUserVoiceVolume(ArrayList<TRTCCloudDef.TRTCVolumeInfo> userVolumes, int totalVolume) {
int userCount = userVolumes.size(); int userCount = userVolumes.size();
@@ -973,7 +981,7 @@ public class TRTCEngineAdapter extends BaseAdapterImpl {
public int setClientRole(int role) { public int setClientRole(int role) {
if (role == CLIENT_ROLE_BROADCASTER) { if (role == CLIENT_ROLE_BROADCASTER) {
userRole = TRTCRoleAnchor; userRole = TRTCRoleAnchor;
if (!TRtcEngineManager.get().isMute){ if (!TRtcEngineManager.get().isMute) {
trtcCloud.startLocalAudio(); trtcCloud.startLocalAudio();
} }
} else if (role == CLIENT_ROLE_AUDIENCE) { } else if (role == CLIENT_ROLE_AUDIENCE) {

View File

@@ -6,6 +6,8 @@ import android.os.Message;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import com.tencent.bugly.crashreport.CrashReport; import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.trtc.TRTCCloudDef; import com.tencent.trtc.TRTCCloudDef;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean;
import com.yizhuan.xchat_android_core.manager.AudioEngineManager;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent; import com.yizhuan.xchat_android_core.manager.RoomEvent;
@@ -205,6 +207,14 @@ public class TRtcEngineEventHandler implements IRTCEngineHandler {
//角色切换 麦克风切换 //角色切换 麦克风切换
if (newRole == Constants.CLIENT_ROLE_BROADCASTER) { if (newRole == Constants.CLIENT_ROLE_BROADCASTER) {
TRtcEngineManager.get().setMute(TRtcEngineManager.get().isMute); TRtcEngineManager.get().setMute(TRtcEngineManager.get().isMute);
if (AvRoomDataManager.get().isRoomOwner() &&
AvRoomDataManager.get().isSingleRoom() &&
AvRoomDataManager.get().isOpenAnotherPKMode()) {
RoomPkBean pkBean = AvRoomDataManager.get().roomPkLiveData.getValue();
if (pkBean != null) {
AudioEngineManager.get().connectOtherRoom(String.valueOf(pkBean.getARoomId()), pkBean.getAUid());
}
}
} }
} }

View File

@@ -72,7 +72,8 @@ public class TRtcEngineHandler extends Handler {
// 如果麦上没有自己,并且自己在说话,要把自己变成听众 // 如果麦上没有自己,并且自己在说话,要把自己变成听众
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE); AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE);
} else if (micPosition == Integer.MIN_VALUE && } else if (micPosition == Integer.MIN_VALUE &&
uid != AuthModel.get().getCurrentUid()) { uid != AuthModel.get().getCurrentUid() &&
!(AvRoomDataManager.get().isSingleRoom() && AvRoomDataManager.get().isOpenAnotherPKMode())) {
// 如果麦上没有这个人,要把他静音 // 如果麦上没有这个人,要把他静音
AudioEngineManager.get().setRemoteMute(uid, true); AudioEngineManager.get().setRemoteMute(uid, true);
} }

View File

@@ -12,6 +12,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean;
import com.yizhuan.xchat_android_core.manager.AudioEngineManager;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.BaseEngine; import com.yizhuan.xchat_android_core.manager.BaseEngine;
import com.yizhuan.xchat_android_core.music.db.bean.LocalMusicBean; import com.yizhuan.xchat_android_core.music.db.bean.LocalMusicBean;
@@ -29,16 +31,12 @@ import io.agora.rtc.Constants;
*/ */
public class TRtcEngineManager extends BaseEngine { public class TRtcEngineManager extends BaseEngine {
public static String TAG = TRtcEngineManager.class.getSimpleName(); public static String TAG = TRtcEngineManager.class.getSimpleName();
@Nullable
public TRTCEngineAdapter mRtcEngine;
@NonNull @NonNull
public final Handler mRtcEngineHandler = new TRtcEngineHandler(); public final Handler mRtcEngineHandler = new TRtcEngineHandler();
@NonNull @NonNull
public final TRtcEngineEventHandler mEngineEventHandler = new TRtcEngineEventHandler(); public final TRtcEngineEventHandler mEngineEventHandler = new TRtcEngineEventHandler();
@Nullable
private static final class Helper { public TRTCEngineAdapter mRtcEngine;
private static final TRtcEngineManager INSTANCE = new TRtcEngineManager();
}
private TRtcEngineManager() { private TRtcEngineManager() {
super(); super();
@@ -53,7 +51,7 @@ public class TRtcEngineManager extends BaseEngine {
Logger.t(TAG).d("enterChannel channelId:%d", channelId); Logger.t(TAG).d("enterChannel channelId:%d", channelId);
if (mRtcEngine == null) { if (mRtcEngine == null) {
try { try {
mRtcEngine = TRTCEngineAdapter.create(BasicConfig.INSTANCE.getAppContext(),String.valueOf(SDKConfig.TX_SDKAPPID), mEngineEventHandler); mRtcEngine = TRTCEngineAdapter.create(BasicConfig.INSTANCE.getAppContext(), String.valueOf(SDKConfig.TX_SDKAPPID), mEngineEventHandler);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException( throw new RuntimeException(
"NEED TO check rtc sdk init fatal error\n" + Log.getStackTraceString(e)); "NEED TO check rtc sdk init fatal error\n" + Log.getStackTraceString(e));
@@ -102,7 +100,6 @@ public class TRtcEngineManager extends BaseEngine {
setMute(isMute); setMute(isMute);
} }
@Override @Override
public synchronized void leaveChannel() { public synchronized void leaveChannel() {
Logger.t(TAG).d("leaveChannel "); Logger.t(TAG).d("leaveChannel ");
@@ -138,6 +135,20 @@ public class TRtcEngineManager extends BaseEngine {
return false; return false;
} }
@Override
public void connectOtherRoom(String roomId, long userUid) {
if (mRtcEngine != null) {
mRtcEngine.ConnectOtherRoom(String.format("{\"strRoomId\":\"%s\",\"userId\":\"%s\"}", roomId, userUid));
}
}
@Override
public void disconnectOtherRoom() {
if (mRtcEngine != null) {
mRtcEngine.DisconnectOtherRoom();
}
}
@Override @Override
public void setRemoteMute(long uid, boolean mute) { public void setRemoteMute(long uid, boolean mute) {
Logger.t(TAG).d("setRemoteMute uid:%s mute:%s", uid, mute); Logger.t(TAG).d("setRemoteMute uid:%s mute:%s", uid, mute);
@@ -257,7 +268,6 @@ public class TRtcEngineManager extends BaseEngine {
return mRtcEngine.getAudioMixingDuration(); return mRtcEngine.getAudioMixingDuration();
} }
@Override @Override
public void setChatRoomOnlineStatus(boolean status) { public void setChatRoomOnlineStatus(boolean status) {
@@ -267,4 +277,8 @@ public class TRtcEngineManager extends BaseEngine {
public void setASMRMode(boolean enable) { public void setASMRMode(boolean enable) {
} }
private static final class Helper {
private static final TRtcEngineManager INSTANCE = new TRtcEngineManager();
}
} }

View File

@@ -349,6 +349,15 @@ public class ZegoEngineManager extends BaseEngine {
return false; return false;
} }
@Override
public void connectOtherRoom(String roomId, long userUid) {
}
@Override
public void disconnectOtherRoom() {
}
public void playStreamIdByUid(long uid, boolean play) { public void playStreamIdByUid(long uid, boolean play) {
for (String streamId : playStreamIdSet) { for (String streamId : playStreamIdSet) {

View File

@@ -414,8 +414,9 @@ public class CustomAttachment implements MsgAttachment {
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_REFUSE = 838;// 个播pk拒绝邀请 public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_REFUSE = 838;// 个播pk拒绝邀请
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_ACCEPT = 839;// 个播pk接受邀请 public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_ACCEPT = 839;// 个播pk接受邀请
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_UPDATE = 8310;// 个播pk面板更新消息 public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_UPDATE = 8310;// 个播pk面板更新消息
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_FINISH = 8311;// 个播pk结通知 public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_RESULT = 8311;// 个播pk结通知
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_NOTIFY = 8312;// 个播pk结束触发的飘屏通知 public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_NOTIFY = 8312;// 个播pk结束触发的飘屏通知
public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_PK_FINISH = 8313;// 个播pk结束通知
/** /**
* 贵族 * 贵族

View File

@@ -51,6 +51,8 @@ public class RoomPkBean implements Serializable {
//当前方房主uid //当前方房主uid
private long cUid; private long cUid;
//当前方房主roomId
private long cRoomId;
//当前方房主头像 //当前方房主头像
private String cAvatar; private String cAvatar;
//当前方房间名称 //当前方房间名称
@@ -66,6 +68,8 @@ public class RoomPkBean implements Serializable {
//另一方方房主uid //另一方方房主uid
private long aUid; private long aUid;
//另一方方房主roomId
private long aRoomId;
//另一方房主头像 //另一方房主头像
private String aAvatar; private String aAvatar;
//另一方房间名称 //另一方房间名称

View File

@@ -33,7 +33,7 @@ object SingleRoomPKModel {
operateUid: Long, operateUid: Long,
playDesc: String? playDesc: String?
): Single<String> { ): Single<String> {
return api.initiateRoomPK(acceptUid, duration, inviteUid, operateUid,2, playDesc) return api.initiateRoomPK(acceptUid, duration, inviteUid, operateUid, 2, playDesc)
.compose(RxHelper.handleSchAndExce()) .compose(RxHelper.handleSchAndExce())
.compose(RxHelper.handleStringData()) .compose(RxHelper.handleStringData())
} }
@@ -73,7 +73,7 @@ object SingleRoomPKModel {
pageNum: Int, pageNum: Int,
pageSize: Int pageSize: Int
): Single<List<SimpleRoomInfo>> { ): Single<List<SimpleRoomInfo>> {
return api.searchPermitRoom(erbanNo,roomUid, pageNum, pageSize) return api.searchPermitRoom(erbanNo, roomUid, pageNum, pageSize)
.compose(RxHelper.handleSchAndExce()) .compose(RxHelper.handleSchAndExce())
.compose(RxHelper.handleBeanData()) .compose(RxHelper.handleBeanData())
} }
@@ -93,6 +93,21 @@ object SingleRoomPKModel {
.compose(RxHelper.handleBeanData()) .compose(RxHelper.handleBeanData())
} }
/**
* 结束跨房PK
*
* @param roundId roundId
*
* @return
*/
fun endSingleRoomPk(
roundId: String
): Single<String> {
return api.endSingleRoomPk(roundId)
.compose(RxHelper.handleSchAndExce())
.compose(RxHelper.handleStringData())
}
private interface Api { private interface Api {
/** /**
* 发起挑战 * 发起挑战
@@ -149,6 +164,18 @@ object SingleRoomPKModel {
@Field("roomUid") roomUid: Long? @Field("roomUid") roomUid: Long?
): Single<ServiceResult<RoomPkBean>> ): Single<ServiceResult<RoomPkBean>>
/**
*
* 结束跨房PK
*
* @return
*/
@FormUrlEncoded
@POST("/crossroompkround/endSingleRoomPk")
fun endSingleRoomPk(
@Field("roundId") roundId: String?
): Single<ServiceResult<String>>
} }