Browse Source

添加了未加入课堂的检查
直接操作本地音频流而不重新加入频道
保持了一致的错误处理方式

yourname 7 months ago
parent
commit
56fe3c02f6
1 changed files with 14 additions and 41 deletions
  1. 14 41
      client/mobile/pages_classroom.tsx

+ 14 - 41
client/mobile/pages_classroom.tsx

@@ -789,29 +789,17 @@ export const ClassroomPage = () => {
 
     try {
       if (isCameraOn) {
-        // await leaveRtcChannel();
-        // await joinRtcChannel(classId, {
-        //   publishVideo: false,
-        //   publishAudio: isAudioOn,
-        //   publishScreen: isScreenSharing
-        // });
         await aliRtcEngine.current?.stopPreview();
         await aliRtcEngine.current?.enableLocalVideo(false)
         await aliRtcEngine.current?.publishLocalVideoStream(false)
       } else {
-        // await leaveRtcChannel();
-        // await joinRtcChannel(classId, {
-        //   publishVideo: true,
-        //   publishAudio: isAudioOn,
-        //   publishScreen: isScreenSharing
-        // });
         await aliRtcEngine.current?.setLocalViewConfig('localPreviewer', AliRtcVideoTrack.AliRtcVideoTrackCamera);
         await aliRtcEngine.current?.enableLocalVideo(true)
         await aliRtcEngine.current?.startPreview();
         await aliRtcEngine.current?.publishLocalVideoStream(true)
-        await aliRtcEngine.current?.startAndPublishDefaultDevices()
    
       }
+      await aliRtcEngine.current?.startAndPublishDefaultDevices()
       setIsCameraOn(!isCameraOn);
     } catch (err) {
       console.error('切换摄像头状态失败:', err);
@@ -821,13 +809,19 @@ export const ClassroomPage = () => {
 
   // 切换音频状态
   const toggleAudio = async () => {
+    if(!aliRtcEngine.current?.isInCall){
+      showToast('error', '先加入课堂');
+      return;
+    }
+
     try {
-      await leaveRtcChannel();
-      await joinRtcChannel(classId, {
-        publishVideo: isCameraOn,
-        publishAudio: !isAudioOn,
-        publishScreen: isScreenSharing
-      });
+      if (isAudioOn) {
+        await aliRtcEngine.current?.stopAudioCapture()
+        await aliRtcEngine.current?.publishLocalAudioStream(false);
+      } else {
+        await aliRtcEngine.current?.publishLocalAudioStream(true);
+      }
+      await aliRtcEngine.current?.startAndPublishDefaultDevices();
       setIsAudioOn(!isAudioOn);
     } catch (err) {
       console.error('切换麦克风状态失败:', err);
@@ -844,37 +838,16 @@ export const ClassroomPage = () => {
 
     try {
       if (isScreenSharing) {
-        // await leaveRtcChannel();
-        // await joinRtcChannel(classId, {
-        //   publishVideo: isCameraOn,
-        //   publishAudio: isAudioOn,
-        //   publishScreen: false
-        // });
-        // await aliRtcEngine.current?.stopPreviewScreen();
         await aliRtcEngine.current?.publishLocalScreenShareStream(false)
         await aliRtcEngine.current?.stopScreenShare()
       } else {
-        // await leaveRtcChannel();
-        // // 设置屏幕分享预览视图
-        // await joinRtcChannel(classId, {
-        //   publishVideo: isCameraOn,
-        //   publishAudio: isAudioOn,
-        //   publishScreen: true
-        // });
         await aliRtcEngine.current?.publishLocalScreenShareStream(true)
         await aliRtcEngine.current?.setLocalViewConfig(
           'screenPreviewer',
           AliRtcVideoTrack.AliRtcVideoTrackScreen
         );
-        await aliRtcEngine.current?.startAndPublishDefaultDevices()
-        // await aliRtcEngine.current?.startPreviewScreen({
-        //   audio: isAudioOn,  // 根据音频状态决定是否共享音频
-        //   videoTrack: undefined,  // 使用默认视频轨道
-        //   audioTrack: undefined   // 使用默认音频轨道
-        // });
-        // await aliRtcEngine.current?.startPreviewScreen()
-        // await aliRtcEngine.current?.startScreenShare()
       }
+      await aliRtcEngine.current?.startAndPublishDefaultDevices()
       setIsScreenSharing(!isScreenSharing);
     } catch (err) {
       console.error('切换屏幕分享失败:', err);