我正在做一个内部调用应用程序,当我调用一个号码时,本地android拨号程序打开,然后我在应用程序中跟踪调用,而不是遵循本地拨号程序中的调用。问题是,在应用程序中,当我想激活或停用母语为方言的人时,它没有任何效果。本地拨号程序在后台,应用程序在前台,但由于某种原因,当我试图激活应用程序的扬声器时,从这里开始跟踪呼叫,它不起作用。这种情况只发生在Android 11和12版本中,但是在Android 8、9和10版本中,它工作得非常完美,我可以在应用程序中操纵扬声器,而无需使用本地拨号程序。
这是我的代码,用来激活和取消扬声器:
private fun enableSpeaker() {
audioManager?.let {
if (!it.isSpeakerphoneOn) {
audioManager!!.mode = AudioManager.MODE_IN_COMMUNICATION
audioManager!!.isSpeakerphoneOn = true
}
}
}private fun disableSpeaker() {
audioManager?.let {
if (it.isSpeakerphoneOn) {
//audioManager.setMicrophoneMute(false)
audioManager!!.mode = AudioManager.MODE_NORMAL
audioManager!!.isSpeakerphoneOn = false
}
}
}发布于 2022-09-08 18:45:51
对于Android 12及以上版本,使用audioManager.setCommunicationDevice而不是audioManager.isSpeakerPhoneOn = true。
https://stackoverflow.com/questions/71573476
复制相似问题