From eedc1b2860fb0cf477a0c87eda4a6cea6ce7f798 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 8 Feb 2024 20:32:35 +0700 Subject: [PATCH] android: circular icon in notification while in call (#3790) Co-authored-by: Evgeny Poberezkin --- .../src/main/java/chat/simplex/app/CallService.kt | 2 +- .../chat/simplex/common/platform/Images.android.kt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/CallService.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/CallService.kt index 0fbb44014..f0ddf8f7d 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/CallService.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/CallService.kt @@ -109,7 +109,7 @@ class CallService: Service() { val builder = NotificationCompat.Builder(this, CALL_NOTIFICATION_CHANNEL_ID) .setSmallIcon(R.drawable.ntf_icon) - .setLargeIcon(icon) + .setLargeIcon(icon.clipToCircle()) .setColor(0x88FFFF) .setContentTitle(title) .setContentText(text) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Images.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Images.android.kt index 832f0d9cb..fc323f6ff 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Images.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Images.android.kt @@ -61,6 +61,16 @@ actual fun cropToSquare(image: ImageBitmap): ImageBitmap { return Bitmap.createBitmap(image.asAndroidBitmap(), xOffset, yOffset, side, side).asImageBitmap() } +fun Bitmap.clipToCircle(): Bitmap { + val circle = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) + val path = android.graphics.Path() + path.addCircle(width / 2f, height / 2f, min(width, height) / 2f, android.graphics.Path.Direction.CCW) + val canvas = android.graphics.Canvas(circle) + canvas.clipPath(path) + canvas.drawBitmap(this, 0f, 0f, null) + return circle +} + actual fun compressImageStr(bitmap: ImageBitmap): String { val usePng = bitmap.hasAlpha() val ext = if (usePng) "png" else "jpg"