TRTC支持个播跨房PK
This commit is contained in:
@@ -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"
|
||||||
|
@@ -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中...");
|
||||||
|
@@ -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)
|
||||||
|
BIN
app/src/main/res/drawable-xhdpi/ic_room_opt_single_pk_open.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_room_opt_single_pk_open.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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结束通知
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 贵族
|
* 贵族
|
||||||
|
@@ -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;
|
||||||
//另一方房间名称
|
//另一方房间名称
|
||||||
|
@@ -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>>
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user