Added Telephony Provider account configuration item

Added support for Contact tel URIs
Show account's STUN configuration items only if needed
Avoid some lint warnings in baresip.c
This commit is contained in:
Juha Heinanen
2022-02-02 11:36:08 +02:00
parent c285719da1
commit d3a2282f03
12 changed files with 291 additions and 156 deletions
@@ -2,10 +2,13 @@ package com.tutpro.baresip
import android.app.Activity
import android.content.Intent
import android.opengl.Visibility
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import com.tutpro.baresip.databinding.ActivityAccountBinding
@@ -33,6 +36,7 @@ class AccountActivity : AppCompatActivity() {
private lateinit var outbound1: EditText
private lateinit var outbound2: EditText
private lateinit var mediaNat: String
private lateinit var stun: LinearLayout
private lateinit var stunServer: EditText
private lateinit var stunUser: EditText
private lateinit var stunPass: EditText
@@ -45,6 +49,7 @@ class AccountActivity : AppCompatActivity() {
private var answerMode = Api.ANSWERMODE_MANUAL
private lateinit var answerModeSpinner: Spinner
private lateinit var vmUri: EditText
private lateinit var telProvider: EditText
private lateinit var defaultCheck: CheckBox
private val mediaEncKeys = arrayListOf("zrtp", "dtls_srtp", "srtp-mandf", "srtp-mand", "srtp", "")
@@ -73,6 +78,7 @@ class AccountActivity : AppCompatActivity() {
outbound2 = binding.Outbound2
regCheck = binding.Register
mediaNatSpinner = binding.mediaNatSpinner
stun = binding.Stun
stunServer = binding.StunServer
stunUser = binding.StunUser
stunPass = binding.StunPass
@@ -80,6 +86,7 @@ class AccountActivity : AppCompatActivity() {
dtmfModeSpinner = binding.dtmfModeSpinner
answerModeSpinner = binding.answerModeSpinner
vmUri = binding.voicemailUri
telProvider = binding.telephonyProvider
defaultCheck = binding.Default
aor = intent.getStringExtra("aor")!!
@@ -230,27 +237,21 @@ class AccountActivity : AppCompatActivity() {
stunServer.setText(resources.getString(R.string.stun_server_default))
else if ((mediaNat == "ice") && (stunServer.text.toString() == ""))
stunServer.setText(resources.getString(R.string.stun_server_default))
else if (mediaNat == "") {
if (mediaNat == "") {
stun.visibility = GONE
stunServer.setText("")
stunUser.setText("")
stunPass.setText("")
}
stunServer.isEnabled = mediaNat != ""
stunUser.isEnabled = mediaNat != ""
stunPass.isEnabled = mediaNat != ""
} else
stun.visibility = VISIBLE
}
override fun onNothingSelected(parent: AdapterView<*>) {
}
}
stunServer.setText(acc.stunServer)
stunServer.isEnabled = mediaNat != ""
stunUser.setText(acc.stunUser)
stunUser.isEnabled = mediaNat != ""
stunPass.setText(acc.stunPass)
stunPass.isEnabled = mediaNat != ""
mediaEnc = acc.mediaEnc
keyIx = mediaEncKeys.indexOf(mediaEnc)
@@ -313,6 +314,8 @@ class AccountActivity : AppCompatActivity() {
}
}
telProvider.setText(acc.telProvider)
vmUri.setText(acc.vmUri)
defaultCheck.isChecked = uaIndex == 0
@@ -563,9 +566,9 @@ class AccountActivity : AppCompatActivity() {
if (tVmUri != "") {
if (!tVmUri.startsWith("sip:")) tVmUri = "sip:$tVmUri"
if (!tVmUri.contains("@")) tVmUri = "$tVmUri@${acc.host()}"
if (!Utils.checkSipUri(tVmUri)) {
if (!Utils.checkUri(tVmUri)) {
Utils.alertView(this, getString(R.string.notice),
String.format(getString(R.string.invalid_voicemail_uri), tVmUri))
String.format(getString(R.string.invalid_sip_or_tel_uri), tVmUri))
return false
}
Api.account_set_mwi(acc.accp, "yes")
@@ -576,6 +579,17 @@ class AccountActivity : AppCompatActivity() {
save = true
}
val hostPart = telProvider.text.toString().trim()
if (hostPart != acc.telProvider) {
if (hostPart != "" && !Utils.checkHostPortParams(hostPart)) {
Utils.alertView(this, getString(R.string.notice),
String.format(getString(R.string.invalid_sip_uri_hostpart), hostPart))
return false
}
acc.telProvider = hostPart
save = true
}
if (defaultCheck.isChecked && (uaIndex > 0)) {
val uasTmp = BaresipService.uas[0]
val statusTmp = BaresipService.status[0]
@@ -708,6 +722,12 @@ class AccountActivity : AppCompatActivity() {
getString(R.string.voicemain_uri_help)
)
}
binding.TelephonyProviderTitle.setOnClickListener {
Utils.alertView(
this, getString(R.string.telephony_provider),
getString(R.string.telephony_provider_help)
)
}
binding.DefaultTitle.setOnClickListener {
Utils.alertView(
this, getString(R.string.default_account),