瀏覽代碼

解决asr腕表使用webrtc通话时对端声音异常问题,解决方法为修改腕表通话时的audiosource类型

weizhengliang 10 月之前
父節點
當前提交
b14f2a0954
共有 1 個文件被更改,包括 14 次插入1 次删除
  1. 14 1
      janus/src/main/java/com/wdkl/rtc/rtc/WebRTCEngine.java

+ 14 - 1
janus/src/main/java/com/wdkl/rtc/rtc/WebRTCEngine.java

@@ -9,11 +9,13 @@ import android.content.Context;
 import android.content.Intent;
 import android.media.AudioDeviceInfo;
 import android.media.AudioManager;
+import android.media.MediaRecorder;
 import android.media.projection.MediaProjection;
 import android.os.Build;
 import android.util.Log;
 import android.view.View;
 
+import com.wdkl.ncs.android.middleware.BuildConfig;
 import com.wdkl.rtc.rtc.observer.CreatePeerConnectionCallback;
 import com.wdkl.rtc.util.JanusConstant;
 import com.wdkl.rtc.render.ProxyVideoSink;
@@ -215,7 +217,18 @@ public class WebRTCEngine {
         }
 
         // 构造Factory
-        AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(mContext).createAudioDeviceModule();
+        AudioDeviceModule audioDeviceModule;
+        if (BuildConfig.WATCH_TYPE == "asr") {
+            //asr腕表audioSource默认使用MediaRecorder.AudioSource.VOICE_COMMUNICATION=7,导致通话过程中对方声音变得沙哑,改成使用MediaRecorder.AudioSource.CAMCORDER正常
+            audioDeviceModule = JavaAudioDeviceModule.builder(mContext)
+                    .setAudioSource(MediaRecorder.AudioSource.CAMCORDER)
+                    .createAudioDeviceModule();
+        } else {
+            //其他设备使用默认audioSource类型
+            audioDeviceModule = JavaAudioDeviceModule.builder(mContext)
+                    .createAudioDeviceModule();
+        }
+
         PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
         return PeerConnectionFactory.builder()
                 .setOptions(options)