diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index 8decae9b..8037d168 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -281,6 +281,15 @@ class BaresipService: Service() { startActivity(newIntent) } + "Call Missed" -> { + val newIntent = Intent(this, MainActivity::class.java) + newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_NEW_TASK + newIntent.putExtra("action", action.toLowerCase(Locale.ROOT)) + newIntent.putExtra("uap", intent!!.getStringExtra("uap")) + startActivity(newIntent) + } + "Call Reject" -> { val callp = intent!!.getStringExtra("callp")!! val call = Call.ofCallp(callp) @@ -695,7 +704,31 @@ class BaresipService: Service() { CallHistory.save() if (call.dir == "in") ua.account.missedCalls = true } - if (!Utils.isVisible()) return + if (!Utils.isVisible() && !call.hasHistory && call.dir == "in") { + val caller = Utils.friendlyUri(ContactsActivity.contactName(call.peerURI), + Utils.aorDomain(aor)) + val intent = Intent(this, BaresipService::class.java) + intent.action = "Call Missed" + intent.putExtra("uap", uap) + val pi = PendingIntent.getService(this, CALL_REQ_CODE, intent, + PendingIntent.FLAG_UPDATE_CURRENT) + val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) + nb.setSmallIcon(R.drawable.ic_stat) + .setColor(ContextCompat.getColor(this, + R.color.colorBaresip)) + .setContentIntent(pi) + .setCategory(Notification.CATEGORY_CALL) + .setAutoCancel(true) + .setContentTitle(getString(R.string.missed_call_from)) + .setContentText(caller) + if (Build.VERSION.SDK_INT < 26) { + nb.setVibrate(LongArray(0)) + .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) + .priority = Notification.PRIORITY_HIGH + } + nm.notify(CALL_NOTIFICATION_ID, nb.build()) + return + } } "refer failed" -> { Log.d(LOG_TAG, "AoR $aor hanging up call $callp with ${ev[1]}") diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 9a515e00..c17db53e 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -518,6 +518,17 @@ class MainActivity : AppCompatActivity() { resumeAction = action resumeCall = call } + "call missed" -> { + val uap = intent.getStringExtra("uap")!! + val ua = UserAgent.ofUap(uap) + if (ua == null) { + Log.w("Baresip", "onNewIntent did not find ua $uap") + return + } + if (ua.account.aor != aorSpinner.tag) + spinToAor(ua.account.aor) + resumeAction = action + } "transfer show", "transfer accept" -> { val callp = intent.getStringExtra("callp")!! val call = Call.ofCallp(callp) @@ -558,6 +569,9 @@ class MainActivity : AppCompatActivity() { answerButton.performClick() showCall(resumeCall!!.ua) } + "call missed" -> { + callsButton.performClick() + } "call reject" -> rejectButton.performClick() "call" -> { diff --git a/app/src/main/res/layout/call_notification.xml b/app/src/main/res/layout/call_notification.xml index a198c6f4..f681d6e5 100644 --- a/app/src/main/res/layout/call_notification.xml +++ b/app/src/main/res/layout/call_notification.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:orientation="vertical" > - Vastaa Hylkää Puhelu soittajalta + Vastaamaton puhelu soittajalta Puhelun siirtopyyntö kohteeseen Viesti lähettäjältä diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 60a2c495..0f23a9f9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -187,6 +187,7 @@ Answer Reject Call from + Missed call from Call transfer request to Message from