瀏覽代碼

增加直播课入口

Pq 3 年之前
父節點
當前提交
8122ed1ff6

+ 2 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -90,6 +90,8 @@ public abstract class WebConstants {
     public static final String TEACHER_LIVE_CREATE = getBaseUrlH5() + "/#/liveCreate";
     //直播课详情
     public static final String TEACHER_LIVE_DETAIL = getBaseUrlH5() + "/#/liveDetail";
+
+    public static final String TEACHER_LIVE_DETAIL_NORMAL_COURSE = getBaseUrlH5() + "/#/liveDetail?groupId=%s&classId=%s&joinRoom=1";
     //陪练课设置
     public static final String TEACHER_PRACTICE_SETTING = getBaseUrlH5() + "/#/practiceSetting";
     //我的粉

+ 2 - 2
BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java

@@ -11,8 +11,8 @@ import android.widget.Space;
 import android.widget.TextView;
 
 import com.cooleshow.base.R;
+import com.cooleshow.base.utils.LogUtils;
 import com.cooleshow.base.utils.SizeUtils;
-import com.cooleshow.base.utils.SoftKeyboardUtil;
 import com.cooleshow.base.utils.SoftKeyboardUtils;
 import com.vanniktech.emoji.EmojiEditText;
 import com.vanniktech.emoji.EmojiPopup;
@@ -57,7 +57,7 @@ public class InputBar extends LinearLayout implements OnEmojiPopupShownListener,
         this.setBackgroundColor(getContext().getResources().getColor(R.color.white));
         this.setMinimumHeight(SizeUtils.dp2px(50));
         this.setGravity(Gravity.CENTER_VERTICAL);
-        this.setPadding(SizeUtils.dp2px(12), SizeUtils.dp2px( 7), SizeUtils.dp2px(12), SizeUtils.dp2px(7));
+        this.setPadding(SizeUtils.dp2px(12), SizeUtils.dp2px(7), SizeUtils.dp2px(12), SizeUtils.dp2px(7));
         etInput = (EmojiEditText) findViewById(R.id.et_input);
         space1 = (Space) findViewById(R.id.space1);
         ivEmoji = (ImageView) findViewById(R.id.iv_emoji);

+ 12 - 4
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/ImgVerifyCodeDialog.java

@@ -2,6 +2,7 @@ package com.cooleshow.base.widgets.dialog;
 
 import android.app.Dialog;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
@@ -78,7 +79,12 @@ public class ImgVerifyCodeDialog extends Dialog {
 
             }
         };
-        etCode.addTextChangedListener(mTextWatcher);
+        setOnDismissListener(new OnDismissListener() {
+            @Override
+            public void onDismiss(DialogInterface dialog) {
+                release();
+            }
+        });
     }
 
     public void setPhone(String phone) {
@@ -113,8 +119,10 @@ public class ImgVerifyCodeDialog extends Dialog {
     }
 
     @Override
-    public void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        release();
+    public void show() {
+        super.show();
+        if (etCode != null && mTextWatcher != null) {
+            etCode.addTextChangedListener(mTextWatcher);
+        }
     }
 }

+ 1 - 1
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/InputBarDialog.java

@@ -61,7 +61,7 @@ public class InputBarDialog extends Dialog {
         super.dismiss();
     }
 
-    public void showInput(){
+    public void showInput() {
         if (inputBar != null) {
             inputBar.showInputBar();
         }

+ 5 - 2
BaseLibrary/src/main/res/values/styles.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources>
+<resources xmlns:ns1="http://schemas.android.com/apk/res-auto">
     <!-- 主题样式 -->
     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="colorPrimary">@color/colorPrimary</item>
@@ -263,7 +263,10 @@
         <item name="android:windowExitAnimation">@anim/left_exit_anim</item>
     </style>
 
-    <style name="my_emoji_fade_animation_style" parent="emoji_fade_animation_style"/>
+    <style name="my_emoji_fade_animation_style" ns1:ignore="UnusedResources">
+        <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
+        <item name="android:windowExitAnimation">@android:anim/fade_out</item>
+    </style>
 
 
     <style name="picture.daya.style" parent="AppTheme">

+ 2 - 0
rong_im/live/src/main/java/com/rong/io/live/LiveRoomMsgConstants.java

@@ -49,5 +49,7 @@ public class LiveRoomMsgConstants {
     public static final String TAG_LIVE_ON_SNAP_UP = "RC:Chatroom:SnapUp"; //正在抢购
     public static final String TAG_LIVE_ADD_BLACK_USER= "RC:BLOCK_BLACK_USER"; //添加黑名单,禁止聊天,禁止连麦
     public static final String TAG_LIVE_REMOVE_BLACK_USER= "RC:UNBLOCK_BLACK_USER"; //解除黑名单
+    public static final String TAG_LIVE_MEMBER_COUNT_SYNC = "RC:Chatroom:MemberCountUp"; //人员数量同步
+    public static final String TAG_LIVE_FINISH_MSG = "RC:ForcedOffline"; //直播间结束消息
 
 }

+ 1 - 6
teacher/src/main/AndroidManifest.xml

@@ -291,12 +291,7 @@
             android:exported="false"
             android:launchMode="singleTask"
             android:screenOrientation="portrait"
-            android:windowSoftInputMode="adjustPan">
-            <intent-filter>
-                <action android:name="com.cooleshow.student.ui.live.LiveRoomActivity" />
-
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
+            android:windowSoftInputMode="adjustNothing">
         </activity> <!-- 分享开始 -->
         <activity
             android:name=".wxapi.WXEntryActivity"

+ 27 - 5
teacher/src/main/java/com/cooleshow/teacher/App.java

@@ -14,6 +14,19 @@ import com.cooleshow.base.utils.ProcessUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.daya.live_teaching.im.IMManager;
+import com.rong.io.live.message.RCChatJoinRoomMessage;
+import com.rong.io.live.message.RCChatModeMessage;
+import com.rong.io.live.message.RCChatRoomCloseMessage;
+import com.rong.io.live.message.RCChatRoomMemberNumMessage;
+import com.rong.io.live.message.RCChatroomLocationMessage;
+import com.rong.io.live.message.RCOnSnappingUpMessage;
+import com.rong.io.live.message.RCPauseLiveMessage;
+import com.rong.io.live.message.RCUserAddLikeMessage;
+import com.rong.io.live.message.RCUserMicLeaveMessage;
+import com.rong.io.live.message.RCUserSeatApplyMessage;
+import com.rong.io.live.message.RCUserSeatResponseMessage;
+import com.rong.io.live.message.RCUserSeatsCtrlMessage;
+import com.rong.io.live.message.RCUserSyncAddLikeCountMessage;
 import com.tencent.bugly.crashreport.CrashReport;
 import com.rong.io.live.helper.LiveRTCEngineInitHelper;
 import com.umeng.commonsdk.UMConfigure;
@@ -31,6 +44,7 @@ import io.reactivex.rxjava3.core.Scheduler;
 import io.reactivex.rxjava3.functions.Consumer;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 import io.rong.imkit.IMCenter;
+import io.rong.imlib.RongIMClient;
 import io.rong.push.RongPushClient;
 import io.rong.push.pushconfig.PushConfig;
 
@@ -100,12 +114,20 @@ public class App extends BaseApplication {
                 .build();
         RongPushClient.setPushConfig(config);
 
-      /*  if (BuildConfig.DEBUG) {
-            IMManager.init(this, "0vnjpoad0jbdz");////TODO 设置小班课appkey  uwd1c0sxuqp91   c9kqb3rdc451j 6tnym1br6pv07
-        } else {
-            IMManager.init(this, "6tnym1br6pv07");////TODO 设置小班课appkey  uwd1c0sxuqp91   c9kqb3rdc451j 6tnym1br6pv07
-        }*/
         IMManager.init(this, "0vnjpoad0jbdz");
+        RongIMClient.registerMessageType(RCChatJoinRoomMessage.class);//加入直播房间消息
+        RongIMClient.registerMessageType(RCChatModeMessage.class);//直播间聊天模式控制消息
+        RongIMClient.registerMessageType(RCChatroomLocationMessage.class);//本地消息
+        RongIMClient.registerMessageType(RCUserMicLeaveMessage.class);//观众下麦发送消息
+        RongIMClient.registerMessageType(RCUserSeatApplyMessage.class);//申请连麦消息
+        RongIMClient.registerMessageType(RCUserSeatResponseMessage.class);//连麦回复消息
+        RongIMClient.registerMessageType(RCUserSeatsCtrlMessage.class);//连麦控制
+        RongIMClient.registerMessageType(RCUserSyncAddLikeCountMessage.class);//连麦控制
+        RongIMClient.registerMessageType(RCChatRoomCloseMessage.class);//直播间关闭消息
+        RongIMClient.registerMessageType(RCOnSnappingUpMessage.class);//XXX正在抢购
+        RongIMClient.registerMessageType(RCUserAddLikeMessage.class);//点赞数量消息
+        RongIMClient.registerMessageType(RCChatRoomMemberNumMessage.class);//成员数量同步
+        RongIMClient.registerMessageType(RCPauseLiveMessage.class);//暂停直播消息
         LiveRTCEngineInitHelper.initRTC();
         EmojiManager.install(new IosEmojiProvider());
 

+ 70 - 1
teacher/src/main/java/com/cooleshow/teacher/presenter/live/LiveRoomPresenter.java

@@ -23,8 +23,13 @@ import com.rong.io.live.callback.IRoomCallBack;
 import com.rong.io.live.helper.LiveEventHelper;
 import com.rong.io.live.helper.LiveRTCEngineInitHelper;
 import com.rong.io.live.manager.RCChatRoomMessageManager;
+import com.rong.io.live.message.RCChatJoinRoomMessage;
+import com.rong.io.live.message.RCChatRoomMemberNumMessage;
 import com.rong.io.live.message.RCChatroomLocationMessage;
+import com.rong.io.live.message.RCOnSnappingUpMessage;
 import com.rong.io.live.message.RCPauseLiveMessage;
+import com.rong.io.live.message.RCUserAddLikeMessage;
+import com.rong.io.live.message.RCUserSeatApplyMessage;
 import com.rong.io.live.message.RCUserSeatResponseMessage;
 import com.rong.io.live.message.RCUserSyncAddLikeCountMessage;
 
@@ -38,6 +43,7 @@ import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
 import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
 import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
 import cn.rongcloud.rtc.api.stream.RCRTCAudioInputStream;
+import cn.rongcloud.rtc.api.stream.RCRTCCameraOutputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCInputStream;
 import cn.rongcloud.rtc.api.stream.RCRTCLiveInfo;
 import cn.rongcloud.rtc.api.stream.RCRTCOutputStream;
@@ -274,6 +280,10 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
     private void startVideoPreview() {
         // 创建本地视频显示视图
         RCRTCVideoView rcrtcVideoView = new RCRTCVideoView(Utils.getApp().getApplicationContext());
+        RCRTCCameraOutputStream rcrtcCameraOutputStream = RCRTCEngine.getInstance().getDefaultVideoStream();
+        if (rcrtcCameraOutputStream == null) {
+            return;
+        }
         RCRTCEngine.getInstance().getDefaultVideoStream().setVideoView(rcrtcVideoView);
         if (getView() != null) {
             getView().addVideoPreview(rcrtcVideoView);
@@ -538,7 +548,66 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
                 .subscribe(new Consumer<Message>() {
                     @Override
                     public void accept(Message message) {
+                        //将消息显示到列表上
+                        if (LiveEventHelper.getInstance().isShowingMessage(message.getContent())) {
+                            if (null != getView()) {
+                                getView().addMessageContent(message, false);
+                            }
+                        }
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_CHAT_ROOM_ENTER)) {
+                            //加入房间消息
+                            if (null != getView() && message.getContent() != null) {
+                                RCChatJoinRoomMessage joinRoomMessage = (RCChatJoinRoomMessage) message.getContent();
+                                getView().receiveJoinMessage(joinRoomMessage);
+                            }
+                            return;
+                        }
+
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_LIVE_ON_SNAP_UP)) {
+                            //抢购消息
+                            if (null != getView() && message.getContent() != null) {
+                                RCOnSnappingUpMessage rcOnSnappingUpMessage = (RCOnSnappingUpMessage) message.getContent();
+                                getView().receiveSnapUpMessage(rcOnSnappingUpMessage);
+                            }
+                            return;
+                        }
 
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_CHAT_ROOM_ADD_LIKE)) {
+                            if (message.getContent() != null) {
+                                RCUserAddLikeMessage addLikeMessage = (RCUserAddLikeMessage) message.getContent();
+                                if (getView() != null) {
+                                    getView().onAddLikeMessage(addLikeMessage);
+                                }
+                            }
+                            return;
+                        }
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_CHAT_ROOM_SEAT_APPLY)) {
+                            //学生连麦申请
+                            if (message.getContent() != null) {
+                                RCUserSeatApplyMessage rcUserSeatApplyMessage = (RCUserSeatApplyMessage) message.getContent();
+                                if (getView() != null) {
+                                    getView().onSeatApplyMessage(rcUserSeatApplyMessage);
+                                }
+                            }
+                            return;
+                        }
+
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_LIVE_MEMBER_COUNT_SYNC)) {
+                            //同步成员数量
+                            if (message.getContent() != null && null != getView()) {
+                                RCChatRoomMemberNumMessage rcChatRoomMemberNumMessage = (RCChatRoomMemberNumMessage) message.getContent();
+                                getView().syncMemberCount(rcChatRoomMemberNumMessage.getCount());
+                            }
+                            return;
+                        }
+
+                        if (TextUtils.equals(message.getObjectName(), LiveRoomMsgConstants.TAG_LIVE_FINISH_MSG)) {
+                            //关闭直播间
+                            if (null != getView()) {
+                                getView().liveRoomOffline();
+                            }
+                            return;
+                        }
                     }
                 });
         disposablesManager.add(subscribe);
@@ -648,7 +717,7 @@ public class LiveRoomPresenter extends BasePresenter<LiveRoomContract.LiveRoomVi
      * @param userId
      */
     public void notifyOpenOpsLiveVideoAction(String roomId, String type, String userId) {
-        addSubscribe(create(APIService.class).notifyOpenOpsLiveVideoAction(roomId, type, userId,"1080x1920"), new DisposableObserver() {
+        addSubscribe(create(APIService.class).notifyOpenOpsLiveVideoAction(roomId, type, userId, "1080x1920"), new DisposableObserver() {
             @Override
             public void onNext(Object o) {
                 //通知服务端加入成功即可,无须关注结果

+ 0 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/live/TeacherLiveRoomActivity.java

@@ -206,7 +206,6 @@ public class TeacherLiveRoomActivity extends BaseMVPActivity<ActivityTeacherLive
 
     @Override
     protected void initView() {
-        setStatusBarColor();
         ivReverseCamera = viewBinding.viewCreateOptions.ivReverseCamera;
         ivLiveBeauty = viewBinding.viewCreateOptions.ivLiveBeauty;
         ivLiveShare = viewBinding.viewCreateOptions.ivLiveShare;

+ 5 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/main/CourseTableFragment.kt

@@ -164,7 +164,11 @@ class CourseTableFragment :
                 .build(RouterPath.WebCenter.ACTIVITY_HTML)
                 .withString(
                     WebConstants.WEB_URL,
-                    WebConstants.TEACHER_LIVE_DETAIL + "?groupId=" + data.courseGoupId + "&classId=" + data.courseId
+                    String.format(
+                        WebConstants.TEACHER_LIVE_DETAIL_NORMAL_COURSE,
+                        data.courseGoupId,
+                        data.courseId
+                    )
                 )
                 .navigation()
         }

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java

@@ -237,7 +237,7 @@ public class JsInterfaceUtils extends Object {
                 if ("joinLiveRoom".equals(api)) {
                     JSONObject content = jsonObject.getJSONObject("content");
                     if (onListener != null) {
-                        onListener.joinLiveRoom(content.getString("roomId"), content.getString("teacherId"));
+                        onListener.joinLiveRoom(content.optString("roomId"), content.optString("teacherId"));
                     }
                     return;
                 }

+ 3 - 2
teacher/src/main/res/layout/activity_teacher_live_room_layout.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -41,4 +42,4 @@
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
+</FrameLayout>