diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index cf4f6b53..22abf564 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -92,6 +92,7 @@ class BaresipService: Service() { intent.setPackage("com.tutpro.baresip") filesPath = filesDir.absolutePath + pName = packageName am = getSystemService(Context.AUDIO_SERVICE) as AudioManager @@ -576,7 +577,7 @@ class BaresipService: Service() { if (ev[0] == "sndfile dump") { Log.d(TAG, "Got sndfile dump ${ev[1]}") - if (Call.calls().size > 0) + if (Call.inCall()) Call.calls()[0].dumpfile = ev[1] return } @@ -871,7 +872,7 @@ class BaresipService: Service() { call.onHoldCall = null } call.remove() - if (Call.calls().size == 0) { + if (!Call.inCall()) { resetCallVolume() abandonAudioFocus(am) Utils.clearCommunicationDevice(am) @@ -1074,7 +1075,7 @@ class BaresipService: Service() { callActionUri = "" if (VERSION.SDK_INT >= 23) Log.d(TAG, "Battery optimizations are ignored: " + - "${pm.isIgnoringBatteryOptimizations(applicationContext.packageName)}") + "${pm.isIgnoringBatteryOptimizations(packageName)}") Log.d(TAG, "Partial wake lock/wifi lock is held: " + "${partialWakeLock.isHeld}/${wifiLock.isHeld}") updateStatusNotification() @@ -1501,6 +1502,7 @@ class BaresipService: Service() { var callVolume = 0 var dynDns = false var filesPath = "" + var pName = "" var logLevel = 2 var sipTrace = false var callActionUri = "" diff --git a/app/src/main/kotlin/com/tutpro/baresip/Call.kt b/app/src/main/kotlin/com/tutpro/baresip/Call.kt index 532a7cc5..a8b13320 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Call.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Call.kt @@ -113,5 +113,9 @@ class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: Str return null } + fun inCall(): Boolean { + return BaresipService.calls.isNotEmpty() + } + } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 112bb942..8006a10d 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -185,7 +185,7 @@ class MainActivity : AppCompatActivity() { override fun onReceive(contxt: Context, intent: Intent) { if (kgm.isKeyguardLocked) { Log.d(TAG, "Screen on when locked") - Utils.setShowWhenLocked(this@MainActivity, Call.calls().size > 0) + Utils.setShowWhenLocked(this@MainActivity, Call.inCall()) } } } @@ -770,7 +770,7 @@ class MainActivity : AppCompatActivity() { restoreActivities() if (BaresipService.uas.size > 0) { if (aorSpinner.selectedItemPosition == -1) { - if (Call.calls().size > 0) + if (Call.inCall()) spinToAor(Call.calls()[0].ua.account.aor) else { aorSpinner.setSelection(0) @@ -839,7 +839,7 @@ class MainActivity : AppCompatActivity() { } private fun callAction(intent: Intent) { - if (Call.calls().isNotEmpty() || BaresipService.uas.size == 0) + if (Call.inCall() || BaresipService.uas.size == 0) return val uri: Uri? = intent.data if (uri != null) { @@ -895,7 +895,7 @@ class MainActivity : AppCompatActivity() { return } "call" -> { - if (Call.calls().isNotEmpty()) { + if (Call.inCall()) { Toast.makeText(applicationContext, getString(R.string.call_already_active), Toast.LENGTH_SHORT).show() return @@ -1293,7 +1293,7 @@ class MainActivity : AppCompatActivity() { when (item.itemId) { R.id.recIcon -> { - if (Call.call("connected") == null) { + if (!Call.inCall()) { BaresipService.isRecOn = !BaresipService.isRecOn if (BaresipService.isRecOn) { item.setIcon(R.drawable.rec_on) @@ -1302,6 +1302,12 @@ class MainActivity : AppCompatActivity() { item.setIcon(R.drawable.rec_off) Api.module_unload("sndfile") } + } else { + Toast.makeText( + applicationContext, + R.string.rec_in_call, + Toast.LENGTH_SHORT + ).show() } } @@ -1664,7 +1670,12 @@ class MainActivity : AppCompatActivity() { val files = arrayListOf("accounts", "history", "config", "contacts", "messages", "uuid", "gzrtp.zid", "cert.pem", "ca_cert", "ca_certs.crt") File(BaresipService.filesPath).walk().forEach { - if (it.name.endsWith(".png")) files.add(it.name) + if (it.name.endsWith(".png")) + files.add(it.name) + } + File("${BaresipService.filesPath}/recordings").walk().forEach { + if (it.name.startsWith("dump")) + files.add("recordings/${it.name}") } val zipFile = getString(R.string.app_name) + ".zip" val zipFilePath = BaresipService.filesPath + "/$zipFile" @@ -1805,7 +1816,7 @@ class MainActivity : AppCompatActivity() { callUri.setAdapter(null) val ua = BaresipService.uas[aorSpinner.selectedItemPosition] val aor = ua.account.aor - if (Call.calls().isEmpty()) { + if (!Call.inCall()) { var uriText = callUri.text.toString().trim() if (uriText.isNotEmpty()) { if (lookForContact) { @@ -2075,7 +2086,7 @@ class MainActivity : AppCompatActivity() { BaresipService.activities.removeAt(0) when (activity[0]) { "main" -> { - if ((Call.calls().size == 0) && (BaresipService.activities.size > 1)) + if (!Call.inCall() && (BaresipService.activities.size > 1)) restoreActivities() } "config" -> { diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt index 5dc025b3..b7ce545c 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt @@ -789,11 +789,11 @@ object Utils { try { ZipFile(zipFilePath).use { zip -> zip.entries().asSequence().forEach { entry -> - if (!entry.name.contains("/com.tutpro.baresip/")) { - Log.e(TAG, "Backup file is not from baresip application") + if (!entry.name.contains("/${BaresipService.pName}/")) { + Log.e(TAG, "Backup file is not from this application") return false } - zipFiles.add(entry.name.substringAfterLast("/")) + zipFiles.add(entry.name.substringAfter("/files/")) zip.getInputStream(entry).use { input -> File(entry.name).outputStream().use { output -> input.copyTo(output) diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 8e5b2789..ce26e444 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -475,6 +475,8 @@ Puhelu pitoon/pidosta Puhelu on pidossa Mikrofoni päälle/pois + Tallennus voidaan asettaa päälle tai pois vain silloin, kun puhelu + ei ole aktiivinen Puhelun siirto Sokeasti Osallistu diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32ed7baf..3eb989dd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -448,6 +448,7 @@ Call Hold/Unhold Call is on hold Microphone On/Off + Recording can be turned on or off only when not in call Call Transfer Blind Attended