From 8fe08545e1325782a416466466cead3bab1fe896 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Sat, 1 Apr 2023 07:52:32 +0300 Subject: [PATCH] Improved implementation of status notification --- app/build.gradle | 4 +- .../com/tutpro/baresip/BaresipService.kt | 28 ++++------- .../main/res/layout/status_notification.xml | 21 -------- .../res/layout/status_notification_33.xml | 49 ------------------- 4 files changed, 12 insertions(+), 90 deletions(-) delete mode 100644 app/src/main/res/layout/status_notification_33.xml diff --git a/app/build.gradle b/app/build.gradle index 9de7d989..b470ec22 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,9 +20,9 @@ android { } ndk { // noinspection ChromeOsAbiSupport - // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64' // noinspection ChromeOsAbiSupport - abiFilters 'armeabi-v7a', 'arm64-v8a' + // abiFilters 'armeabi-v7a', 'arm64-v8a' } vectorDrawables.useSupportLibrary = true } diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index 5e33a629..f8b05aa2 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -1135,28 +1135,20 @@ class BaresipService: Service() { PendingIntent.FLAG_IMMUTABLE) else PendingIntent.getActivity(applicationContext, STATUS_REQ_CODE, intent, 0) + val notificationLayout = RemoteViews(packageName, R.layout.status_notification) snb.setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat) .setContentIntent(pi) .setOngoing(true) - .setContent(RemoteViews(packageName, - if (VERSION.SDK_INT >= 33) - R.layout.status_notification_33 - else - R.layout.status_notification) - ) + .setStyle(NotificationCompat.DecoratedCustomViewStyle()) + .setCustomContentView(notificationLayout) if (VERSION.SDK_INT >= 31) snb.foregroundServiceBehavior = Notification.FOREGROUND_SERVICE_DEFAULT startForeground(STATUS_NOTIFICATION_ID, snb.build()) } private fun updateStatusNotification() { - val contentView = RemoteViews(packageName, - if (VERSION.SDK_INT >= 33) - R.layout.status_notification_33 - else - R.layout.status_notification - ) + val notificationLayout = RemoteViews(packageName, R.layout.status_notification) for (i: Int in 0..3) { val resId = when (i) { 0-> R.id.status0 @@ -1165,17 +1157,17 @@ class BaresipService: Service() { else -> R.id.status3 } if (i < uas.size) { - contentView.setImageViewResource(resId, uas[i].status) - contentView.setViewVisibility(resId, View.VISIBLE) + notificationLayout.setImageViewResource(resId, uas[i].status) + notificationLayout.setViewVisibility(resId, View.VISIBLE) } else { - contentView.setViewVisibility(resId, View.INVISIBLE) + notificationLayout.setViewVisibility(resId, View.INVISIBLE) } } if (uas.size > 4) - contentView.setViewVisibility(R.id.etc, View.VISIBLE) + notificationLayout.setViewVisibility(R.id.etc, View.VISIBLE) else - contentView.setViewVisibility(R.id.etc, View.INVISIBLE) - snb.setContent(contentView) + notificationLayout.setViewVisibility(R.id.etc, View.INVISIBLE) + snb.setCustomContentView(notificationLayout) // Don't know why, but without the delay the notification is not always updated Timer().schedule(250) { nm.notify(STATUS_NOTIFICATION_ID, snb.build()) diff --git a/app/src/main/res/layout/status_notification.xml b/app/src/main/res/layout/status_notification.xml index 7d5d3381..cac6fe38 100644 --- a/app/src/main/res/layout/status_notification.xml +++ b/app/src/main/res/layout/status_notification.xml @@ -5,30 +5,10 @@ android:layout_height="wrap_content" android:orientation="horizontal" > - - - - - diff --git a/app/src/main/res/layout/status_notification_33.xml b/app/src/main/res/layout/status_notification_33.xml deleted file mode 100644 index cac6fe38..00000000 --- a/app/src/main/res/layout/status_notification_33.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - -