فهرست منبع

修改网络教室部分逻辑

Pq 2 سال پیش
والد
کامیت
9b7c7931f4

+ 23 - 15
live_teaching/src/main/java/com/daya/live_teaching/im/message/MemberChangedMessage.java

@@ -1,6 +1,7 @@
 package com.daya.live_teaching.im.message;
 
 import android.os.Parcel;
+import android.text.TextUtils;
 
 import com.cooleshow.base.utils.LogUtils;
 import com.daya.live_teaching.model.ClassMemberChangedAction;
@@ -20,15 +21,15 @@ import io.rong.imlib.model.MessageContent;
  */
 @MessageTag(value = "SC:RMCMsg", flag = MessageTag.ISPERSISTED)
 public class MemberChangedMessage extends MessageContent {
-    private final static String  TAG = MemberChangedMessage.class.getSimpleName();
-    private              int     action;     // 用户行为:1.加入;2.离开;3.踢出
-    private              String  userId;
-    private              String  userName;
-    private              int     role;       // 用户角色
-    private              long    timestamp;
-    private              boolean metronomeSwitch;
-    private              boolean handUpOn;
-    private              boolean examSongSwitch;
+    private final static String TAG = MemberChangedMessage.class.getSimpleName();
+    private int action;     // 用户行为:1.加入;2.离开;3.踢出
+    private String userId;
+    private String userName;
+    private int role;       // 用户角色
+    private long timestamp;
+    private boolean metronomeSwitch;
+    private boolean handUpOn;
+    private boolean examSongSwitch;
 
     public MemberChangedMessage(byte[] data) {
         String jsonStr = null;
@@ -40,13 +41,20 @@ public class MemberChangedMessage extends MessageContent {
         }
         try {
             JSONObject jsonObject = new JSONObject(jsonStr);
-            action = jsonObject.optInt("action");
+            String changedEnum = jsonObject.optString("changedEnum");
+            if (TextUtils.equals(changedEnum, "LEAVE")) {
+                action = 2;
+            } else if (TextUtils.equals(changedEnum, "JOIN")) {
+                action = 1;
+            } else {
+                action = 3;
+            }
             userId = jsonObject.optString("userId");
-            userName = jsonObject.optString("userName");
+            userName = jsonObject.optString("username");
             role = jsonObject.optInt("role");
             timestamp = jsonObject.optLong("timestamp");
             metronomeSwitch = jsonObject.optBoolean("metronomeSwitch");
-            handUpOn = jsonObject.optBoolean("handUpOn");
+            handUpOn = jsonObject.optBoolean("handFlag");
             examSongSwitch = jsonObject.optBoolean("examSongSwitch");
         } catch (JSONException e) {
             SLog.e(TAG, e.toString());
@@ -100,13 +108,13 @@ public class MemberChangedMessage extends MessageContent {
     public byte[] encode() {
         JSONObject jsonObject = new JSONObject();
         try {
-            jsonObject.put("action", action);
+//            jsonObject.put("action", action);
             jsonObject.put("userId", userId);
-            jsonObject.put("userName", userName);
+            jsonObject.put("username", userName);
             jsonObject.put("role", role);
             jsonObject.put("timestamp", timestamp);
             jsonObject.put("metronomeSwitch", metronomeSwitch);
-            jsonObject.put("handUpOn", handUpOn);
+            jsonObject.put("handFlag", handUpOn);
             jsonObject.put("examSongSwitch", examSongSwitch);
         } catch (JSONException e) {
             SLog.e(TAG, e.toString());

+ 72 - 23
live_teaching/src/main/java/com/daya/live_teaching/repository/ClassRepository.java

@@ -83,6 +83,17 @@ public class ClassRepository extends BaseRepository {
     private static final String PARAM_ROOM_ID = "roomId";
     private static final String PARAM_USER_ID = "userId";
     private static final String PARAM_CAMERA_ON = "cameraOn";
+
+
+    public static final String PARAM_CAMERA_TYPE = "CAMERA";
+    public static final String PARAM_MICROPHONE_TYPE = "MICROPHONE";
+    public static final String PARAM_MUSIC_MODE_TYPE = "MUSIC_MODE";
+    public static final String PARAM_HAND_UP_TYPE = "HAND_UP";
+    public static final String PARAM_EXAM_SONG_TYPE = "EXAM_SONG";
+    public static final String PARAM_MUSIC_SHEET_TYPE = "MUSIC_SHEET";
+    public static final String PARAM_ACCOMPANIMENT_TYPE = "ACCOMPANIMENT";
+
+
     // 5 原音6 伴奏
     private static final String PARAM_DEVICE_TYPE = "deviceType";
     private static final String PARAM_SOUND_VOLUME = "soundVolume";
@@ -139,7 +150,8 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(PARAM_CAMERA_ON, cameraOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_CAMERA_TYPE);
+        bodyMap.put("enable", cameraOn);
         sealClassService.deviceControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -147,9 +159,9 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(PARAM_CAMERA_ON, cameraOn);
-        bodyMap.put(PARAM_DEVICE_TYPE, deviceType);
         bodyMap.put(PARAM_SOUND_VOLUME, soundVolume);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MICROPHONE_TYPE);
+        bodyMap.put("enable", cameraOn);
         sealClassService.deviceControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -173,7 +185,8 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(PARAM_MIC_ON, microphone);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MICROPHONE_TYPE);
+        bodyMap.put("enable", microphone);
         sealClassService.deviceControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -181,7 +194,8 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(HAND_UP_ON, handUpOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_HAND_UP_TYPE);
+        bodyMap.put("enable", handUpOn);
         sealClassService.deviceControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -189,7 +203,8 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(MUSIC_MODE_ON, musicModeOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_MODE_TYPE);
+        bodyMap.put("enable", musicModeOn);
         sealClassService.deviceControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
 
     }
@@ -197,23 +212,26 @@ public class ClassRepository extends BaseRepository {
     public void batchControlCamera(String roomId, boolean cameraOn, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(PARAM_CAMERA_ON, cameraOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_CAMERA_TYPE);
+        bodyMap.put("enable", cameraOn);
         sealClassService.deviceBatchControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
 
-    public void batchControlMusicMode(String roomId, boolean microphone, ResultCallback<Boolean> callBack) {
+    public void batchControlMusicMode(String roomId, boolean musicMode, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(MUSIC_MODE_ON, microphone);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_MODE_TYPE);
+        bodyMap.put("enable", musicMode);
         sealClassService.deviceBatchControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
-    public void batchControlMicrophone(String roomId, String userId, boolean musicModeOn, ResultCallback<Boolean> callBack) {
+    public void batchControlMicrophone(String roomId, String userId, boolean microphone, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(PARAM_MIC_ON, musicModeOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MICROPHONE_TYPE);
+        bodyMap.put("enable", microphone);
         sealClassService.deviceBatchControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
 
     }
@@ -221,12 +239,24 @@ public class ClassRepository extends BaseRepository {
     //伴奏
     public void batchControlExamSong(String roomId, String userId, String musicScoreOn, String accompanimentOn, String musicScoreAccompanimentId, String soudnValue, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
+
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(MUSIC_SCORE_ON, musicScoreOn);
-        bodyMap.put(ACCOMPANIMENT_ON, accompanimentOn);
         bodyMap.put(EXAM_SONG_ID, musicScoreAccompanimentId);
         bodyMap.put(PARAM_SOUND_VOLUME, soudnValue);
+        if (TextUtils.equals("true", musicScoreOn)) {
+            bodyMap.put("enable", true);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_SHEET_TYPE);
+        } else if (TextUtils.equals("false", musicScoreOn)) {
+            bodyMap.put("enable", false);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_SHEET_TYPE);
+        } else if (TextUtils.equals("true", accompanimentOn)) {
+            bodyMap.put("enable", true);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_ACCOMPANIMENT_TYPE);
+        } else if (TextUtils.equals("false", accompanimentOn)) {
+            bodyMap.put("enable", false);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_ACCOMPANIMENT_TYPE);
+        }
         sealClassService.deviceBatchControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
 
     }
@@ -235,31 +265,44 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_USER_ID, userId);
-        bodyMap.put(MUSIC_SCORE_ON, musicScoreOn);
-        bodyMap.put(ACCOMPANIMENT_ON, accompanimentOn);
         bodyMap.put(EXAM_SONG_ID, musicScoreAccompanimentId);
+
+        if (TextUtils.equals("true", musicScoreOn)) {
+            bodyMap.put("enable", true);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_SHEET_TYPE);
+        } else if (TextUtils.equals("false", musicScoreOn)) {
+            bodyMap.put("enable", false);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_SHEET_TYPE);
+        } else if (TextUtils.equals("true", accompanimentOn)) {
+            bodyMap.put("enable", true);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_ACCOMPANIMENT_TYPE);
+        } else if (TextUtils.equals("false", accompanimentOn)) {
+            bodyMap.put("enable", false);
+            bodyMap.put(PARAM_DEVICE_TYPE, PARAM_ACCOMPANIMENT_TYPE);
+        }
         sealClassService.deviceControl(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
-    public void deviceApprove(String roomId, String ticket, ResultCallback<Boolean> callBack) {
+    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_TICKET, ticket);
+        bodyMap.put(PARAM_DEVICE_TYPE,deviceType);
         sealClassService.deviceApprove(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
-    public void deviceReject(String roomId, String ticket, ResultCallback<Boolean> callBack) {
+    public void deviceReject(String roomId, String deviceType, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(PARAM_TICKET, ticket);
+        bodyMap.put(PARAM_DEVICE_TYPE, deviceType);
         sealClassService.deviceReject(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
     public void deviceSyncHandUpOn(String roomId, String userId, boolean handUpOn, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(HAND_UP_ON, handUpOn);
         bodyMap.put(PARAM_USER_ID, userId);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_HAND_UP_TYPE);
+        bodyMap.put("enable", handUpOn);
         sealClassService.deviceSync(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -267,6 +310,8 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(MUSIC_MODE_ON, musicModeOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_MODE_TYPE);
+        bodyMap.put("enable", musicModeOn);
         sealClassService.deviceSync(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -274,20 +319,24 @@ public class ClassRepository extends BaseRepository {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
         bodyMap.put(PARAM_CAMERA_ON, cameraOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_CAMERA_TYPE);
+        bodyMap.put("enable", cameraOn);
         sealClassService.deviceSync(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
     public void deviceSyncMic(String roomId, boolean microphoneOn, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(PARAM_MIC_ON, microphoneOn);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MICROPHONE_TYPE);
+        bodyMap.put("enable", microphoneOn);
         sealClassService.deviceSync(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
     public void deviceSyncExamSong(String roomId, boolean examSong, ResultCallback<Boolean> callBack) {
         HashMap<String, Object> bodyMap = new HashMap<>();
         bodyMap.put(PARAM_ROOM_ID, roomId);
-        bodyMap.put(MUSIC_SCORE_ON, examSong);
+        bodyMap.put(PARAM_DEVICE_TYPE, PARAM_MUSIC_SHEET_TYPE);
+        bodyMap.put("enable", examSong);
         sealClassService.deviceSync(RetrofitUtil.createJsonRequest(bodyMap)).enqueue(new CallBackWrapper<Boolean>(callBack));
     }
 
@@ -611,7 +660,7 @@ public class ClassRepository extends BaseRepository {
                 result.setAccept(speechResultMessage.isAccept());
                 eventListener.onRequestSpeechResult(result);
                 return true;
-            }  else if (content instanceof PlayMidiMessage) {      // 播放节拍器
+            } else if (content instanceof PlayMidiMessage) {      // 播放节拍器
                 PlayMidiMessage playMidiMessage = (PlayMidiMessage) content;
                 PlayMidi playMidi = new PlayMidi();
                 playMidi.setUserId(playMidiMessage.getUserId());

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

@@ -49,6 +49,7 @@ import com.daya.live_teaching.model.StreamResource;
 import com.daya.live_teaching.model.UpgradeRoleInvite;
 import com.daya.live_teaching.model.UserInfo;
 import com.daya.live_teaching.model.WhiteBoard;
+import com.daya.live_teaching.repository.ClassRepository;
 import com.daya.live_teaching.repository.OnClassEventListener;
 import com.daya.live_teaching.rtc.RtcManager;
 import com.daya.live_teaching.ui.adapter.WhiteBoardListAdapter;
@@ -996,31 +997,17 @@ public class LiveActivity extends BaseActivity<ActivityLiveBinding> {
 
     // 设备控制请求 dialog
     private void inviteOpenedDevicesDialog(DeviceType deviceType, final String ticket) {
-        //        if (deviceType == DeviceType.ExamSong) {
-        //            if (classViewModel.getUserInfo().getValue().getExamSongDownloadJson() != null) {
-        //                deviceApprove(roomId, ticket);
-        //            } else {
-        //                deviceReject(roomId, ticket);
-        //            }
-        //            return;
-        //        }
-        if (deviceType == DeviceType.handUpOn || deviceType == DeviceType.musicMode || deviceType == DeviceType.Microphone) {
+        if (deviceType == DeviceType.musicMode || deviceType == DeviceType.Microphone) {
             if (deviceType == DeviceType.Microphone) {
                 showToast("老师开启了你的麦克风");
+                deviceApprove(roomId, ClassRepository.PARAM_MICROPHONE_TYPE);
+            }else{
+                deviceApprove(roomId, ClassRepository.PARAM_MUSIC_MODE_TYPE);
             }
-            deviceApprove(roomId, ticket);
             return;
         }
         int contentMessage = R.string.class_dialog_request_invite_camera_connect;
         String toast = "老师开启了你的摄像头";
-        if (deviceType == DeviceType.Microphone) {
-            contentMessage = R.string.class_dialog_request_invite_mic_connect;
-            toast = "老师开启了你的麦克风";
-        }
-        if (deviceType == DeviceType.musicMode) {
-            contentMessage = R.string.class_dialog_request_invite_music_connect;
-            toast = "老师开启了你的音乐模式";
-        }
         int finalContentMessage = contentMessage;
         LiveCommonDialog dialog = new LiveCommonDialog(this);
         dialog.show();
@@ -1032,30 +1019,30 @@ public class LiveActivity extends BaseActivity<ActivityLiveBinding> {
             @Override
             public void onClick(View v) {
                 dialog.dismiss();
-                deviceApprove(roomId, ticket);
+                deviceApprove(roomId, ClassRepository.PARAM_CAMERA_TYPE);
             }
         });
         dialog.setOnCancelClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 dialog.dismiss();
-                deviceReject(roomId, ticket);
+                deviceReject(roomId, ClassRepository.PARAM_CAMERA_TYPE);
             }
         });
     }
 
     // deviceReject
-    private void deviceApprove(String roomId, String ticket) {
+    private void deviceApprove(String roomId, String deviceType) {
         if (classViewModel != null) {
-            classViewModel.deviceApprove(roomId, ticket).observe(this, new ShowToastObserver(this));
+            classViewModel.deviceApprove(roomId, deviceType).observe(this, new ShowToastObserver(this));
         }
 
     }
 
     //拒绝设备开启请求
-    private void deviceReject(String roomId, String ticket) {
+    private void deviceReject(String roomId, String deviceType) {
         if (classViewModel != null) {
-            classViewModel.deviceReject(roomId, ticket).observe(this, new ShowToastObserver(this));
+            classViewModel.deviceReject(roomId, deviceType).observe(this, new ShowToastObserver(this));
         }
 
     }

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

@@ -1317,10 +1317,10 @@ public class ClassViewModel extends ViewModel {
      * @param ticket
      * @return
      */
-    public LiveData<RequestState> deviceApprove(String roomId, String ticket) {
+    public LiveData<RequestState> deviceApprove(String roomId, String deviceType) {
         final StateLiveData stateLiveData = new StateLiveData();
         stateLiveData.loading();
-        classRepository.deviceApprove(roomId, ticket, new ResultCallback<Boolean>() {
+        classRepository.deviceApprove(roomId, deviceType, new ResultCallback<Boolean>() {
             @Override
             public void onSuccess(Boolean result) {
                 stateLiveData.success();
@@ -1342,10 +1342,10 @@ public class ClassViewModel extends ViewModel {
      * @param ticket
      * @return
      */
-    public LiveData<RequestState> deviceReject(String roomId, String ticket) {
+    public LiveData<RequestState> deviceReject(String roomId, String deviceType) {
         final StateLiveData stateLiveData = new StateLiveData();
         stateLiveData.loading();
-        classRepository.deviceReject(roomId, ticket, new ResultCallback<Boolean>() {
+        classRepository.deviceReject(roomId, deviceType, new ResultCallback<Boolean>() {
             @Override
             public void onSuccess(Boolean result) {
                 stateLiveData.success();