Selaa lähdekoodia

添加网络教室部分入口

Pq 2 vuotta sitten
vanhempi
commit
7d112f8622

+ 33 - 14
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -21,13 +21,19 @@ object RouterPath {
         }
     }
 
-    class LiveCenter{
-        companion object{
-            const val PATH_LIVE ="/com/daya/live_teaching/ui/LiveActivity"
-            const val ACTIVITY_LIVE_ROOM="/com/cooleshow/student/ui/live/LiveRoomActivity"
-            const val ACTIVITY_PHOTO_PREVIEW ="/com/daya/live_teaching/ui/ACTIVITY_PHOTO_PREVIEW"
-            const val TEACHER_MINE_CREATE_COURSE = "/teacher/ui/live/CreateLiveActivity"
+    class LiveCenter {
+        companion object {
+            const val ACTIVITY_LIVE_ROOM = "/com/cooleshow/student/ui/live/LiveRoomActivity"
             const val ACTIVITY_LIVE_ROOM_TEACHER = "/teacher/ui/live/LiveRoomActivity"
+            const val TEACHER_MINE_CREATE_COURSE = "/teacher/ui/live/CreateLiveActivity"
+        }
+    }
+
+    //网络教室
+    class OnlineClassroom{
+        companion object {
+            const val PATH_LIVE = "/daya/live_teaching/ui/LiveActivity"
+            const val ACTIVITY_PHOTO_PREVIEW = "/daya/live_teaching/ui/ACTIVITY_PHOTO_PREVIEW"
         }
     }
 
@@ -46,7 +52,8 @@ object RouterPath {
         companion object {
             const val ACTIVITY_HTML = "/ui/activity/web/HtmlActivity"
             const val ACTIVITY_ACCOMPANY_HTML = "/ui/activity/web/AccompanyActivity"
-            const val ACTIVITY_HORIZONTAL_SCREEN_HTML = "/ui/activity/web/HtmlHorizontalScreenActivity"
+            const val ACTIVITY_HORIZONTAL_SCREEN_HTML =
+                "/ui/activity/web/HtmlHorizontalScreenActivity"
 
         }
     }
@@ -59,35 +66,43 @@ object RouterPath {
             const val PIANO_ROOM_COURSE_DETAIL = "/ui/course/PianoRoomCourseDetailActivity"
             const val PIANO_ROOM_COURSE_HOMEWORK = "/ui/course/PianoRoomCourseHomeWorkActivity"
             const val TEACHER_MINE_LIVE_COURSE = "/teacher/ui/course/MineLiveCourseActivity"
-            const val TEACHER_MINE_CREATE_LIVE_COURSE_INFO = "/teacher/ui/course/CreateLiveCourseInfoActivity"
-            const val TEACHER_MINE_CREATE_LIVE_COURSE_ARRANGEMENT = "/teacher/ui/course/CreateLiveCourseArrangementActivity"
+            const val TEACHER_MINE_CREATE_LIVE_COURSE_INFO =
+                "/teacher/ui/course/CreateLiveCourseInfoActivity"
+            const val TEACHER_MINE_CREATE_LIVE_COURSE_ARRANGEMENT =
+                "/teacher/ui/course/CreateLiveCourseArrangementActivity"
             const val TEACHER_MINE_VIDEO_COURSE = "/teacher/ui/course/MineVideoCourseActivity"
             const val SPARRING_EVALUATE_TEACHER = "/teacher/ui/course/EvaluateTeacherActivity"
 
         }
     }
+
     //曲谱模块
     class ScoreCenter {
         companion object {
             const val TEACHER_MINE_SCORE = "/teacher/ui/score/MineScoreActivity"
         }
     }
+
     //收入模块
     class IncomeCenter {
         companion object {
             const val TEACHER_MINE_INCOME = "/teacher/ui/income/MineIncomeActivity"
             const val TEACHER_MINE_WITHDRAWAL = "/teacher/ui/income/WithdrawalActivity"
-            const val TEACHER_MINE_WITHDRAWAL_SUCCESS = "/teacher/ui/income/WithdrawalSuccessActivity"
+            const val TEACHER_MINE_WITHDRAWAL_SUCCESS =
+                "/teacher/ui/income/WithdrawalSuccessActivity"
             const val TEACHER_MINE_WITHDRAWAL_RECORD = "/teacher/ui/income/WithdrawalRecordActivity"
-            const val TEACHER_MINE_EARNING_STATISTICS= "/teacher/ui/income/EarningStatisticsActivity"
+            const val TEACHER_MINE_EARNING_STATISTICS =
+                "/teacher/ui/income/EarningStatisticsActivity"
         }
     }
+
     //消息模块
     class MessageCenter {
         companion object {
             const val TEACHER_MESSAGE_MESSAGEBOX = "/teacher/ui/message/MessageBoxActivity"
         }
     }
+
     //作业模块
     class WorkCenter {
         companion object {
@@ -101,7 +116,8 @@ object RouterPath {
         companion object {
             const val TEACHER_RECEIVED_COMMENT = "/teacher/ui/comment/ReceivedCommentActivity"
             const val TEACHER_COURSE_COMMENT = "/teacher/ui/comment/CourseCommentActivity"
-            const val TEACHER_COURSE_COMMENT_DETAIL = "/teacher/ui/comment/CourseCommentDetailActivity"
+            const val TEACHER_COURSE_COMMENT_DETAIL =
+                "/teacher/ui/comment/CourseCommentDetailActivity"
         }
     }
 
@@ -110,7 +126,8 @@ object RouterPath {
         companion object {
             const val HOME_PAGE = "/teacher/ui/homepage/HomePageActivity"
             const val MINE_STYLE_PAGE = "/teacher/ui/minestyle/MineStyleActivity"
-            const val MINE_TEACHABLE_INSTRUMENT = "/teacher/ui/minestyle/TeachableInstrumentActivity"
+            const val MINE_TEACHABLE_INSTRUMENT =
+                "/teacher/ui/minestyle/TeachableInstrumentActivity"
             const val MINE_CHECK_TEACHABLE = "/ui/minestyle/CheckTeachableActivity"
             const val MINE_PERSONAL_SETTING = "/teacher/ui/mine/PersonalSettingActivity"
             const val MINE_SETTING = "/teacher/ui/mine/SettingActivity"
@@ -133,13 +150,15 @@ object RouterPath {
             const val MINE_EQUIPMENT_TEST = "/ui/mine/EquipmentTestActivity"
         }
     }
+
     //聊天模块
     class ChatCenter {
         companion object {
             const val CHAT_SELECT_SCORE = "/rong/imkit/activity/SelectScoreChatActivity"
             const val CHAT_CREATE_GROUP = "/rong/imkit/activity/CreateGroupActivity"
             const val CHAT_GROUP_SETTING = "/rong/imkit/activity/ChatGroupSettingActivity"
-            const val CHAT_GROUP_SEARCH_HISTORY = "/rong/imkit/activity/SearchHistoryMessageActivity"
+            const val CHAT_GROUP_SEARCH_HISTORY =
+                "/rong/imkit/activity/SearchHistoryMessageActivity"
             const val CHAT_GROUP_NOTICE = "/rong/imkit/activity/NoticeActivity"
             const val CHAT_GROUP_NOTICE_EDIT = "/rong/imkit/activity/NoticeEditActivity"
             const val CHAT_GROUP_SET_REMARK = "/rong/imkit/activity/SetRemarksActivity"

+ 12 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/DateUtil.java

@@ -1031,6 +1031,18 @@ public class DateUtil {
     }
 
 
+    public static long forMatLong(String time,SimpleDateFormat datetimeFormat) {
+        try {
+            datetimeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+            Date date = datetimeFormat.parse(time);
+            return date.getTime();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return 0;
+    }
+
     public static long forMatLong(String time) {
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");

+ 6 - 3
live_teaching/build.gradle

@@ -1,4 +1,5 @@
 apply plugin: 'com.android.library'
+
 android {
     compileSdkVersion rootProject.ext.android.compileSdkVersion
     defaultConfig {
@@ -10,10 +11,10 @@ android {
         ndk {
             abiFilters "armeabi-v7a", "arm64-v8a"
         }
+
         javaCompileOptions {
             annotationProcessorOptions {
                 arguments = [AROUTER_MODULE_NAME: project.getName()]
-                includeCompileClasspath = true
             }
         }
         multiDexEnabled true
@@ -48,11 +49,12 @@ android {
         }
     }
 
-    buildFeatures{
+    buildFeatures {
         viewBinding = true
     }
 }
 
+
 dependencies {
     api fileTree(dir: 'libs', include: ['*.jar'])
     implementation 'androidx.appcompat:appcompat:1.1.0'
@@ -72,5 +74,6 @@ dependencies {
     implementation project(path: ':usercenter')
     implementation project(path: ':BaseLibrary')
     implementation 'com.h6ah4i.android.widget.verticalseekbar:verticalseekbar:1.0.0'
-
+    //ARouter
+    annotationProcessor("com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version")
 }

+ 21 - 2
live_teaching/src/main/java/com/daya/live_teaching/model/ClassMember.java

@@ -2,14 +2,17 @@ package com.daya.live_teaching.model;
 
 import android.text.TextUtils;
 
+import com.cooleshow.base.utils.DateUtil;
+
 import java.io.Serializable;
+import java.text.SimpleDateFormat;
 import java.util.List;
 
 public class ClassMember implements Serializable {
     private boolean cameraFlag;
     public String courseScheduleId;
     public String id;
-    private long joinTime;
+    private String joinTime;
 
     public boolean isMicrophone() {
         return micFlag;
@@ -78,10 +81,25 @@ public class ClassMember implements Serializable {
 
 
     public long getJoinTime() {
-        return joinTime;
+        try {
+            long time = DateUtil.parseDatetime(joinTime).getTime();
+            return time;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return 0;
     }
 
     public void setJoinTime(long joinTime) {
+        try {
+            this.joinTime = DateUtil.getMillon(joinTime);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    public void setJoinTime(String joinTime) {
         this.joinTime = joinTime;
     }
 
@@ -124,6 +142,7 @@ public class ClassMember implements Serializable {
     public void setCamera(boolean cameraFlag) {
         this.cameraFlag = cameraFlag;
     }
+
     public static class PlayMidiJsonBean implements Serializable {
 
         /**

+ 8 - 7
live_teaching/src/main/java/com/daya/live_teaching/model/Result.java

@@ -6,10 +6,10 @@ package com.daya.live_teaching.model;
  * @param <R> 请求结果的实体类
  */
 public class Result<R> {
-    private Data<R> data;
-
+    private R data;
     private int errCode;
     private int code;
+    private String nowTime;
 
     public int getCode() {
         return code;
@@ -23,11 +23,11 @@ public class Result<R> {
 
     private String errMsg;
 
-    public Data<R> getData() {
+    public R getData() {
         return data;
     }
 
-    public void setData(Data<R> data) {
+    public void setData(R data) {
         this.data = data;
     }
 
@@ -62,21 +62,22 @@ public class Result<R> {
      */
     public R getDataResult() {
         if (data != null) {
-            return data.getResult();
+            return data;
         }
-
         return null;
     }
 
     public static class Data<R> {
         public R result;
+        public R data;
 
         public R getResult() {
-            return result;
+            return data;
         }
 
         public void setResult(R result) {
             this.result = result;
+            this.data = result;
         }
     }
 }

+ 22 - 3
live_teaching/src/main/java/com/daya/live_teaching/repository/ClassRepository.java

@@ -8,6 +8,7 @@ import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitFactory;
 import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.FileUtils;
 import com.cooleshow.base.utils.SystemUtils;
 import com.daya.live_teaching.api.LiveTeachingApi;
@@ -286,7 +287,7 @@ public class ClassRepository extends BaseRepository {
     public void deviceApprove(String roomId, String deviceType, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(PARAM_DEVICE_TYPE,deviceType);
+        bodyMap.put(PARAM_DEVICE_TYPE, deviceType);
         sealClassService.deviceApprove(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -516,7 +517,19 @@ public class ClassRepository extends BaseRepository {
     public void switchDisplay(String roomId, int type, String userId, String uri, ResultCallback<Boolean> callback) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(PARAM_TYPE, type);
+        String typeParams;
+        if (type == ScreenDisplay.Display.LECTURER.getType()) {
+            typeParams = "TEACHER";
+        } else if (type == ScreenDisplay.Display.WHITEBOARD.getType()) {
+            typeParams = "WHITE_BOARD";
+        } else if (type == ScreenDisplay.Display.SCREEN.getType()) {
+            typeParams = "SCREEN";
+        } else if (type == ScreenDisplay.Display.NONE.getType()) {
+            typeParams = "NONE";
+        } else {
+            typeParams = "STUDENT";
+        }
+        bodyMap.put(PARAM_TYPE, typeParams);
         if (userId != null) {
             bodyMap.put(PARAM_USER_ID, userId);
         }
@@ -573,7 +586,13 @@ public class ClassRepository extends BaseRepository {
                 classMember.setRole(memberChangedMessage.getRole().getValue());
                 classMember.setUserId(memberChangedMessage.getUserId());
                 classMember.setUserName(memberChangedMessage.getUserName());
-                classMember.setJoinTime(memberChangedMessage.getTimestamp());
+                try {
+                    long timestamp = memberChangedMessage.getTimestamp();
+                    String millon = DateUtil.getMillon(timestamp);
+                    classMember.setJoinTime(millon);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
                 classMember.setHandUpOn(memberChangedMessage.isHandUpOn());
                 ClassMember.PlayMidiJsonBean playMidiJsonBean = new ClassMember.PlayMidiJsonBean();
                 playMidiJsonBean.setEnable(memberChangedMessage.isMetronomeSwitch());

+ 1 - 1
live_teaching/src/main/java/com/daya/live_teaching/ui/LiveActivity.java

@@ -86,7 +86,7 @@ import io.rong.imlib.model.Conversation;
 /**
  * 网络教室
  */
-@Route(path = RouterPath.LiveCenter.PATH_LIVE)
+@Route(path = RouterPath.OnlineClassroom.PATH_LIVE)
 public class LiveActivity extends BaseActivity<ActivityLiveBinding> {
     //加入房间的信息 LoginResult
     public static final String EXTRA_LOGIN_RESULT = "extra_login_result";

+ 1 - 1
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/ComplaintDialogFragment.java

@@ -120,7 +120,7 @@ public class ComplaintDialogFragment extends BaseDialogFragment {
                             .isCompress(true)// 是否压缩 true or false
                             .forResult(PictureConfig.CHOOSE_REQUEST);
                 } else {
-                    Postcard postcard = ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_PHOTO_PREVIEW)
+                    Postcard postcard = ARouter.getInstance().build(RouterPath.OnlineClassroom.ACTIVITY_PHOTO_PREVIEW)
                             .withParcelableArrayList("list", (ArrayList<? extends Parcelable>) selectList)
                             .withInt("position", position);
                     LogisticsCenter.completion(postcard);

+ 103 - 0
live_teaching/src/main/java/com/daya/live_teaching/utils/helper/CourseEnterHelper.java

@@ -0,0 +1,103 @@
+package com.daya.live_teaching.utils.helper;
+
+import android.Manifest;
+import android.app.Activity;
+import android.text.TextUtils;
+import android.view.View;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.utils.PermissionUtils;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
+import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.live_teaching.common.ResultCallback;
+import com.daya.live_teaching.model.LoginResult;
+import com.daya.live_teaching.repository.UserRepository;
+import com.daya.live_teaching.rtc.RtcManager;
+import com.daya.live_teaching.ui.LiveActivity;
+import com.tbruyelle.rxpermissions3.RxPermissions;
+
+import androidx.fragment.app.FragmentActivity;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.rong.imlib.RongIMClient;
+
+/**
+ * Author by pq, Date on 2022/6/29.
+ * 网络教室进入helper
+ */
+public class CourseEnterHelper {
+    public static final String SNARE_DRUM = "小军鼓";
+    public static final String FLUTE = "长笛";
+
+    public static void start(FragmentActivity activity, String sealClassId, String subjectName) {
+        checkPermission(activity, sealClassId, subjectName);
+    }
+
+    private static void checkPermission(FragmentActivity activity, String sealClassId, String subjectName) {
+        Disposable subscribe = new RxPermissions(activity)
+                .request(Manifest.permission.MODIFY_AUDIO_SETTINGS,
+                        Manifest.permission.RECORD_AUDIO,
+                        Manifest.permission.CAMERA)
+                .subscribe(isAllowPermission -> {
+                    if (isAllowPermission) {
+                        prepareOpenCourseRoom(activity, sealClassId, subjectName);
+                    } else {
+                        showTipDialog(activity);
+                    }
+                });
+    }
+
+    private static void prepareOpenCourseRoom(Activity activity, String sealClassId, String subjectName) {
+        RongIMClient.ConnectionStatusListener.ConnectionStatus currentConnectionStatus = RongIMClient.getInstance().getCurrentConnectionStatus();
+        if (currentConnectionStatus == RongIMClient.ConnectionStatusListener.ConnectionStatus.CONNECTED) {
+            if (!TextUtils.isEmpty(subjectName) && (subjectName.equals(SNARE_DRUM) || subjectName.equals(FLUTE))) {
+                RtcManager.getInstance().setVideoResolution(0, activity);
+            } else {
+                RtcManager.getInstance().setVideoResolution(3, activity);
+            }
+            UserRepository userRepository = new UserRepository(activity);
+            String userName = UserHelper.getUserName();
+            userRepository.login(sealClassId, false, userName, new ResultCallback<LoginResult>() {
+                @Override
+                public void onSuccess(LoginResult loginResult) {
+                    ARouter.getInstance().build(RouterPath.OnlineClassroom.PATH_LIVE)
+                            .withSerializable(LiveActivity.EXTRA_LOGIN_RESULT, loginResult)
+                            .withBoolean(LiveActivity.EXTRA_CLOSE_CAMERA, false)
+                            .navigation();
+                }
+
+                @Override
+                public void onFail(int errorCode, String errorStr) {
+                    if (activity != null) {
+                        activity.runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (!TextUtils.isEmpty(errorStr)) {
+                                    ToastUtil.getInstance().show(activity, errorStr);
+                                } else {
+                                    ToastUtil.getInstance().show(activity, "加入课堂失败,请重试;错误码:" + errorCode);
+                                }
+                            }
+                        });
+                    }
+                }
+            });
+        } else {
+            ToastUtil.getInstance().show(activity, "聊天服务未连接,进入教室异常");
+        }
+    }
+
+    private static void showTipDialog(Activity activity) {
+        CommonConfirmDialog confirmDialog = new CommonConfirmDialog(activity);
+        confirmDialog.show();
+        confirmDialog.setContent("加入课堂需要开启音视频相关权限");
+        confirmDialog.setConfirmText("去设置");
+        confirmDialog.setOnConfirmClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                PermissionUtils.toSelfSetting(activity);
+            }
+        });
+    }
+}

+ 2 - 2
teacher/src/main/java/com/cooleshow/teacher/bean/SparringCourseHomeworkBean.java

@@ -36,10 +36,10 @@ public class SparringCourseHomeworkBean {
 
     public String startTime;
     public String endTime;
-    public int id;
+    public String id;
     public String content;
     public Object decorateTime;
-    public int courseScheduleId;
+    public String courseScheduleId;
     public int courseGroupId;
     public String courseType;
     public String subjectName;

+ 15 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java

@@ -19,6 +19,7 @@ import com.cooleshow.teacher.databinding.ActivitySparringCourseDetailLayoutBindi
 import com.cooleshow.teacher.presenter.course.SparringCourseDetailPresenter;
 import com.cooleshow.teacher.widgets.CourseSetCommentDialog;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.live_teaching.utils.helper.CourseEnterHelper;
 
 import androidx.annotation.NonNull;
 
@@ -35,6 +36,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
     private String mCourseGroupId;
     private String studentId;
     private CourseSetCommentDialog mSetCommentDialog;
+    private SparringCourseHomeworkBean courseInfoBean;
 
     @NonNull
     @Override
@@ -57,6 +59,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         viewBinding.tvSetHomework.setOnClickListener(this);
         viewBinding.tvHomeworkSetComment.setOnClickListener(this);
         viewBinding.tvSetTeacherComment.setOnClickListener(this);
+        viewBinding.tvEnterRoom.setOnClickListener(this);
     }
 
     @Override
@@ -90,6 +93,7 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
         if (infoBean == null) {
             return;
         }
+        this.courseInfoBean = infoBean;
         //时间
         viewBinding.tvCourseTime.setText(infoBean.classDate);
         //学生头像
@@ -104,16 +108,19 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
             //课程未开始
             viewBinding.tvCourseStatus.setText(getString(R.string.course_not_start_str));
             viewBinding.tvCourseStatus.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_ff802c));
+            viewBinding.tvEnterRoom.setVisibility(View.GONE);
         }
         if (TextUtils.equals(CourseConstants.COURSE_STATUS_ING, status)) {
             //课程进行中
             viewBinding.tvCourseStatus.setText(R.string.course_ing_str);
             viewBinding.tvCourseStatus.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+            viewBinding.tvEnterRoom.setVisibility(View.VISIBLE);
         }
         if (TextUtils.equals(CourseConstants.COURSE_STATUS_COMPLETE, status)) {
             //课程已结束
             viewBinding.tvCourseStatus.setText(R.string.course_is_completed);
             viewBinding.tvCourseStatus.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_999999));
+            viewBinding.tvEnterRoom.setVisibility(View.GONE);
         }
         //课后作业
         handleHomeworkData(infoBean);
@@ -269,6 +276,14 @@ public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparri
             showSetCommentDialog(CourseSetCommentDialog.TYPE_SET_TEACHER_COMMENT);
             return;
         }
+
+        if (v.getId() == R.id.tv_enter_room) {
+            //进入教室
+            if (courseInfoBean != null && TextUtils.equals(CourseConstants.COURSE_STATUS_ING, courseInfoBean.courseStatus)) {
+                CourseEnterHelper.start(this, courseInfoBean.courseScheduleId, courseInfoBean.subjectName);
+            }
+            return;
+        }
     }
 
     private void showSetCommentDialog(int typeSetTeacherComment) {

+ 16 - 0
teacher/src/main/res/layout/activity_sparring_course_detail_layout.xml

@@ -530,4 +530,20 @@
         </LinearLayout>
     </androidx.core.widget.NestedScrollView>
 
+
+    <TextView
+        android:visibility="gone"
+        android:id="@+id/tv_enter_room"
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:layout_marginStart="27dp"
+        android:layout_marginEnd="27dp"
+        android:layout_marginBottom="30dp"
+        android:background="@drawable/shape_2dc7aa_39dp"
+        android:gravity="center"
+        android:text="进入教室"
+        android:textColor="@color/white"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
 </androidx.constraintlayout.widget.ConstraintLayout>