【发布时间】:2021-11-05 06:38:16
【问题描述】:
我正在使用 PeerJS 和 WebView 为 android 开发语音通话应用程序。我希望音频通过听筒播放。这是我的代码,
private fun initAudio(){
am = getSystemService(AUDIO_SERVICE) as AudioManager
volumeControlStream = AudioManager.STREAM_VOICE_CALL
am.mode = AudioManager.MODE_IN_COMMUNICATION
am.isSpeakerphoneOn = false//<= not working in android 12
}
private fun toggleSpeakerMode(){
am.isSpeakerphoneOn = !am.isSpeakerphoneOn // <= final value is always true in android 12
}
上面的代码在旧版本的 android 上运行良好,但在 android 12(模拟器)上不行。
am.isSpeakerphoneOn 在 android 12 中总是正确的。我在这里做错了吗?还是模拟器的bug?
更新
只有在 WebView 上启动 webRTC 流后才会出现此问题(我能够在流之前切换扬声器)。
【问题讨论】:
-
运气好吗?我面临着类似的问题:第一次设置
MODE_IN_COMMUNICATION和isSpeakerphoneOn = false工作正常,但切换到MODE_NORMAL/isSpeakerphoneOn = true并再次尝试切换到第一个提到的设置对导致模式切换,但扬声器仍然是在。在这种情况下,我什至尝试循环强制isSpeakerphoneOn = false,但这不会被尊重 -
还没有解决方案
标签: android android-audiomanager