Added missed call notification

This commit is contained in:
Juha Heinanen
2021-01-01 15:21:34 +02:00
parent 2591f4860d
commit 2dbc153fda
5 changed files with 51 additions and 2 deletions

View File

@ -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]}")

View File

@ -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" -> {

View File

@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
android:id="@+id/mainRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -209,6 +209,7 @@
<string name="answer">Vastaa</string>
<string name="reject">Hylkää</string>
<string name="incoming_call_from">Puhelu soittajalta</string>
<string name="missed_call_from">Vastaamaton puhelu soittajalta</string>
<string name="transfer_request_to">Puhelun siirtopyyntö kohteeseen</string>
<string name="message_from">Viesti lähettäjältä</string>
<!-- Boot Completed Receiver -->

View File

@ -187,6 +187,7 @@
<string name="answer">Answer</string>
<string name="reject">Reject</string>
<string name="incoming_call_from">Call from</string>
<string name="missed_call_from">Missed call from</string>
<string name="transfer_request_to">Call transfer request to</string>
<string name="message_from">Message from</string>
<!-- Boot Completed Receiver -->