- Fixed bug in call transfer.

- Cleaner implementation of notifications.
This commit is contained in:
Juha Heinanen
2019-03-22 20:13:19 +02:00
parent 757f640b2d
commit d2d9305411
4 changed files with 39 additions and 30 deletions
+2 -2
View File
@@ -7,8 +7,8 @@ android {
applicationId = 'com.tutpro.baresip' applicationId = 'com.tutpro.baresip'
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 27 targetSdkVersion 27
versionCode = 48 versionCode = 49
versionName = '6.0.2' versionName = '6.1.0'
externalNativeBuild { externalNativeBuild {
cmake { cmake {
cFlags '-DHAVE_INTTYPES_H' cFlags '-DHAVE_INTTYPES_H'
@@ -271,8 +271,8 @@ class BaresipService: Service() {
val intent = Intent(this, MainActivity::class.java) val intent = Intent(this, MainActivity::class.java)
.setAction(Intent.ACTION_MAIN) .setAction(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_LAUNCHER) .addCategory(Intent.CATEGORY_LAUNCHER)
val pi = PendingIntent.getActivity(this, val pi = PendingIntent.getActivity(this, CALL_REQ_CODE, intent,
System.currentTimeMillis().toInt(), intent, 0) 0)
val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID)
val caller = Utils.friendlyUri(ContactsActivity.contactName(peerUri), val caller = Utils.friendlyUri(ContactsActivity.contactName(peerUri),
Utils.aorDomain(aor)) Utils.aorDomain(aor))
@@ -294,14 +294,14 @@ class BaresipService: Service() {
answerIntent.putExtra("action", "answer") answerIntent.putExtra("action", "answer")
answerIntent.putExtra("callp", callp) answerIntent.putExtra("callp", callp)
val answerPendingIntent = PendingIntent.getActivity(this, val answerPendingIntent = PendingIntent.getActivity(this,
1, answerIntent, PendingIntent.FLAG_UPDATE_CURRENT) ANSWER_REQ_CODE, answerIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val rejectIntent = Intent(this, MainActivity::class.java) val rejectIntent = Intent(this, MainActivity::class.java)
rejectIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or rejectIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_SINGLE_TOP) Intent.FLAG_ACTIVITY_SINGLE_TOP)
rejectIntent.putExtra("action", "reject") rejectIntent.putExtra("action", "reject")
rejectIntent.putExtra("callp", callp) rejectIntent.putExtra("callp", callp)
val rejectPendingIntent = PendingIntent.getActivity(this, val rejectPendingIntent = PendingIntent.getActivity(this,
2, rejectIntent, PendingIntent.FLAG_UPDATE_CURRENT) REJECT_REQ_CODE, rejectIntent, PendingIntent.FLAG_UPDATE_CURRENT)
nb.addAction(R.drawable.ic_stat, "Answer", answerPendingIntent) nb.addAction(R.drawable.ic_stat, "Answer", answerPendingIntent)
nb.addAction(R.drawable.ic_stat, "Reject", rejectPendingIntent) nb.addAction(R.drawable.ic_stat, "Reject", rejectPendingIntent)
nm.notify(CALL_NOTIFICATION_ID, nb.build()) nm.notify(CALL_NOTIFICATION_ID, nb.build())
@@ -335,8 +335,8 @@ class BaresipService: Service() {
val intent = Intent(this, MainActivity::class.java) val intent = Intent(this, MainActivity::class.java)
.setAction(Intent.ACTION_MAIN) .setAction(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_LAUNCHER) .addCategory(Intent.CATEGORY_LAUNCHER)
val pi = PendingIntent.getActivity(this, val pi = PendingIntent.getActivity(this, TRANSFER_REQ_CODE,
System.currentTimeMillis().toInt(), intent, 0) intent, 0)
val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID)
val target = Utils.friendlyUri(ContactsActivity.contactName(ev[1]), val target = Utils.friendlyUri(ContactsActivity.contactName(ev[1]),
Utils.aorDomain(aor)) Utils.aorDomain(aor))
@@ -361,16 +361,16 @@ class BaresipService: Service() {
acceptIntent.putExtra("callp", callp) acceptIntent.putExtra("callp", callp)
acceptIntent.putExtra("uri", ev[1]) acceptIntent.putExtra("uri", ev[1])
val acceptPendingIntent = PendingIntent.getActivity(this, val acceptPendingIntent = PendingIntent.getActivity(this,
3, acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT) ACCEPT_REQ_CODE, acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val rejectIntent = Intent(this, MainActivity::class.java) val denyIntent = Intent(this, MainActivity::class.java)
rejectIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or denyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_SINGLE_TOP) Intent.FLAG_ACTIVITY_SINGLE_TOP)
rejectIntent.putExtra("action", "deny") denyIntent.putExtra("action", "deny")
rejectIntent.putExtra("callp", callp) denyIntent.putExtra("callp", callp)
val rejectPendingIntent = PendingIntent.getActivity(this, val denyPendingIntent = PendingIntent.getActivity(this,
4, rejectIntent, PendingIntent.FLAG_UPDATE_CURRENT) DENY_REQ_CODE, denyIntent, PendingIntent.FLAG_UPDATE_CURRENT)
nb.addAction(R.drawable.ic_stat, "Accept", acceptPendingIntent) nb.addAction(R.drawable.ic_stat, "Accept", acceptPendingIntent)
nb.addAction(R.drawable.ic_stat, "Deny", rejectPendingIntent) nb.addAction(R.drawable.ic_stat, "Deny", denyPendingIntent)
nm.notify(CALL_NOTIFICATION_ID, nb.build()) nm.notify(CALL_NOTIFICATION_ID, nb.build())
return return
} }
@@ -392,13 +392,9 @@ class BaresipService: Service() {
} }
if (Call.calls().size == 0) { if (Call.calls().size == 0) {
am.mode = AudioManager.MODE_NORMAL am.mode = AudioManager.MODE_NORMAL
} else { if (am.isSpeakerphoneOn) am.isSpeakerphoneOn = false
val uaCalls = Call.uaCalls(ua, "") if (audioFocused) abandonAudioFocus()
if (uaCalls.size > 0)
Api.call_start_audio(uaCalls[uaCalls.size - 1].callp)
} }
if (am.isSpeakerphoneOn) am.isSpeakerphoneOn = false
if (audioFocused) abandonAudioFocus()
} }
"transfer failed" -> { "transfer failed" -> {
Log.d(LOG_TAG, "AoR $aor hanging up call $callp with ${ev[1]}") Log.d(LOG_TAG, "AoR $aor hanging up call $callp with ${ev[1]}")
@@ -437,8 +433,7 @@ class BaresipService: Service() {
.putExtra("action", "show") .putExtra("action", "show")
.putExtra("uap", uap) .putExtra("uap", uap)
.putExtra("peer", peer) .putExtra("peer", peer)
val pi = PendingIntent.getActivity(this, val pi = PendingIntent.getActivity(this, MESSAGE_REQ_CODE, intent, 0)
System.currentTimeMillis().toInt(), intent, 0)
val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID) val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID)
val sender = Utils.friendlyUri(ContactsActivity.contactName(peer), val sender = Utils.friendlyUri(ContactsActivity.contactName(peer),
Utils.aorDomain(ua.account.aor)) Utils.aorDomain(ua.account.aor))
@@ -461,7 +456,7 @@ class BaresipService: Service() {
replyIntent.putExtra("uap", uap) replyIntent.putExtra("uap", uap)
replyIntent.putExtra("peer", peer) replyIntent.putExtra("peer", peer)
val replyPendingIntent = PendingIntent.getActivity(this, val replyPendingIntent = PendingIntent.getActivity(this,
5, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT) REPLY_REQ_CODE, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val saveIntent = Intent(this, MainActivity::class.java) val saveIntent = Intent(this, MainActivity::class.java)
saveIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or saveIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_SINGLE_TOP) Intent.FLAG_ACTIVITY_SINGLE_TOP)
@@ -469,7 +464,7 @@ class BaresipService: Service() {
saveIntent.putExtra("uap", uap) saveIntent.putExtra("uap", uap)
saveIntent.putExtra("time", timeStamp) saveIntent.putExtra("time", timeStamp)
val savePendingIntent = PendingIntent.getActivity(this, val savePendingIntent = PendingIntent.getActivity(this,
6, saveIntent, PendingIntent.FLAG_UPDATE_CURRENT) SAVE_REQ_CODE, saveIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val deleteIntent = Intent(this, MainActivity::class.java) val deleteIntent = Intent(this, MainActivity::class.java)
deleteIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or deleteIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_SINGLE_TOP) Intent.FLAG_ACTIVITY_SINGLE_TOP)
@@ -477,7 +472,7 @@ class BaresipService: Service() {
deleteIntent.putExtra("uap", uap) deleteIntent.putExtra("uap", uap)
deleteIntent.putExtra("time", timeStamp) deleteIntent.putExtra("time", timeStamp)
val deletePendingIntent = PendingIntent.getActivity(this, val deletePendingIntent = PendingIntent.getActivity(this,
7, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT) DELETE_REQ_CODE, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
nb.addAction(R.drawable.ic_stat, "Reply", replyPendingIntent) nb.addAction(R.drawable.ic_stat, "Reply", replyPendingIntent)
nb.addAction(R.drawable.ic_stat, "Save", savePendingIntent) nb.addAction(R.drawable.ic_stat, "Save", savePendingIntent)
nb.addAction(R.drawable.ic_stat, "Delete", deletePendingIntent) nb.addAction(R.drawable.ic_stat, "Delete", deletePendingIntent)
@@ -531,7 +526,7 @@ class BaresipService: Service() {
val intent = Intent(this, MainActivity::class.java) val intent = Intent(this, MainActivity::class.java)
.setAction(Intent.ACTION_MAIN) .setAction(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_LAUNCHER) .addCategory(Intent.CATEGORY_LAUNCHER)
val pi = PendingIntent.getActivity(this, 0, intent, 0) val pi = PendingIntent.getActivity(this, STATUS_REQ_CODE, intent, 0)
snb.setVisibility(VISIBILITY_PUBLIC) snb.setVisibility(VISIBILITY_PUBLIC)
.setSmallIcon(R.drawable.ic_stat) .setSmallIcon(R.drawable.ic_stat)
.setContentIntent(pi) .setContentIntent(pi)
@@ -652,6 +647,18 @@ class BaresipService: Service() {
val CALL_NOTIFICATION_ID = 102 val CALL_NOTIFICATION_ID = 102
val MESSAGE_NOTIFICATION_ID = 103 val MESSAGE_NOTIFICATION_ID = 103
val STATUS_REQ_CODE = 1
val CALL_REQ_CODE = 2
val ANSWER_REQ_CODE = 3
val REJECT_REQ_CODE = 4
val TRANSFER_REQ_CODE = 5
val ACCEPT_REQ_CODE = 6
val DENY_REQ_CODE = 7
val MESSAGE_REQ_CODE = 8
val REPLY_REQ_CODE = 9
val SAVE_REQ_CODE = 10
val DELETE_REQ_CODE = 11
val DEFAULT_CHANNEL_ID = "com.tutpro.baresip.default" val DEFAULT_CHANNEL_ID = "com.tutpro.baresip.default"
val HIGH_CHANNEL_ID = "com.tutpro.baresip.high" val HIGH_CHANNEL_ID = "com.tutpro.baresip.high"
@@ -635,7 +635,7 @@ class MainActivity : AppCompatActivity() {
startService(baresipService) startService(baresipService)
} }
val param = ev[1].trim() val param = ev[1].trim()
if (param != "") { if ((param != "") && (Call.uaCalls(ua, "").size == 0)) {
if (param.get(0).isDigit()) if (param.get(0).isDigit())
Toast.makeText(applicationContext, "Call failed: $param", Toast.makeText(applicationContext, "Call failed: $param",
Toast.LENGTH_LONG).show() Toast.LENGTH_LONG).show()
@@ -1018,9 +1018,9 @@ class MainActivity : AppCompatActivity() {
Utils.dtmfWatcher(newCallp)) Utils.dtmfWatcher(newCallp))
Call.calls().add(newCall) Call.calls().add(newCall)
Api.call_stop_audio(call.callp) Api.call_stop_audio(call.callp)
Api.call_start_audio(newCallp)
val err = Api.call_connect(newCallp, uri) val err = Api.call_connect(newCallp, uri)
if (err == 0) { if (err == 0) {
Api.call_start_audio(newCallp)
if (ua != UserAgent.uas()[aorSpinner.selectedItemPosition]) if (ua != UserAgent.uas()[aorSpinner.selectedItemPosition])
spinToAor(ua.account.aor) spinToAor(ua.account.aor)
showCall(ua) showCall(ua)
@@ -0,0 +1,2 @@
- Go to chat window when message notification is clicked.
- Fixed bug in call transfer.