| 
					
				 | 
			
			
				@@ -52,7 +52,7 @@ import androidx.lifecycle.ViewModelProviders; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Author by pq, Date on 2023/4/20. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVideoFragmentPresenter> implements View.OnClickListener { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding, MainVideoFragmentPresenter> implements View.OnClickListener { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public static final String TAG = "VideoFragment"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     RelativeLayout classShareRootView; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DisplayNullView displayNull; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -125,19 +125,19 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void initViews(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        classShareRootView =mViewBinding.classShareRootView; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        displayNull =mViewBinding.classShareScreenNull; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        shareVideoView =mViewBinding.classShareVideoview; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ll_operate =mViewBinding.llOperate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tvSpeech =mViewBinding.tvSpeech; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        iv_raise_hands =mViewBinding.ivRaiseHands; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tvShareName =mViewBinding.tvShareName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        viewMainClickHelp =mViewBinding.viewMainClickHelp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ivCameraStatusTip =mViewBinding.ivCameraTip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tvDisplayTip =mViewBinding.tvDisplayTip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        iv_signal =mViewBinding.ivSignal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        llNameTip =mViewBinding.llNameTip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void initViews() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        classShareRootView = mViewBinding.classShareRootView; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        displayNull = mViewBinding.classShareScreenNull; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        shareVideoView = mViewBinding.classShareVideoview; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ll_operate = mViewBinding.llOperate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tvSpeech = mViewBinding.tvSpeech; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        iv_raise_hands = mViewBinding.ivRaiseHands; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tvShareName = mViewBinding.tvShareName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        viewMainClickHelp = mViewBinding.viewMainClickHelp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ivCameraStatusTip = mViewBinding.ivCameraTip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tvDisplayTip = mViewBinding.tvDisplayTip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        iv_signal = mViewBinding.ivSignal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        llNameTip = mViewBinding.llNameTip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void setStudentOnStage(boolean isOnstage) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -407,7 +407,7 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.width = width; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.height = width; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.left = marginLeft; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item.right =marginLeft; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.right = marginLeft; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.type = OperateItem.Type.CHECKBOX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.text = operate.text; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rightItems.add(item); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -425,7 +425,7 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 teachingToolsView.setTextColor(R.color.color_383a3d); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                layoutParams.setMargins(operateItem.left, 0, operateItem.right, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            layoutParams.setMargins(operateItem.left, 0, operateItem.right, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //            if (i != rightItems.size() - 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //                layoutParams.setMargins(0, 0, 0, 0); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -477,9 +477,8 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!TextUtils.isEmpty(tUserId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     userIds.add(tUserId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                shareVideoView.removeVideoView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                shareVideoView.onPause(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ScreenDisplay.Display type = screenDisplay.getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                showCameraTip(screenDisplay.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 switchTipVisibility(type == ScreenDisplay.Display.LECTURER || type == ScreenDisplay.Display.ASSISTANT || type == ScreenDisplay.Display.STUDENT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (type == ScreenDisplay.Display.LECTURER || type == ScreenDisplay.Display.ASSISTANT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     String userId = screenDisplay.getUserId(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -505,14 +504,7 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             updateLocalPreview(shareVideoView); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //显示老师自己的时候 判断是否需要显示摄像头提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    TeachingToolsView cbCamera = getToolsView(BtnOperate.CAMERA.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    boolean checked = cbCamera.isChecked(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LOG.i("cameraView isChecked:"+checked); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ivCameraStatusTip.setVisibility(checked ? View.VISIBLE : View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     displayNull.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (type == ScreenDisplay.Display.STUDENT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     String userId = screenDisplay.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     controlCameraBt(true); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -536,7 +528,6 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //根据userId,切换到对应的视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     shareVideoView.setVisibility(View.VISIBLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     displayNull.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ivCameraStatusTip.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     startRemote(userId, shareVideoView); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (type == null || type == ScreenDisplay.Display.NONE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (Role.LECTURER == userInfoValue.getRole()) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -601,7 +592,10 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (deviceChange.deviceType == DeviceType.Camera) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            showCameraTip(deviceChange.userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -643,10 +637,45 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return value != null && value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void showCameraTip(String targetUserId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadCameraCloseTip(targetUserId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void loadCameraCloseTip(String targetUserId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ScreenDisplay screenDisplay = classViewModel.getDisplay().getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (screenDisplay == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ivCameraStatusTip.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!TextUtils.equals(targetUserId, screenDisplay.getUserId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ScreenDisplay.Display type = screenDisplay.getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (type != ScreenDisplay.Display.LECTURER && type != ScreenDisplay.Display.STUDENT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ivCameraStatusTip.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ClassMember classMember = screenDisplay.getClassMember(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classMember == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ivCameraStatusTip.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (classMember.isCamera()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ivCameraStatusTip.setVisibility(View.GONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ivCameraStatusTip.loadAvatar(classMember.getHeadUrl()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ivCameraStatusTip.setVisibility(View.VISIBLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private boolean isOnMainDisplay(String userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ScreenDisplay value = classViewModel.getDisplay().getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (value != null && TextUtils.equals(value.getUserId(), userId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(value.getType() == ScreenDisplay.Display.STUDENT || value.getType() == ScreenDisplay.Display.LECTURER){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (value.getType() == ScreenDisplay.Display.STUDENT || value.getType() == ScreenDisplay.Display.LECTURER) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -707,8 +736,8 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void changeCameraState(boolean isEnable) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         presenter.changeCameraEnable(!isEnable);//设置mute video流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(isOnMainDisplay(userInfoValue.getUserId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ivCameraStatusTip.setVisibility(isEnable ? View.GONE : View.VISIBLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (isOnMainDisplay(userInfoValue.getUserId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            showCameraTip(userInfoValue.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             TeachingToolsView cbCamera = getToolsView(BtnOperate.CAMERA.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (cbCamera != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cbCamera.setChecked(!isEnable); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -718,7 +747,7 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void changeMicPhoneState(boolean isEnable) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         presenter.changeMicPhone(!isEnable); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(isOnMainDisplay(userInfoValue.getUserId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (isOnMainDisplay(userInfoValue.getUserId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             TeachingToolsView cbMic = getToolsView(BtnOperate.MIC.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (cbMic != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 changeMicStatus(cbMic, !isEnable); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -904,7 +933,7 @@ public class VideoFragment extends BaseMVPFragment<FgVideoLayoutBinding,MainVide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (banedCameraBox == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        LOG.i(TAG,"setViewStatus:"+userInfo.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LOG.i(TAG, "setViewStatus:" + userInfo.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (hasVideoPermssion) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 因为按钮 false 是否代表不禁止, true 待变禁止, 所以和 用户信息携带的状态值相反 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (banedCameraBox.isChecked() == userInfo.isCamera()) { 
			 |