Delay calling by 1 sec after call icon is touched because audio mode does

not change to communication immediately
This commit is contained in:
Juha Heinanen
2022-07-24 08:19:45 +03:00
parent 7338aa3a2b
commit 04fceb5adf
@@ -76,7 +76,6 @@ class MainActivity : AppCompatActivity() {
private var speakerIcon: MenuItem? = null private var speakerIcon: MenuItem? = null
private lateinit var swipeRefresh: SwipeRefreshLayout private lateinit var swipeRefresh: SwipeRefreshLayout
private lateinit var requestPermissionLauncher: ActivityResultLauncher<String> private lateinit var requestPermissionLauncher: ActivityResultLauncher<String>
private lateinit var accountsRequest: ActivityResultLauncher<Intent> private lateinit var accountsRequest: ActivityResultLauncher<Intent>
private lateinit var chatRequests: ActivityResultLauncher<Intent> private lateinit var chatRequests: ActivityResultLauncher<Intent>
private lateinit var configRequest: ActivityResultLauncher<Intent> private lateinit var configRequest: ActivityResultLauncher<Intent>
@@ -85,6 +84,8 @@ class MainActivity : AppCompatActivity() {
private lateinit var contactsRequest: ActivityResultLauncher<Intent> private lateinit var contactsRequest: ActivityResultLauncher<Intent>
private lateinit var callsRequest: ActivityResultLauncher<Intent> private lateinit var callsRequest: ActivityResultLauncher<Intent>
private var callHandler: Handler = Handler(Looper.getMainLooper())
private var callRunnable: Runnable? = null
private var downloadsInputUri: Uri? = null private var downloadsInputUri: Uri? = null
private var downloadsOutputUri: Uri? = null private var downloadsOutputUri: Uri? = null
@@ -328,6 +329,13 @@ class MainActivity : AppCompatActivity() {
hangupButton.setOnClickListener { hangupButton.setOnClickListener {
val ua = BaresipService.uas[aorSpinner.selectedItemPosition] val ua = BaresipService.uas[aorSpinner.selectedItemPosition]
if (callRunnable != null && callHandler.hasCallbacks(callRunnable!!)) {
callHandler.removeCallbacks(callRunnable!!)
callRunnable = null
am.mode = AudioManager.MODE_NORMAL
showCall(ua)
return@setOnClickListener
}
val aor = ua.account.aor val aor = ua.account.aor
val uaCalls = ua.calls() val uaCalls = ua.calls()
if (uaCalls.size > 0) { if (uaCalls.size > 0) {
@@ -1758,18 +1766,21 @@ class MainActivity : AppCompatActivity() {
) )
} else { } else {
callUri.isFocusable = false callUri.isFocusable = false
if (!call(ua, uri)) { am.mode = AudioManager.MODE_IN_COMMUNICATION
callButton.visibility = View.VISIBLE uaAdapter.notifyDataSetChanged()
callButton.isEnabled = true callButton.visibility = View.INVISIBLE
hangupButton.visibility = View.INVISIBLE callButton.isEnabled = false
hangupButton.isEnabled = false hangupButton.visibility = View.VISIBLE
} else { hangupButton.isEnabled = true
uaAdapter.notifyDataSetChanged() callRunnable = Runnable {
callButton.visibility = View.INVISIBLE if (!call(ua, uri)) {
callButton.isEnabled = false callButton.visibility = View.VISIBLE
hangupButton.visibility = View.VISIBLE callButton.isEnabled = true
hangupButton.isEnabled = true hangupButton.visibility = View.INVISIBLE
hangupButton.isEnabled = false
}
} }
callHandler.postDelayed(callRunnable!!, 1000)
} }
} else { } else {
val latest = NewCallHistory.aorLatestHistory(aor) val latest = NewCallHistory.aorLatestHistory(aor)