Browse Source

修改bug

Pq 2 years ago
parent
commit
225dd18366
23 changed files with 143 additions and 62 deletions
  1. 10 3
      BaseLibrary/src/main/java/com/cooleshow/base/utils/FileUtils.java
  2. 1 1
      live_teaching/build.gradle
  3. 1 1
      live_teaching/proguard-rules.pro
  4. 13 10
      live_teaching/src/main/java/com/daya/live_teaching/api/WhiteBoardApi.java
  5. 3 2
      live_teaching/src/main/java/com/daya/live_teaching/im/message/ControlDeviceNotifyMessage.java
  6. 7 6
      live_teaching/src/main/java/com/daya/live_teaching/im/message/MemberChangedMessage.java
  7. 3 3
      live_teaching/src/main/java/com/daya/live_teaching/model/InviteAction.java
  8. 6 6
      live_teaching/src/main/java/com/daya/live_teaching/model/WhiteCreateBean.java
  9. 22 8
      live_teaching/src/main/java/com/daya/live_teaching/repository/ClassRepository.java
  10. 3 2
      live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/AccompanimentListFragment.java
  11. 3 0
      live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/OnlineMembersFragment.java
  12. 6 0
      live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/ShareScreenFragment.java
  13. 12 6
      live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/TeachingToolsFragment.java
  14. 7 0
      live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/TopOperateControlFragment.java
  15. 30 10
      live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/WhiteBoardFragment.java
  16. 2 1
      live_teaching/src/main/java/com/daya/live_teaching/viewmodel/ClassViewModel.java
  17. 6 0
      live_teaching/src/main/java/com/daya/live_teaching/widget/dialog/LiveCommonDialog.java
  18. BIN
      live_teaching/src/main/res/drawable-xhdpi/bg_live_teacher_tool.png
  19. BIN
      live_teaching/src/main/res/drawable-xxhdpi/bg_live_teacher_tool.png
  20. 1 0
      live_teaching/src/main/res/layout/fragment_white_board.xml
  21. 1 0
      student/src/main/java/com/cooleshow/student/App.java
  22. 5 2
      student/src/main/java/com/cooleshow/student/ui/course/PianoRoomCourseDetailActivity.java
  23. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/course/PianoRoomCourseDetailActivity.java

+ 10 - 3
BaseLibrary/src/main/java/com/cooleshow/base/utils/FileUtils.java

@@ -18,6 +18,8 @@ import android.text.TextUtils;
 import android.util.Base64;
 import android.util.Log;
 
+import com.luck.picture.lib.tools.BitmapUtils;
+
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -1543,16 +1545,19 @@ public final class FileUtils {
     }
 
     public static String getFilePath(Bitmap bitmap) {
+        LogUtils.i("pq", "getFilePath bitmap:" + bitmap);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         bitmap.compress(Bitmap.CompressFormat.PNG, 80, baos);
-        String path = Environment.getExternalStorageDirectory() + "/dayaWhiteBroad";
+        String path = Environment.getExternalStorageDirectory() + "/WhiteBroad";
+        LogUtils.i("pq", "path:" + path);
         File dir = new File(path);
         if (!dir.exists()) {
             dir.mkdirs();
         }
-        File file = new File(path + "/" + System.currentTimeMillis() + ".png");
+        File file = new File(dir, System.currentTimeMillis() + ".png");
+//        File file = new File(path + "/" + System.currentTimeMillis() + ".png");
         try {
-            file.createNewFile();
+            createOrExistsFile(file);
             FileOutputStream fos = new FileOutputStream(file);
             InputStream is = new ByteArrayInputStream(baos.toByteArray());
             int x = 0;
@@ -1562,8 +1567,10 @@ public final class FileUtils {
             }
             fos.close();
         } catch (Exception e) {
+            LogUtils.i("pq", "Exception:" + e.getMessage());
             e.printStackTrace();
         }
+        LogUtils.i("pq", "file path:" + file.getPath());
         return file.getPath();
     }
 

+ 1 - 1
live_teaching/build.gradle

@@ -67,7 +67,7 @@ dependencies {
     implementation 'androidx.lifecycle:lifecycle-livedata:2.1.0-alpha04'
     implementation 'androidx.lifecycle:lifecycle-viewmodel:2.1.0-alpha04'
     implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
-    implementation 'com.github.duty-os:white-sdk-android:2.11.2'
+    implementation 'com.github.netless-io:whiteboard-android:2.15.18'
     api project(path: ':rong_im:kit')
     api project(path: ':rong_im:live')
     api project(path: ':rong_im:sight')

+ 1 - 1
live_teaching/proguard-rules.pro

@@ -33,5 +33,5 @@
 -dontnote com.xiaomi.**
 -dontnote com.google.android.gms.gcm.**
 -dontnote io.rong.**
-
+-keep class com.herewhite.** { *; }
 -ignorewarnings

+ 13 - 10
live_teaching/src/main/java/com/daya/live_teaching/api/WhiteBoardApi.java

@@ -5,6 +5,8 @@ import com.cooleshow.base.data.net.BaseResponse;
 import com.daya.live_teaching.model.WhiteCreateBean;
 
 import io.reactivex.rxjava3.core.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
 import retrofit2.http.Field;
 import retrofit2.http.FormUrlEncoded;
 import retrofit2.http.POST;
@@ -13,28 +15,29 @@ import retrofit2.http.POST;
  * 白板API
  */
 public interface WhiteBoardApi {
-    String TAG                         = "WhiteBoardApi";
-    String HERE_WHITE_URL              = "https://cloudcapiv4.herewhite.com/";
-    String CREATE_ROOM                 = "room?token=%s";
-    String JOIN_ROOM                   = "room/join?uuid=%s&token=%s";
-    String DELETE_ROOM                 = "room/close?token=%s";
+    String TAG = "WhiteBoardApi";
+    String HERE_WHITE_URL = "https://cloudcapiv4.herewhite.com/";
+    String CREATE_ROOM = "room?token=%s";
+    String JOIN_ROOM = "room/join?uuid=%s&token=%s";
+    String DELETE_ROOM = "room/close?token=%s";
     // 参考服务提供商文档,token写在客户端是不安全的,你“可以”将 Mini Token 写入业务服务器的代码中,或服务端的配置文件中。https://developer.herewhite.com/#/zh-CN/v2/concept
-    String MINI_TOKEN                  = "WHITEcGFydG5lcl9pZD02dFBKT1lzMG52MHFoQzN2Z1BRUXVmN0t0RnVOVGl0bzBhRFAmc2lnPTMyZTRiNTMwNjkyN2RhN2I3NzI4MjMwOTJlZTNmNDJhNWI3MGMyMjU6YWRtaW5JZD0yMTEmcm9sZT1taW5pJmV4cGlyZV90aW1lPTE1ODkzNzY1MjEmYWs9NnRQSk9ZczBudjBxaEMzdmdQUVF1ZjdLdEZ1TlRpdG8wYURQJmNyZWF0ZV90aW1lPTE1NTc4MTk1Njkmbm9uY2U9MTU1NzgxOTU2OTQyNTAw";
-    String WHITE_BOARD_KEY             = "rongRTCWhite";
-    String WHITE_BOARD_SCENE_PATH      = "/DAYA";
+    String MINI_TOKEN = "WHITEcGFydG5lcl9pZD02dFBKT1lzMG52MHFoQzN2Z1BRUXVmN0t0RnVOVGl0bzBhRFAmc2lnPTMyZTRiNTMwNjkyN2RhN2I3NzI4MjMwOTJlZTNmNDJhNWI3MGMyMjU6YWRtaW5JZD0yMTEmcm9sZT1taW5pJmV4cGlyZV90aW1lPTE1ODkzNzY1MjEmYWs9NnRQSk9ZczBudjBxaEMzdmdQUVF1ZjdLdEZ1TlRpdG8wYURQJmNyZWF0ZV90aW1lPTE1NTc4MTk1Njkmbm9uY2U9MTU1NzgxOTU2OTQyNTAw";
+    String WHITE_BOARD_KEY = "rongRTCWhite";
+    String WHITE_BOARD_SCENE_PATH = "/DAYA";
     String WHITE_BOARD_INIT_SCENE_PATH = "/init";
 
     /**
      * 创建白板房间
+     *
      * @param
      * @return
      */
-    @FormUrlEncoded
     @POST(LiveTeachingUrls.hereWhite)
-    Observable<BaseResponse<WhiteCreateBean>> hereWhiteCreat(@Field("name") String name, @Field("userNum") int userNum, @Field("courseScheduleId") String courseScheduleId);
+    Observable<BaseResponse<WhiteCreateBean>> hereWhiteCreat(@Body RequestBody requestBody);
 
     /**
      * 提交考勤申述
+     *
      * @return
      */
     @FormUrlEncoded

+ 3 - 2
live_teaching/src/main/java/com/daya/live_teaching/im/message/ControlDeviceNotifyMessage.java

@@ -3,6 +3,7 @@ package com.daya.live_teaching.im.message;
 import android.os.Parcel;
 import android.util.Log;
 
+import com.cooleshow.base.utils.LogUtils;
 import com.daya.live_teaching.model.DeviceType;
 import com.daya.live_teaching.model.InviteAction;
 import com.daya.live_teaching.utils.log.SLog;
@@ -23,7 +24,7 @@ import io.rong.imlib.model.MessageContent;
 public class ControlDeviceNotifyMessage extends MessageContent {
     private final static String TAG = ControlDeviceNotifyMessage.class.getSimpleName();
 
-    private int action;  // 1.邀请;2.拒绝;3.接受
+    private int action;  // 0.邀请;1.拒绝;2.接受
     private String ticket;
     private int type;       //邀请类型:0.麦克风;1.摄像头
     private String opUserId; // 操作人用户id
@@ -33,7 +34,7 @@ public class ControlDeviceNotifyMessage extends MessageContent {
         String jsonStr = null;
         try {
             jsonStr = new String(data, "UTF-8");
-            Log.e("ControlDeviceNotify",jsonStr);
+            LogUtils.e("ControlDeviceNotify",jsonStr);
         } catch (UnsupportedEncodingException e) {
             SLog.e(TAG, e.toString());
         }

+ 7 - 6
live_teaching/src/main/java/com/daya/live_teaching/im/message/MemberChangedMessage.java

@@ -35,7 +35,7 @@ public class MemberChangedMessage extends MessageContent {
         String jsonStr = null;
         try {
             jsonStr = new String(data, "UTF-8");
-            LogUtils.e(jsonStr);
+            LogUtils.e("pq","MemberChangedMessage:"+jsonStr);
         } catch (UnsupportedEncodingException e) {
             SLog.e(TAG, e.toString());
         }
@@ -49,12 +49,13 @@ public class MemberChangedMessage extends MessageContent {
             } else {
                 action = 3;
             }
-            userId = jsonObject.optString("userId");
-            userName = jsonObject.optString("username");
-            role = jsonObject.optInt("role");
-            timestamp = jsonObject.optLong("timestamp");
+            JSONObject roomMemberJson = jsonObject.optJSONObject("roomMember");
+            userId = roomMemberJson.optString("userId");
+            userName = roomMemberJson.optString("username");
+            role = roomMemberJson.optInt("role");
+            timestamp = roomMemberJson.optLong("timestamp");
             metronomeSwitch = jsonObject.optBoolean("metronomeSwitch");
-            handUpOn = jsonObject.optBoolean("handFlag");
+            handUpOn = roomMemberJson.optBoolean("handFlag");
             examSongSwitch = jsonObject.optBoolean("examSongSwitch");
         } catch (JSONException e) {
             SLog.e(TAG, e.toString());

+ 3 - 3
live_teaching/src/main/java/com/daya/live_teaching/model/InviteAction.java

@@ -4,11 +4,11 @@ package com.daya.live_teaching.model;
  * 请求行为
  */
 public enum InviteAction {
-    INVITE(1), // 邀请
+    INVITE(0), // 邀请
 
-    REJECT(2), // 拒绝
+    REJECT(1), // 拒绝
 
-    APPROVE(3), // 同意
+    APPROVE(2), // 同意
 
     UNKNOWN(-999);
 

+ 6 - 6
live_teaching/src/main/java/com/daya/live_teaching/model/WhiteCreateBean.java

@@ -26,7 +26,7 @@ public class WhiteCreateBean {
 
     private int adminId;
     private int    courseScheduleId;
-    private long   createdAt;
+    private String   createdAt;
     private int    limit;
     private String mode;
     private String name;
@@ -34,7 +34,7 @@ public class WhiteCreateBean {
     private String roomToken;
     private int    teamId;
     private String template;
-    private long   updatedAt;
+    private String   updatedAt;
     private String uuid;
 
     public int getAdminId() {
@@ -53,11 +53,11 @@ public class WhiteCreateBean {
         this.courseScheduleId = courseScheduleId;
     }
 
-    public long getCreatedAt() {
+    public String getCreatedAt() {
         return createdAt;
     }
 
-    public void setCreatedAt(long createdAt) {
+    public void setCreatedAt(String createdAt) {
         this.createdAt = createdAt;
     }
 
@@ -117,11 +117,11 @@ public class WhiteCreateBean {
         this.template = template;
     }
 
-    public long getUpdatedAt() {
+    public String getUpdatedAt() {
         return updatedAt;
     }
 
-    public void setUpdatedAt(long updatedAt) {
+    public void setUpdatedAt(String updatedAt) {
         this.updatedAt = updatedAt;
     }
 

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

@@ -10,6 +10,7 @@ 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.RequestBodyUtil;
 import com.cooleshow.base.utils.SystemUtils;
 import com.daya.live_teaching.api.LiveTeachingApi;
 import com.daya.live_teaching.api.WhiteBoardApi;
@@ -52,6 +53,8 @@ import com.daya.live_teaching.model.WhiteCreateBean;
 import com.daya.live_teaching.rtc.RtcManager;
 import com.daya.live_teaching.utils.log.SLog;
 
+import org.json.JSONObject;
+
 import java.io.File;
 import java.lang.annotation.Retention;
 import java.util.ArrayList;
@@ -168,15 +171,13 @@ public class ClassRepository extends BaseRepository {
 
     public void sendImPlayMidiMessage(String userId, String roomId, boolean enable, int rate, int customType, int playVolume, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
-        HashMap<String, Object> contentMap = new HashMap<>();
-        contentMap.put(PARAM_USER_ID, userId);
-        contentMap.put("enable", enable);
-        contentMap.put("rate", rate);
-        contentMap.put("customType", customType);
-        contentMap.put("playVolume", playVolume);
+        bodyMap.put(PARAM_USER_ID, userId);
+        bodyMap.put("enable", enable);
+        bodyMap.put("rate", rate);
+        bodyMap.put("customType", customType);
+        bodyMap.put("playVolume", playVolume);
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put("content", contentMap);
         sealClassService.sendImPlayMidiMessage(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
 
     }
@@ -415,7 +416,15 @@ public class ClassRepository extends BaseRepository {
      * @param callBack
      */
     public void createWhiteBoard(String roomId, ResultCallback<WhiteCreateBean> callBack) {
-        whiteBoardService.hereWhiteCreat("Page1", 0, roomId)
+        JSONObject jsonObject =new JSONObject();
+        try{
+            jsonObject.put("name","Page1");
+            jsonObject.put("userNum",0);
+            jsonObject.put("courseScheduleId",roomId);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        whiteBoardService.hereWhiteCreat(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString()))
                 .subscribeOn(Schedulers.newThread())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribeWith(new BaseObserver<WhiteCreateBean>() {
@@ -423,6 +432,11 @@ public class ClassRepository extends BaseRepository {
                     protected void onSuccess(WhiteCreateBean data) {
                         callBack.onSuccess(data);
                     }
+                    @Override
+                    public void onError(Throwable e) {
+                        super.onError(e);
+                        e.printStackTrace();
+                    }
                 });
     }
 

+ 3 - 2
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/AccompanimentListFragment.java

@@ -345,7 +345,7 @@ public class AccompanimentListFragment extends BaseFragment<FragmentAccompanimen
     }
 
     private void showAccompanimentDialog(List<ClassMember> accompanimentDosnloadMembers, String musicScoreAccompanimentId, boolean isFor) {
-        AccompanimentDialog accompanimentDialog =new AccompanimentDialog(getContext());
+        AccompanimentDialog accompanimentDialog = new AccompanimentDialog(getContext());
         accompanimentDialog.show();
         if (isFor) {
             for (ClassMember.ScheduleStudentMusicScoresBean musicScoresBean : musicScoresBeans) {
@@ -357,7 +357,7 @@ public class AccompanimentListFragment extends BaseFragment<FragmentAccompanimen
             }
         }
         accompanimentDialog.setTitle(fileName);
-        accompanimentDialog.setData(accompanimentDosnloadMembers,musicScoreAccompanimentId);
+        accompanimentDialog.setData(accompanimentDosnloadMembers, musicScoreAccompanimentId);
     }
 
     @Override
@@ -452,6 +452,7 @@ public class AccompanimentListFragment extends BaseFragment<FragmentAccompanimen
 
                     listener.onMetronomeOrAccompanimentIsPlay(!isPlayMusic);
                     setAccompaniment(!isPlayMusic);
+                    dialog.dismiss();
                 }
             });
             dialog.setOnCancelClickListener(new View.OnClickListener() {

+ 3 - 0
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/OnlineMembersFragment.java

@@ -62,6 +62,7 @@ public class OnlineMembersFragment extends BaseFragment<FragmentNotOnlineMembers
                 @Override
                 public void onClick(View v) {
                     classViewModel.batchControlMicrophone(roomId, true);
+                    dialog.dismiss();
                 }
             });
             dialog.setOnCancelClickListener(new View.OnClickListener() {
@@ -82,6 +83,7 @@ public class OnlineMembersFragment extends BaseFragment<FragmentNotOnlineMembers
                 @Override
                 public void onClick(View v) {
                     classViewModel.batchControlMicrophone(roomId, true);
+                    dialog.dismiss();
                 }
             });
             dialog.setOnCancelClickListener(new View.OnClickListener() {
@@ -198,6 +200,7 @@ public class OnlineMembersFragment extends BaseFragment<FragmentNotOnlineMembers
                     default:
                         break;
                 }
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {

+ 6 - 0
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/ShareScreenFragment.java

@@ -275,6 +275,7 @@ public class ShareScreenFragment extends BaseFragment<FragmentShareScreenBinding
                     } else {
                         classViewModel.deviceSyncHandUpOn(roomId, null, true);
                     }
+                    dialog.dismiss();
                 }
             });
             dialog.setOnCancelClickListener(new View.OnClickListener() {
@@ -771,12 +772,14 @@ public class ShareScreenFragment extends BaseFragment<FragmentShareScreenBinding
             @Override
             public void onClick(View v) {
                 deviceSyncMic(roomId, !isChecked);
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 checkBox.setChecked(!isChecked);
+                dialog.dismiss();
             }
         });
     }
@@ -800,12 +803,14 @@ public class ShareScreenFragment extends BaseFragment<FragmentShareScreenBinding
             @Override
             public void onClick(View v) {
                 deviceSyncCamera(roomId, !isChecked);
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 checkBox.setChecked(!isChecked);
+                dialog.dismiss();
             }
         });
     }
@@ -887,6 +892,7 @@ public class ShareScreenFragment extends BaseFragment<FragmentShareScreenBinding
                     default:
                         break;
                 }
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {

+ 12 - 6
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/TeachingToolsFragment.java

@@ -191,12 +191,16 @@ public class TeachingToolsFragment extends BaseFragment<FragmentTeachingToolsBin
                     if (!accompaniment) {
                         isPlayMusic = false;
                         CheckBox button = operateView.getView(Operate.ACCOMPANIMENT.getValue());
-                        button.setChecked(false);
+                        if (button != null) {
+                            button.setChecked(false);
+                        }
 //                        classViewModel.setOnMusicIsPlay(false);
                     } else {
                         isPlayMusic = true;
                         CheckBox button = operateView.getView(Operate.ACCOMPANIMENT.getValue());
-                        button.setChecked(true);
+                        if (button != null) {
+                            button.setChecked(true);
+                        }
                     }
 
                     if (!metronme && !accompaniment) {
@@ -237,10 +241,10 @@ public class TeachingToolsFragment extends BaseFragment<FragmentTeachingToolsBin
         int value = SizeUtils.dp2px(44);
         int marginLeft = SizeUtils.dp2px(10);
         for (Operate operate : Operate.values()) {
-            if (operate== Operate.ACCOMPANIMENT || operate== Operate.ACCOMPANIMENT_SETTING) {
-                //暂时隐藏伴奏和伴奏下载
-                continue;
-            }
+//            if (operate== Operate.ACCOMPANIMENT || operate== Operate.ACCOMPANIMENT_SETTING) {
+//                //暂时隐藏伴奏和伴奏下载
+//                continue;
+//            }
             OperateItem item = new OperateItem();
             item.id = operate.getValue();
             item.bgResId = leftbBtnBgResIds[operate.getValue()];
@@ -366,6 +370,7 @@ public class TeachingToolsFragment extends BaseFragment<FragmentTeachingToolsBin
                     listener.onMetronomeOrAccompanimentIsPlay(true);
                     setAccompaniment(true, type);
                 }
+                dialog.dismiss();
             }
         });
     }
@@ -461,6 +466,7 @@ public class TeachingToolsFragment extends BaseFragment<FragmentTeachingToolsBin
                     listener.onMetronomeOrAccompanimentIsPlay(true);
                     setMetronome(true, type);
                 }
+                dialog.dismiss();
             }
         });
     }

+ 7 - 0
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/TopOperateControlFragment.java

@@ -378,12 +378,14 @@ public class TopOperateControlFragment extends BaseFragment<FragmentTopOperateCo
             @Override
             public void onClick(View v) {
                 deviceSyncMic(roomId, !isChecked);
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 checkBox.setChecked(!isChecked);
+                dialog.dismiss();
             }
         });
     }
@@ -408,12 +410,14 @@ public class TopOperateControlFragment extends BaseFragment<FragmentTopOperateCo
             @Override
             public void onClick(View v) {
                 deviceSyncCamera(roomId, !isChecked);
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 checkBox.setChecked(!isChecked);
+                dialog.dismiss();
             }
         });
     }
@@ -583,12 +587,14 @@ public class TopOperateControlFragment extends BaseFragment<FragmentTopOperateCo
             @Override
             public void onClick(View v) {
                 leaveRoom(roomId, true);
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 allowRefresh = true;
+                dialog.dismiss();
             }
         });
     }
@@ -603,6 +609,7 @@ public class TopOperateControlFragment extends BaseFragment<FragmentTopOperateCo
             @Override
             public void onClick(View v) {
                 leaveRoom(roomId);
+                dialog.dismiss();
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {

+ 30 - 10
live_teaching/src/main/java/com/daya/live_teaching/ui/fragmnet/WhiteBoardFragment.java

@@ -37,6 +37,7 @@ import com.cooleshow.base.utils.SPUtils;
 import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.widgets.dialog.CommonDialog;
+import com.cooleshow.usercenter.helper.UserHelper;
 import com.daya.live_teaching.R;
 import com.daya.live_teaching.api.WhiteBoardApi;
 import com.daya.live_teaching.databinding.FragmentWhiteBoardBinding;
@@ -121,7 +122,7 @@ public class WhiteBoardFragment extends BaseFragment<FragmentWhiteBoardBinding>
 
     @Override
     protected FragmentWhiteBoardBinding getLayoutView() {
-        return null;
+        return FragmentWhiteBoardBinding.inflate(getLayoutInflater());
     }
 
     @Override
@@ -237,13 +238,8 @@ public class WhiteBoardFragment extends BaseFragment<FragmentWhiteBoardBinding>
         if (TextUtils.isEmpty(roomId)) {
             roomId = classViewModel.getRoomId().getValue();
         }
-        boolean status = roomId.contains("S") || roomId.contains("I");
-        String id = roomId;
-        if (status) {
-            id = roomId.substring(1);
-        }
         whiteSdkRoomInfo = null;
-        classViewModel.createWhiteBoard(id).observe(this, new Observer<WhiteCreateBean>() {
+        classViewModel.createWhiteBoard(roomId).observe(this, new Observer<WhiteCreateBean>() {
 
 
             @Override
@@ -255,7 +251,7 @@ public class WhiteBoardFragment extends BaseFragment<FragmentWhiteBoardBinding>
                 whiteSdkRoomInfo.setUuid(whiteCreateBean.getUuid());
                 whiteSdkRoomInfo.setRoomToken(whiteCreateBean.getRoomToken());
                 showLoading();
-                roomParams = new RoomParams(whiteSdkRoomInfo.getUuid(), whiteSdkRoomInfo.getRoomToken());
+                roomParams = new RoomParams(whiteSdkRoomInfo.getUuid(), whiteSdkRoomInfo.getRoomToken(), UserHelper.getUserId());
                 UserInfo userInfo = classViewModel.getUserInfo().getValue();
                 if (userInfo != null && userInfo.getRole() == Role.STUDENT) {
                     roomParams.setWritable(false);
@@ -669,7 +665,20 @@ public class WhiteBoardFragment extends BaseFragment<FragmentWhiteBoardBinding>
     public void onDestroy() {
         super.onDestroy();
         if (null != room) {
-            classViewModel.setWhiteBoardScale(room.getZoomScale());
+            room.getZoomScale(new Promise<Number>() {
+                @Override
+                public void then(Number number) {
+                    if (classViewModel != null) {
+                        classViewModel.setWhiteBoardScale(number.doubleValue());
+                    }
+                }
+
+                @Override
+                public void catchEx(SDKError t) {
+                    t.printStackTrace();
+                }
+            });
+
             whiteSdk.releaseRoom();
             whiteSdk = null;
             room.disconnect();
@@ -698,7 +707,18 @@ public class WhiteBoardFragment extends BaseFragment<FragmentWhiteBoardBinding>
                 whiteSdk.joinRoom(roomParams, abstractRoomCallbacks, promise);
             } else if (!isConnect) {
                 if (null != room) {
-                    classViewModel.setWhiteBoardScale(room.getZoomScale());
+                    room.getZoomScale(new Promise<Number>() {
+                        @Override
+                        public void then(Number number) {
+                            classViewModel.setWhiteBoardScale(number.doubleValue());
+                        }
+
+                        @Override
+                        public void catchEx(SDKError t) {
+                            t.printStackTrace();
+                        }
+                    });
+
                 }
                 room.disconnect();
 

+ 2 - 1
live_teaching/src/main/java/com/daya/live_teaching/viewmodel/ClassViewModel.java

@@ -1688,12 +1688,13 @@ public class ClassViewModel extends ViewModel {
         classRepository.createWhiteBoard(roomId, new ResultCallback<WhiteCreateBean>() {
             @Override
             public void onSuccess(WhiteCreateBean result) {
+                LogUtils.i("pq","WhiteCreateBean:"+result);
                 createWhiteBoard.postValue(result);
             }
 
             @Override
             public void onFail(int errorCode, String errorStr) {
-
+                LogUtils.i("pq","WhiteCreateBean onFail:"+errorCode+"-errorStr:"+errorStr);
             }
         });
         return createWhiteBoard;

+ 6 - 0
live_teaching/src/main/java/com/daya/live_teaching/widget/dialog/LiveCommonDialog.java

@@ -32,6 +32,12 @@ public class LiveCommonDialog extends Dialog {
         mTvContent = findViewById(R.id.tv_content);
         mBtncancel = findViewById(R.id.btn_cancel);
         mBtnCommit = findViewById(R.id.btn_commit);
+        findViewById(R.id.iv_close).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismiss();
+            }
+        });
     }
 
     public void setTitle(String title) {

BIN
live_teaching/src/main/res/drawable-xhdpi/bg_live_teacher_tool.png


BIN
live_teaching/src/main/res/drawable-xxhdpi/bg_live_teacher_tool.png


+ 1 - 0
live_teaching/src/main/res/layout/fragment_white_board.xml

@@ -94,6 +94,7 @@
                 android:paddingEnd="0dp" />
 
             <Button
+                android:visibility="gone"
                 android:id="@+id/btn_insert_practice"
                 style="@style/ToolButton"
                 android:layout_height="match_parent"

+ 1 - 0
student/src/main/java/com/cooleshow/student/App.java

@@ -76,6 +76,7 @@ public class App extends BaseApplication {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
             webviewSetPath(this);
         }
+        registrationId ="";
         CrashReport.initCrashReport(getApplicationContext(), "b51fd73164", false);
         initRong();
         initUmeng();

+ 5 - 2
student/src/main/java/com/cooleshow/student/ui/course/PianoRoomCourseDetailActivity.java

@@ -101,7 +101,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
         }
         this.mInfoBean = infoBean;
         //时间
-        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime,infoBean.endTime));
+        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime, infoBean.endTime));
         //title
         viewBinding.tvTitle.setText(infoBean.courseGroupName);
         //subjectName
@@ -112,16 +112,19 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
             //课程未开始
             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);
@@ -249,7 +252,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
         if (v.getId() == R.id.tv_enter_room) {
             //进入教室
             if (mInfoBean != null) {
-                CourseEnterHelper.start(this, mInfoBean.courseGroupId, mInfoBean.subjectName);
+                CourseEnterHelper.start(this, mCourseId, mInfoBean.subjectName);
             }
             return;
         }

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/course/PianoRoomCourseDetailActivity.java

@@ -230,7 +230,7 @@ public class PianoRoomCourseDetailActivity extends BaseMVPActivity<ActivityPiano
         if (v.getId() == R.id.tv_enter_room) {
             //进入教室
             if (mInfoBean != null) {
-                CourseEnterHelper.start(this, mInfoBean.courseId, mInfoBean.subjectName);
+                CourseEnterHelper.start(this, mCourseId, mInfoBean.subjectName);
             }
             return;
         }