|
@@ -8,6 +8,7 @@ import android.content.Intent;
|
|
|
import android.content.ServiceConnection;
|
|
|
import android.content.pm.ActivityInfo;
|
|
|
import android.content.res.Configuration;
|
|
|
+import android.graphics.Color;
|
|
|
import android.net.Uri;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.Handler;
|
|
@@ -122,6 +123,9 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
public static final int SEND_APP_BACKGROUND_MSG = 1001;//退到后台消息
|
|
|
public static final int SEND_JUMP_OTHER_PAGE_MSG = 1002;//页面切换消息(购物车详情页等等)
|
|
|
public static final int OPEN_SHOP_CAR_DIALOG = 1003;//打开购物车
|
|
|
+ public static final int LIVE_STATUS_IS_REST = 1;//休息一下,马上回来
|
|
|
+ public static final int LIVE_STATUS_IS_CLOSE_VIDEO = 2;//主持人关闭画面
|
|
|
+ public static final int LIVE_STATUS_IS_OFFLINE = 3;//直播已结束
|
|
|
ConstraintLayout content_view;
|
|
|
RelativeLayout mFlLiveView;
|
|
|
LinearLayout ll_like;
|
|
@@ -168,6 +172,7 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
private String mUserId;
|
|
|
private boolean connectStatusIsPaused = false;
|
|
|
private boolean isNeedRefresh = false;//是否需要重新刷新房间信息
|
|
|
+ private boolean liveIsFinish = false;//直播间是否已结束
|
|
|
private ServiceConnection serviceConnection;
|
|
|
private ObjectAnimator hideHeaderInfoAnim;
|
|
|
private ObjectAnimator showHeaderInfoAnim;
|
|
@@ -396,8 +401,7 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
}
|
|
|
|
|
|
if (id == R.id.icon_add_like) {
|
|
|
- if (connectStatusIsPaused) {
|
|
|
- //连接状态异常,暂停连麦
|
|
|
+ if (checkAddLikeMode()) {
|
|
|
return;
|
|
|
}
|
|
|
//点赞
|
|
@@ -415,6 +419,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
}
|
|
|
|
|
|
if (id == R.id.view_shop_car_anim) {
|
|
|
+ if (liveIsFinish) {
|
|
|
+ ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
|
|
|
+ return;
|
|
|
+ }
|
|
|
//购物车
|
|
|
if (isFullScreen()) {
|
|
|
changeOrientation();
|
|
@@ -559,6 +567,25 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 检查点赞按钮是否可用
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private boolean checkAddLikeMode() {
|
|
|
+ if (liveIsFinish) {
|
|
|
+ ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if (connectStatusIsPaused) {
|
|
|
+ //连接状态异常,暂停点赞
|
|
|
+ ToastUtil.getInstance().show(LiveRoomActivity.this, "网络连接状态异常");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void showInputDialog() {
|
|
|
if (checkChatMode()) return;
|
|
|
if (mInputBarDialog == null) {
|
|
@@ -855,7 +882,7 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
|
|
|
@Override
|
|
|
public void showRestView() {
|
|
|
- showLiveStatusView(true);
|
|
|
+ showLiveStatusView(LIVE_STATUS_IS_REST);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -867,10 +894,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
showRestView();
|
|
|
return;
|
|
|
}
|
|
|
- showLiveStatusView(false);
|
|
|
+ showLiveStatusView(LIVE_STATUS_IS_CLOSE_VIDEO);
|
|
|
}
|
|
|
|
|
|
- private void showLiveStatusView(boolean isRestView) {
|
|
|
+ private void showLiveStatusView(int status) {
|
|
|
if (isFinishing() || isDestroyed()) {
|
|
|
return;
|
|
|
}
|
|
@@ -883,12 +910,21 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
public void run() {
|
|
|
hideLoading();
|
|
|
mViewLiveStatus.setVisibility(View.VISIBLE);
|
|
|
- if (isRestView) {
|
|
|
+ if (status == LIVE_STATUS_IS_REST) {
|
|
|
mIvLiveStatusCenterIcon.setImageResource(R.drawable.icon_live_room_rest_bg);
|
|
|
- mTvLiveStatusTipText.setText("休息一下马上回来!!");
|
|
|
- } else {
|
|
|
+ mTvLiveStatusTipText.setText("休息一下,马上回来!!");
|
|
|
+ mTvLiveStatusTipText.setTextSize(12);
|
|
|
+ mTvLiveStatusTipText.setBackgroundResource(com.cooleshow.base.R.drawable.shape_gray_14dp);
|
|
|
+ } else if (status == LIVE_STATUS_IS_CLOSE_VIDEO) {
|
|
|
mIvLiveStatusCenterIcon.setImageResource(R.drawable.icon_live_room_close_video);
|
|
|
mTvLiveStatusTipText.setText("主持人已关闭画面!");
|
|
|
+ mTvLiveStatusTipText.setTextSize(12);
|
|
|
+ mTvLiveStatusTipText.setBackgroundResource(com.cooleshow.base.R.drawable.shape_gray_14dp);
|
|
|
+ } else if (status == LIVE_STATUS_IS_OFFLINE) {
|
|
|
+ mIvLiveStatusCenterIcon.setImageResource(R.drawable.icon_live_end_tip);
|
|
|
+ mTvLiveStatusTipText.setText("直播已结束!");
|
|
|
+ mTvLiveStatusTipText.setTextSize(14);
|
|
|
+ mTvLiveStatusTipText.setBackgroundColor(Color.TRANSPARENT);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -952,7 +988,14 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
public void liveRoomOffline() {
|
|
|
//关闭直播间
|
|
|
ToastUtil.getInstance().show(this, "直播已结束");
|
|
|
- finish();
|
|
|
+ this.liveIsFinish = true;
|
|
|
+ //取消连麦
|
|
|
+ handleCloseMicEvent();
|
|
|
+ notifyMicDelAll();
|
|
|
+ showLiveStatusView(LIVE_STATUS_IS_OFFLINE);
|
|
|
+ hideDialog();
|
|
|
+ //离开房间
|
|
|
+ LiveEventHelper.getInstance().leaveRoom(null);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -967,6 +1010,20 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 关闭一些交互弹窗
|
|
|
+ */
|
|
|
+ private void hideDialog() {
|
|
|
+ //关闭邀请弹窗
|
|
|
+ if (mInviteSeatMicTipDialog != null && mInviteSeatMicTipDialog.isShowing()) {
|
|
|
+ mInviteSeatMicTipDialog.dismiss();
|
|
|
+ }
|
|
|
+ //关闭商品弹窗
|
|
|
+ if (mShopCarDialog != null && mShopCarDialog.isShowing()) {
|
|
|
+ mShopCarDialog.dismiss();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* @param rcUserSeatResponseMessage
|
|
|
*/
|
|
|
@Override
|
|
@@ -1112,6 +1169,14 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
|
|
|
@Override
|
|
|
public void subscribeAVStreamSuccess(List<RCRTCInputStream> inputStreams) {
|
|
|
+ if (isDestroyed() || isFinishing()) {
|
|
|
+ return;
|
|
|
+
|
|
|
+ }
|
|
|
+ if (liveIsFinish) {
|
|
|
+ //直播已结束
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (inputStreams != null) {
|
|
|
refresh();
|
|
|
} else {
|
|
@@ -1133,6 +1198,20 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 清除所有连麦用户的UI
|
|
|
+ */
|
|
|
+ private void notifyMicDelAll() {
|
|
|
+ if (mLlMicContainer != null) {
|
|
|
+ mLlMicContainer.post(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ mLlMicContainer.delAll();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void notifyMicContainerDel(String userId) {
|
|
|
mLlMicContainer.post(new Runnable() {
|
|
|
@Override
|
|
@@ -1165,7 +1244,6 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
@Override
|
|
|
public void onExitSeatMicSuccess() {
|
|
|
updateMicIcon(LiveRoomMsgConstants.MIC_STATUS_NORMAL);
|
|
|
- notifyMicContainerDel(mUserId);
|
|
|
if (presenter != null) {
|
|
|
presenter.handleAction(LiveRoomMsgConstants.ACTION_SEND_DOWN_SEAT_MIC);
|
|
|
}
|
|
@@ -1463,6 +1541,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
|
|
|
@Override
|
|
|
public void onBackPressed() {
|
|
|
+ if (liveIsFinish) {
|
|
|
+ super.onBackPressed();
|
|
|
+ return;
|
|
|
+ }
|
|
|
boolean permissionOverlay = FloatWindowHelper.requestOverlayPermission(this);
|
|
|
if (!permissionOverlay) {
|
|
|
showOpenOverlayPermissionTipDialog();
|
|
@@ -1636,6 +1718,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
* 检查聊天模式
|
|
|
*/
|
|
|
public boolean checkChatMode() {
|
|
|
+ if (liveIsFinish) {
|
|
|
+ ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
if (isEnableAll) {
|
|
|
ToastUtil.getInstance().show(LiveRoomActivity.this, "您已被管理员禁言");
|
|
|
return true;
|
|
@@ -1651,6 +1737,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
|
|
|
* 检查mic模式
|
|
|
*/
|
|
|
public boolean checkMicMode() {
|
|
|
+ if (liveIsFinish) {
|
|
|
+ ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
|
|
|
+ return true;
|
|
|
+ }
|
|
|
if (isEnableAll) {
|
|
|
ToastUtil.getInstance().show(LiveRoomActivity.this, "您已被管理员禁言");
|
|
|
return true;
|