honghengqiang 2 jaren geleden
bovenliggende
commit
ce4d7acd15

+ 36 - 11
baseswago/src/main/java/com/swago/baseswago/agora/AgoraManager.kt

@@ -42,6 +42,7 @@ object AgoraManager {
 
                     override fun onError(err: Int) {
                         super.onError(err)
+                        iSwagoIRtcEngineEventHandler?.onError(err)
                         LogUtil.d("声网错误码-$err")
                     }
 
@@ -107,10 +108,44 @@ object AgoraManager {
 
     private fun setChannelProfile() {
         mRtcEngine?.setChannelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING)
+        mRtcEngine?.enableAudio()
+        mRtcEngine?.enableVideo()
     }
 
 
-    fun setClientRole(userType: Int,isNeedVideo:Boolean,isNeedVoice:Boolean) {
+    fun setVideoAudio(pullVideo:Boolean,pullAudio:Boolean,pushVideo:Boolean,pushAudio:Boolean){
+        if (pullVideo){
+            mRtcEngine?.muteAllRemoteVideoStreams(false)
+        }else{
+            mRtcEngine?.muteAllRemoteVideoStreams(true)
+        }
+        if (pullAudio){
+            mRtcEngine?.muteAllRemoteAudioStreams(false)
+        }else{
+            mRtcEngine?.muteAllRemoteAudioStreams(true)
+        }
+        if (pushAudio){
+            mRtcEngine?.enableLocalAudio(true)
+            mRtcEngine?.muteLocalAudioStream(false)
+        }else{
+            mRtcEngine?.enableLocalAudio(false)
+            mRtcEngine?.muteLocalAudioStream(true)
+        }
+        if (pushVideo){
+            mRtcEngine?.enableLocalVideo(true)
+            mRtcEngine?.muteLocalVideoStream(false)
+        }else{
+            mRtcEngine?.enableLocalVideo(false)
+            mRtcEngine?.muteLocalVideoStream(true)
+        }
+        if (pushVideo || pushAudio){
+            setClientRole(RoleType.anchor)
+        }else{
+            setClientRole(RoleType.user)
+        }
+    }
+
+    private fun setClientRole(userType: Int) {
         this.userType = userType
         if (userType == RoleType.anchor) {
             mRtcEngine?.setClientRole(CLIENT_ROLE_BROADCASTER)
@@ -119,16 +154,6 @@ object AgoraManager {
             clientRoleOptions.audienceLatencyLevel = AUDIENCE_LATENCY_LEVEL_LOW_LATENCY
             mRtcEngine?.setClientRole(CLIENT_ROLE_AUDIENCE, clientRoleOptions)
         }
-        if(isNeedVideo){
-            mRtcEngine?.enableVideo()
-        }else{
-            mRtcEngine?.disableVideo()
-        }
-        if(isNeedVoice){
-            mRtcEngine?.enableAudio()
-        }else{
-            mRtcEngine?.disableAudio()
-        }
     }
 
     /**

+ 1 - 0
baseswago/src/main/java/com/swago/baseswago/agora/ISwagoIRtcEngineEventHandler.kt

@@ -19,4 +19,5 @@ interface ISwagoIRtcEngineEventHandler {
 
     fun onFirstLocalAudioFramePublished(elapsed:Int)
 
+    fun onError(err: Int)
 }

+ 5 - 1
room/src/main/java/com/swago/room/anchor/AnchorRoomActivity.kt

@@ -85,7 +85,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
         agoraService = Intent(this, AgoraForegroundService::class.java)
         AgoraManager.initializeEngine(this, this)
         AgoraManager.setVideoConfiguration()
-        AgoraManager.setClientRole(RoleType.anchor, isNeedVideo = true, isNeedVoice = true)
+        AgoraManager.setVideoAudio(pullVideo = true, pullAudio = true, pushVideo = true, pushAudio = true)
         AgoraManager.setupLocalVideo(this, binding.flLocal)
         anchorRoomFragment = fragments[1] as AnchorRoomFragment
         binding.viewPager.adapter = adapter
@@ -247,6 +247,10 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
 
     }
 
+    override fun onError(err: Int) {
+
+    }
+
     /**************************PK******************************/
     private val marginTopValue by lazy {
         ImmersionBar.getStatusBarHeight(this) + DpPxUtil.dip2px(78f)

+ 18 - 3
room/src/main/java/com/swago/room/lianmai/LianMaiView.kt

@@ -95,7 +95,12 @@ class LianMaiView : ConstraintLayout, IRoomActiveListener, ILianMaiListener {
                             UserInfo.getUserInfo()?.let { userInfo ->
                                 if (SwagoRoomManager.roleType == RoleType.user && userInfo.id == lianMaiIMModel.senderId) {
                                     //正在连麦的用户
-                                    AgoraManager.setClientRole(RoleType.anchor,true, isNeedVoice = true)
+                                    AgoraManager.setVideoAudio(
+                                        pullVideo = true,
+                                        pullAudio = true,
+                                        pushVideo = false,
+                                        pushAudio = true
+                                    )
                                     AgoraManager.renewToken(token)
                                 }
                             }
@@ -113,7 +118,12 @@ class LianMaiView : ConstraintLayout, IRoomActiveListener, ILianMaiListener {
                 UserInfo.getUserInfo()?.let {
                     if (SwagoRoomManager.roleType == RoleType.user && it.id == lianMaiIMModel.senderId) {
                         //正在连麦用户
-                        AgoraManager.setClientRole(RoleType.user,true, isNeedVoice = true)
+                        AgoraManager.setVideoAudio(
+                            pullVideo = true,
+                            pullAudio = true,
+                            pushVideo = false,
+                            pushAudio = false
+                        )
                         lianMaiIMModel.linkMicToken?.let {
                             AgoraManager.renewToken(it)
                         }
@@ -129,7 +139,12 @@ class LianMaiView : ConstraintLayout, IRoomActiveListener, ILianMaiListener {
         visibility = View.INVISIBLE
         if (!isAnchor) {
             //如果不是主播还是把角色切换成用户
-            AgoraManager.setClientRole(RoleType.user, isNeedVideo = true, isNeedVoice = true)
+            AgoraManager.setVideoAudio(
+                pullVideo = true,
+                pullAudio = true,
+                pushVideo = false,
+                pushAudio = false
+            )
         }
     }
 }

+ 10 - 1
room/src/main/java/com/swago/room/user/UserRoomActivity.kt

@@ -131,7 +131,12 @@ class UserRoomActivity : AbsUserActivity<ActivityAbsRoomUserBinding, UserRoomMod
         window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
 
         AgoraManager.setVideoConfiguration()
-        AgoraManager.setClientRole(RoleType.user, isNeedVideo = true, isNeedVoice = true)
+        AgoraManager.setVideoAudio(
+            pullVideo = true,
+            pullAudio = true,
+            pushVideo = false,
+            pushAudio = false
+        )
 
         ivClose?.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
@@ -290,6 +295,10 @@ class UserRoomActivity : AbsUserActivity<ActivityAbsRoomUserBinding, UserRoomMod
         lianMaiVm.lianMaiCallback()
     }
 
+    override fun onError(err: Int) {
+
+    }
+
     fun gotoTargetRoom(anchorId: String) {
         iRoomInfos.forEachIndexed { index, userRoomModel ->
             if (userRoomModel?.momentModel != null) {