|
@@ -26,8 +26,12 @@ import com.cooleshow.base.router.RouterPath;
|
|
|
import com.cooleshow.base.ui.activity.BaseMVPActivity;
|
|
|
import com.cooleshow.base.utils.AppUtils;
|
|
|
import com.cooleshow.base.utils.ClickUtils;
|
|
|
+import com.cooleshow.base.utils.DateUtil;
|
|
|
+import com.cooleshow.base.utils.DateUtils;
|
|
|
+import com.cooleshow.base.utils.LogUtils;
|
|
|
import com.cooleshow.base.utils.PermissionUtils;
|
|
|
import com.cooleshow.base.utils.SoftKeyboardUtil;
|
|
|
+import com.cooleshow.base.utils.TimeUtils;
|
|
|
import com.cooleshow.base.utils.ToastUtil;
|
|
|
import com.cooleshow.base.utils.Utils;
|
|
|
import com.cooleshow.base.widgets.InputBar;
|
|
@@ -62,6 +66,7 @@ import com.rong.io.live.message.RCUserSeatApplyMessage;
|
|
|
import com.tbruyelle.rxpermissions3.RxPermissions;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
@@ -103,9 +108,13 @@ import io.rong.message.TextMessage;
|
|
|
@Route(path = RouterPath.LiveCenter.ACTIVITY_LIVE_ROOM_TEACHER)
|
|
|
public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLiveRoomLayoutBinding, LiveRoomPresenter> implements LiveRoomContract.LiveRoomView, View.OnClickListener, SoftKeyboardUtil.OnSoftInputChangedListener {
|
|
|
public static final String ROOMID_KEY = "roomid_key";
|
|
|
+ public static final String DEFAULT_TIME_TEXT = "00:00:00";
|
|
|
public static final int SYNC_ADD_LIKE_TIME = 10000;//同步点赞数时长(兼心跳功能)
|
|
|
public static final int SEND_APP_BACKGROUND_MSG = 1001;//退到后台消息
|
|
|
public static final int SHARE_LIVE_REQUEST_CODE = 1002;//分享直播
|
|
|
+ public static final int LIVE_TIME_COUNT = 1003;//直播倒计时
|
|
|
+ public static final int LIVE_TIME_COUNT_END_TIP = 1004;//直播课剩余时间倒计时
|
|
|
+ public static final int LIVE_TIME_COUNT_SPACE = 1000;//直播倒计时间隔
|
|
|
|
|
|
|
|
|
ImageView ivReverseCamera;
|
|
@@ -189,12 +198,40 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
+ if (what == LIVE_TIME_COUNT) {
|
|
|
+ //倒计时处理
|
|
|
+ countTimeTotal = countTimeTotal - LIVE_TIME_COUNT_SPACE;
|
|
|
+ if (countTimeTotal <= 0) {
|
|
|
+ updateTimeText(DEFAULT_TIME_TEXT);
|
|
|
+ if (checkIsNeedRecount()) {
|
|
|
+ countTimeTotal = mRoomInfoBean.getExpiredCloseMinute();
|
|
|
+ sendEndTipCountTimeMessage();
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String s = DateUtil.convertDateTime(countTimeTotal);
|
|
|
+ updateTimeText(s);
|
|
|
+ sendCountTimeMessage();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (what == LIVE_TIME_COUNT_END_TIP) {
|
|
|
+ countTimeTotal = countTimeTotal - LIVE_TIME_COUNT_SPACE;
|
|
|
+ if (countTimeTotal <= 0) {
|
|
|
+ updateEndTimeTipText(DEFAULT_TIME_TEXT);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String s = DateUtil.convertDateTime(countTimeTotal);
|
|
|
+ updateEndTimeTipText(s);
|
|
|
+ sendEndTipCountTimeMessage();
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
|
|
|
private LiveRoomManagerDialog mRoomManagerDialog;
|
|
|
private CommonConfirmDialog mConfirmDialog;
|
|
|
private boolean isOnResume = false;
|
|
|
+ private long countTimeTotal = 0;
|
|
|
|
|
|
public static void start(Context context, String roomId) {
|
|
|
Intent intent = new Intent(context, TeacherLiveRoomActivity.class);
|
|
@@ -319,6 +356,23 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private void updateTimeText(String text) {
|
|
|
+ if (viewBinding.viewMainLayout.tvTimeCount != null) {
|
|
|
+ viewBinding.viewMainLayout.tvTimeCount.setVisibility(View.VISIBLE);
|
|
|
+ viewBinding.viewMainLayout.tvTimeCountEndTip.setVisibility(View.GONE);
|
|
|
+ viewBinding.viewMainLayout.tvTimeCount.setText(text);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateEndTimeTipText(String text) {
|
|
|
+ if (viewBinding.viewMainLayout.tvTimeCountEndTip != null) {
|
|
|
+ viewBinding.viewMainLayout.tvTimeCount.setVisibility(View.GONE);
|
|
|
+ viewBinding.viewMainLayout.tvTimeCountEndTip.setVisibility(View.VISIBLE);
|
|
|
+ viewBinding.viewMainLayout.tvTimeCountEndTip.setText("直播关闭: " + text);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void initListener() {
|
|
|
IMCenter.getInstance().addConnectionStatusListener(connectStatusListener);
|
|
|
SoftKeyboardUtil.registerSoftInputChangedListener(getWindow(), this);
|
|
@@ -443,6 +497,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
finish();
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
mRoomInfoBean = roomInfoBean;
|
|
|
if (mMessageAdapter != null) {
|
|
|
mMessageAdapter.setRoomAuthorId(roomInfoBean.speakerId);
|
|
@@ -471,6 +526,33 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void handleTimerCount() {
|
|
|
+ if (mRoomInfoBean == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Date date = DateUtil.str2Date(mRoomInfoBean.liveEndTime);
|
|
|
+ long currentTime = System.currentTimeMillis();
|
|
|
+ if (date != null) {
|
|
|
+ long timeResult = date.getTime() - currentTime;
|
|
|
+ countTimeTotal = timeResult > 0 ? timeResult : 0;
|
|
|
+ sendCountTimeMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendCountTimeMessage() {
|
|
|
+ mHandler.removeMessages(LIVE_TIME_COUNT);
|
|
|
+ android.os.Message message = android.os.Message.obtain();
|
|
|
+ message.what = LIVE_TIME_COUNT;
|
|
|
+ mHandler.sendMessageDelayed(message, LIVE_TIME_COUNT_SPACE);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendEndTipCountTimeMessage() {
|
|
|
+ mHandler.removeMessages(LIVE_TIME_COUNT_END_TIP);
|
|
|
+ android.os.Message message = android.os.Message.obtain();
|
|
|
+ message.what = LIVE_TIME_COUNT_END_TIP;
|
|
|
+ mHandler.sendMessageDelayed(message, LIVE_TIME_COUNT_SPACE);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 是否是预览模式
|
|
|
*
|
|
@@ -817,6 +899,7 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
Log.i("pq", "onPublishSuccess");
|
|
|
//通知开启直播间回放
|
|
|
switchOpsLiveVideoMode(LiveConfig.OPEN_OPS_LIVE_VIDEO_TYPE);
|
|
|
+ handleTimerCount();
|
|
|
refresh();
|
|
|
}
|
|
|
|
|
@@ -1254,9 +1337,9 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
String targetId = data.getStringExtra("targetId");
|
|
|
int conversationValue = data.getIntExtra("conversation", -1);
|
|
|
if (mRoomInfoBean != null && !TextUtils.isEmpty(targetId) && conversationValue != -1) {
|
|
|
- OpenChatHelper.sendShareLiveMessage(targetId,conversationValue,mRoomInfoBean.roomUid
|
|
|
- ,mRoomInfoBean.speakerPic,
|
|
|
- mRoomInfoBean.speakerName,mRoomInfoBean.liveRemark);
|
|
|
+ OpenChatHelper.sendShareLiveMessage(targetId, conversationValue, mRoomInfoBean.roomUid
|
|
|
+ , mRoomInfoBean.speakerPic,
|
|
|
+ mRoomInfoBean.speakerName, mRoomInfoBean.liveRemark);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1285,6 +1368,18 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 直播课需要有一个额外时间提示
|
|
|
+ */
|
|
|
+ private boolean checkIsNeedRecount() {
|
|
|
+ if (mRoomInfoBean != null) {
|
|
|
+ if (!TextUtils.equals(mRoomInfoBean.roomType, "TEMP") && mRoomInfoBean.expiredCloseMinute != 0) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
private boolean checkActivityIsFinish() {
|
|
|
if (isFinishing() || isDestroyed()) {
|
|
|
return true;
|