Explorar o código

sip视频通话对方无声问题

weizhengliang hai 1 ano
pai
achega
9fb04d77b6

+ 34 - 16
app/src/main/java/com/wdkl/ncs/entraceguard/activity/MainActivity.kt

@@ -6,6 +6,7 @@ import android.content.Intent
 import android.content.pm.PackageInfo
 import android.content.pm.PackageManager
 import android.media.AudioAttributes
+import android.media.AudioManager
 import android.media.SoundPool
 import android.os.Build
 import android.os.CountDownTimer
@@ -180,6 +181,7 @@ class MainActivity : BaseActivity<MainActivityPresenter, ActivityMainBinding>(),
                 if (state == Call.State.IncomingReceived || state == Call.State.IncomingEarlyMedia) {
                     //无需处理来电
                 } else if (state == Call.State.Connected) {
+                    mCore?.isMicEnabled = false
                     runOnUiThread {
                         showMessage(message)
                     }
@@ -299,8 +301,7 @@ class MainActivity : BaseActivity<MainActivityPresenter, ActivityMainBinding>(),
                         // 确保新创建的是最新
                         mCore?.defaultProxyConfig = cfg
 
-                        //初始化时静音,等主机端允许通话后才打开mic
-                        mCore?.isMicEnabled = false
+                        mCore?.isMicEnabled = true
                     } else {
                         showMessage("SIP empty")
                     }
@@ -351,20 +352,6 @@ class MainActivity : BaseActivity<MainActivityPresenter, ActivityMainBinding>(),
                 val tcpModel = messageEvent.getMessage() as TcpModel
                 if (tcpModel.type.equals(TcpType.ENTRACEGUARD)) {
                     when (tcpModel.action) {
-                        TcpAction.EntraceGuardAction.SUCCESS -> {
-                            //呼叫请求成功
-                            interactionVO = JSON.parseObject(tcpModel.data.toString(), InteractionVO::class.java)
-                            if (mCore != null) {
-                                val addressToCall = mCore!!.interpretUrl(interactionVO!!.toSipId)
-                                val params = mCore!!.createCallParams(null)
-                                params?.isVideoEnabled = true
-
-                                if (addressToCall != null) {
-                                    mCore!!.inviteAddressWithParams(addressToCall, params!!)
-                                    Log.d(TAG, ">>>>>>>>>>> invite address: " + addressToCall.asString())
-                                }
-                            }
-                        }
 
                         TcpAction.EntraceGuardAction.ACCEPT -> { //接通视频
                             //取消响应计时
@@ -373,6 +360,20 @@ class MainActivity : BaseActivity<MainActivityPresenter, ActivityMainBinding>(),
                             interactionVO = JSON.parseObject(tcpModel.data.toString(), InteractionVO::class.java)
 
                             RingPlayHelper.playRingTone(this, R.raw.alice, true)
+
+                            if (SettingConfig.getSipEnabled(activity)) {
+                                //发起sip视频请求
+                                if (mCore != null) {
+                                    val addressToCall = mCore!!.interpretUrl(interactionVO!!.toSipId)
+                                    val params = mCore!!.createCallParams(null)
+                                    params?.isVideoEnabled = true
+
+                                    if (addressToCall != null) {
+                                        mCore!!.inviteAddressWithParams(addressToCall, params!!)
+                                        Log.d(TAG, ">>>>>>>>>>> invite address: " + addressToCall.asString())
+                                    }
+                                }
+                            }
                         }
 
                         TcpAction.EntraceGuardAction.FAILED ->{  //护士主机不在线
@@ -782,9 +783,26 @@ class MainActivity : BaseActivity<MainActivityPresenter, ActivityMainBinding>(),
             return
         }
 
+        val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
+        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION)
+
         if (enable) {
+            audioManager.setStreamVolume(
+                AudioManager.MODE_IN_COMMUNICATION,
+                audioManager.getStreamMaxVolume(AudioManager.MODE_IN_COMMUNICATION),
+                AudioManager.FX_KEY_CLICK
+            )
+            audioManager.setSpeakerphoneOn(true)
+
             AudioRouteUtils.routeAudioToSpeaker(mCore!!)
         } else {
+            audioManager.setStreamVolume(
+                AudioManager.STREAM_MUSIC,
+                audioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
+                AudioManager.FX_KEY_CLICK
+            )
+            audioManager.setSpeakerphoneOn(false)
+
             AudioRouteUtils.routeAudioToEarpiece(mCore!!)
         }
     }