Place call without delay after setting mode to MODE_IN_COMMUNICATION

This commit is contained in:
Juha Heinanen
2020-11-18 17:52:17 +02:00
parent 30b0191334
commit 4c5aa50faf

View File

@ -254,9 +254,6 @@ class MainActivity : AppCompatActivity() {
String.format(getString(R.string.invalid_sip_uri), uri))
} else {
callUri.isFocusable = false
// Set audio mode to MODE_IN_COMMUNICATION and wait 2.5 sec before
// placing to call in order to avoid missing audio from callee due to
// a bug in many Android devices.
val am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
if (am.mode != AudioManager.MODE_IN_COMMUNICATION)
am.mode = AudioManager.MODE_IN_COMMUNICATION
@ -264,16 +261,14 @@ class MainActivity : AppCompatActivity() {
callButton.isEnabled = false
hangupButton.visibility = View.VISIBLE
hangupButton.isEnabled = false
Handler().postDelayed({
hangupButton.isEnabled = true
if (!call(ua, uri, "outgoing")) {
am.mode = AudioManager.MODE_NORMAL
callButton.visibility = View.VISIBLE
callButton.isEnabled = true
hangupButton.visibility = View.INVISIBLE
hangupButton.isEnabled = false
}
}, 2500)
hangupButton.isEnabled = true
if (!call(ua, uri, "outgoing")) {
am.mode = AudioManager.MODE_NORMAL
callButton.visibility = View.VISIBLE
callButton.isEnabled = true
hangupButton.visibility = View.INVISIBLE
hangupButton.isEnabled = false
}
}
} else {
val latest = CallHistory.aorLatestHistory(aor)