allow only one simultaneous call due to issues with baresip call hold

This commit is contained in:
Juha Heinanen
2018-06-12 08:43:41 +03:00
parent 131a6cd339
commit 430e4bb84e
@@ -273,6 +273,7 @@ class MainActivity : AppCompatActivity() {
val aor = ua.account.aor val aor = ua.account.aor
when (callButton.tag) { when (callButton.tag) {
"Call" -> { "Call" -> {
if (ONE_CALL_ONLY && calls.isEmpty()) {
val calleeText = (findViewById(R.id.callee) as EditText).text.toString() val calleeText = (findViewById(R.id.callee) as EditText).text.toString()
if (calleeText.length > 0) { if (calleeText.length > 0) {
var uri = ContactsActivity.findContactURI(calleeText) var uri = ContactsActivity.findContactURI(calleeText)
@@ -291,6 +292,7 @@ class MainActivity : AppCompatActivity() {
callee.setText(latest.peerURI) callee.setText(latest.peerURI)
} }
} }
}
"Cancel" -> { "Cancel" -> {
val callp = Call.calls(calls, "out")[0].callp val callp = Call.calls(calls, "out")[0].callp
Log.i("Baresip", "Canceling AoR $aor call $callp to " + Log.i("Baresip", "Canceling AoR $aor call $callp to " +
@@ -782,13 +784,16 @@ class MainActivity : AppCompatActivity() {
} }
"call incoming" -> { "call incoming" -> {
val peer_uri = call_peeruri(callp) val peer_uri = call_peeruri(callp)
Log.d("Baresip", "Incoming call $uap/$callp/$peer_uri")
if (ONE_CALL_ONLY && (calls.size > 0)) {
ua_hangup(uap, callp, 486, "Busy Here")
} else {
val new_call = Call(callp, ua, peer_uri, "in", "Answer", null) val new_call = Call(callp, ua, peer_uri, "in", "Answer", null)
this@MainActivity.runOnUiThread { if (ONE_CALL_ONLY && (calls.size > 0)) {
Log.d("Baresip", "Auto-rejecting incoming call $uap/$callp/$peer_uri")
ua_hangup(uap, callp, 486, "Busy Here")
history.add(History(aor, peer_uri, "in", false))
new_call.hasHistory = true
} else {
Log.d("Baresip", "Incoming call $uap/$callp/$peer_uri")
calls.add(new_call) calls.add(new_call)
this@MainActivity.runOnUiThread {
if (ua != uas[aorSpinner.selectedItemPosition]) if (ua != uas[aorSpinner.selectedItemPosition])
aorSpinner.setSelection(account_index) aorSpinner.setSelection(account_index)
else else
@@ -955,7 +960,7 @@ class MainActivity : AppCompatActivity() {
"call closed" -> { "call closed" -> {
val call = Call.find(calls, callp) val call = Call.find(calls, callp)
if (call == null) { if (call == null) {
Log.e("Baresip", "Call $callp that is closed is not found") Log.d("Baresip", "Call $callp that is closed is not found")
return return
} }
if (call.dir == "in") { if (call.dir == "in") {
@@ -1111,7 +1116,7 @@ class MainActivity : AppCompatActivity() {
const val NOTIFICATION_ID = 10 const val NOTIFICATION_ID = 10
const val INCOMING_ID = 11 const val INCOMING_ID = 11
const val ONE_CALL_ONLY = false const val ONE_CALL_ONLY = true
external fun contacts_remove() external fun contacts_remove()
external fun contact_add(contact: String) external fun contact_add(contact: String)