diff --git a/app/src/main/kotlin/com/tutpro/baresip/Account.kt b/app/src/main/kotlin/com/tutpro/baresip/Account.kt index 6034863e..de83f1fe 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Account.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Account.kt @@ -22,6 +22,7 @@ class Account(val accp: Long) { var audioCodec = ArrayList() var videoCodec = ArrayList() var regint = Api.account_regint(accp) + var configuredRegInt = REGISTRATION_INTERVAL var mediaEnc = Api.account_mediaenc(accp) var rtcpMux = Api.account_rtcp_mux(accp) var dtmfMode = Api.account_dtmfmode(accp) @@ -66,6 +67,8 @@ class Account(val accp: Long) { val extra = Api.account_extra(accp) if (Utils.paramExists(extra, "nickname")) nickName = Utils.paramValue(extra,"nickname") + if (Utils.paramExists(extra, "regint")) + configuredRegInt = Utils.paramValue(extra,"regint").toInt() callHistory = Utils.paramValue(extra,"call_history") == "" if (Utils.paramExists(extra, "country_code")) countryCode = Utils.paramValue(extra,"country_code") @@ -144,7 +147,10 @@ class Account(val accp: Long) { if (countryCode != "") extra += ";country_code=$countryCode" - if (extra != "") + if (configuredRegInt != REGISTRATION_INTERVAL) + extra += ";regint=$configuredRegInt" + + if (extra !="") res += ";extra=\"" + extra.substringAfter(";") + "\"" return res diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt index 5680afb5..8ae065a9 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt @@ -40,6 +40,7 @@ class AccountActivity : AppCompatActivity() { private lateinit var stunUser: EditText private lateinit var stunPass: EditText private lateinit var regCheck: CheckBox + private lateinit var regInt: EditText private lateinit var mediaNatSpinner: Spinner private lateinit var mediaEnc: String private lateinit var mediaEncSpinner: Spinner @@ -84,6 +85,7 @@ class AccountActivity : AppCompatActivity() { authPass = binding.AuthPass outbound = arrayOf(binding.Outbound1, binding.Outbound2) regCheck = binding.Register + regInt = binding.RegInt mediaNatSpinner = binding.mediaNatSpinner stun = binding.Stun stunServer = binding.StunServer @@ -234,6 +236,7 @@ class AccountActivity : AppCompatActivity() { } regCheck.isChecked = acc.regint > 0 + regInt.setText(acc.configuredRegInt.toString()) this.acc.audioCodec = acc.audioCodec @@ -485,26 +488,38 @@ class AccountActivity : AppCompatActivity() { save = true } - var newRegint = -1 - if (regCheck.isChecked) { - if (acc.regint != REGISTRATION_INTERVAL) { - newRegint = REGISTRATION_INTERVAL - ua.status = R.drawable.dot_yellow - } - } else { - if (acc.regint != 0) { - ua.status = R.drawable.dot_white - newRegint = 0 - } + val newConfiguredRegInt = regInt.text.toString().trim().toInt() + if (newConfiguredRegInt < 60 || newConfiguredRegInt > 3600) { + Utils.alertView( + this, getString(R.string.notice), + String.format(getString(R.string.invalid_reg_int), newConfiguredRegInt) + ) + return false } - if (newRegint != -1) { - if (Api.account_set_regint(acc.accp, newRegint) != 0) { + val reRegister = (regCheck.isChecked != acc.regint > 0) || + (regCheck.isChecked && newConfiguredRegInt != acc.configuredRegInt) + if (reRegister) { + if (Api.account_set_regint( + acc.accp, + if (regCheck.isChecked) newConfiguredRegInt else 0 + ) != 0 + ) { Log.e(TAG, "Setting of regint failed") } else { + ua.status = if (regCheck.isChecked) + R.drawable.dot_yellow + else + R.drawable.dot_white acc.regint = Api.account_regint(acc.accp) + acc.configuredRegInt = newConfiguredRegInt Log.d(TAG, "New regint is ${acc.regint}") save = true } + } else { + if (newConfiguredRegInt != acc.configuredRegInt) { + acc.configuredRegInt = newConfiguredRegInt + save = true + } } if (mediaNat != acc.mediaNat) { @@ -660,8 +675,8 @@ class AccountActivity : AppCompatActivity() { if (save) { AccountsActivity.saveAccounts() - if (newRegint != -1) { - if (newRegint == 0) + if (reRegister) { + if (acc.regint == 0) Api.ua_unregister(ua.uap) else Api.ua_register(ua.uap) diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index 17e21f71..a183ef34 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -161,6 +161,33 @@ + + + + + + + - - - - - + android:orientation="horizontal" > + + + + + Virheellinen välityspalvelimen URI \'%1$s\' Rekisteröi - Jos merkitty, rekisteröinti on - aktiivinen ja REGISTER-sanomat lähetetään noin 12 minuutin välein. - + Jos merkitty, rekisteröinti on aktiivinen ja REGISTER-sanomat + lähetetään Rekisteröintitaajuus-asetuksen mukaisesti. + Rekisteröintitaajuus + Kertoo kuinka usein baresip lähettää REGISTER-sanomia. Arvon on + oltava välillä 60-3600 (sekunttia). + Virheellinen Rekisteröintitaajuus \'%1$s\' Media NAT hallinta Valitsee media NAT hallintaprotokollan (vapaaehtoinen). Vaihtoehtoja ovat STUN (Session Traversal Utilities @@ -385,7 +388,9 @@ Lokiviestit Jos merkitty, baresip tuottaa debug- ja info-tason Logcat-viestejä. SIP-sanomien jäljitys - Jos merkitty ja jos Lokiviestit on merkitty, Logcat-viestit sisältävät myös lähetetyt ja vastaanotetut SIP-sanomat. On aina merkitsemättä sovelluksen käynnistyessä. + Jos merkitty ja jos Lokiviestit on merkitty, Logcat-viestit + sisältävät myös lähetetyt ja vastaanotetut SIP-sanomat. On aina merkitsemättä sovelluksen + käynnistyessä. Palauta oletusasetukset Jos merkitty, oletusasetukset palautetaan, kun baresip seuraavan kerran käynnistetään. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 03fe9a6c..c8078468 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -139,9 +139,12 @@ SIP URI of another Proxy Server Invalid Proxy Server URI \'%1$s\' Register - If checked, registration is enabled and REGISTER requests are sent at - 12 minute intervals. - + If checked, registration is enabled and REGISTER requests are sent + at the interval specified by Registration Interval. + Registration Interval + Tells how often (in seconds) baresip sends REGISTER requests. + Valid values are from 60 to 3600. + Invalid Registration Interval\'%1$s\' Media NAT Traversal Selects media NAT traversal protocol (if any). Possible choices are STUN (Session Traversal Utilities for NAT, RFC 5389) and ICE (Interactive Connectivity