Android Agora sdk升级后,加入频道会导致扬声器重新打开

背景:原先使用的 sdk是2.8.0, 这次升级到3.0.1.1
问题步骤:
1.在加入频道调用之前, RtcEngine##setEnableSpeakerphone(false)使扬声器关闭, logcat会打印I/AudioManager: setSpeakerphoneOn on:false。(正确)
2.1对于组聊,加入频道,使用RtcEngine#joinChannel(mVendorKey, mChannelId, null, mMyCallId),logcat会打印(系统的日志?)

2020-09-15 20:05:36.527 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false
2020-09-15 20:05:36.530 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:true

2.2对于单聊,加入频道,使用RtcEngine#joinChannel(mVendorKey, mChannelId, null, mMyCallId),logcat会打印(系统的日志?)

2020-09-15 20:08:16.976 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false
2020-09-15 20:08:16.979 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false

==>
为啥 RtcEngine#joinChannel会重新设置扬声器开关?还是设置两次? 对于组聊, 为啥第一次false,第二次true?

备注:
使用Agora sdk 2.8.0时, RtcEngine#joinChannel只会调用一次,且与之前设置的一致,为false

2020-09-15 20:08:16.976 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false

最新的 sdk 3.1.2, 也有这个问题, RtcEngine#joinChannel会调用两次设置麦克风(一次off,一次on)

2020-09-16 09:39:54.423 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false
2020-09-16 09:39:54.426 com.demo.myapp I/AudioManager: setSpeakerphoneOn on:true
  1. API 调用时序有些问题,请确保在调用 setEnableSpeakerphone 方法前已调用过 joinChannel 方法。如果想要在加入频道前设置默认路由,请在 joinChannel 前调用 setDefaultAudioRoutetoSpeakerphone 来设置。
  2. 请参考各场景下的默认路由:

    如果没有进行 setDefaultAudioRoutetoSpeakerphone 配置,那么 joinChannel 后会走默认路由。

谢谢, 问题已解决。
初始化RtcEngine时, (加入频道前)调用RtcEngine#setDefaultAudioRoutetoSpeakerphone(false)即可。

但是,有另一个疑惑, 通过RtcEngine#setEnableSpeakerphone设置麦克风时,logcat会先打印I/AudioManager: setSpeakerphoneOn on:false(为啥会先有这个调用),然后才是正确的对应的 speakerphone on:true/false。

2020-09-16 11:13:19.063 32516-32516/com.demo.myapp I/AgoraCallService: #setSpeaker(true
2020-09-16 11:13:19.069 32516-32516/com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false
2020-09-16 11:13:19.071 32516-32516/com.demo.myapp I/AudioManager: setSpeakerphoneOn on:true

2020-09-16 11:13:34.879 32516-32516/com.demo.myapp I/AgoraCallService: #setSpeaker(false
2020-09-16 11:13:34.884 32516-32516/com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false
2020-09-16 11:13:34.885 32516-32516/com.demo.myapp I/AudioManager: setSpeakerphoneOn on:false

好的。

应该是会先打印一下当前默认的状态,这个是 android 系统的打印