diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/services/DialerCallService.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/services/DialerCallService.kt index 9be869cd..1a28aca6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/services/DialerCallService.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/services/DialerCallService.kt @@ -10,7 +10,10 @@ import android.content.Intent import android.os.Build import android.os.Handler import android.telecom.Call +import android.widget.RemoteViews import androidx.core.app.NotificationCompat +import com.simplemobiletools.commons.extensions.getColoredBitmap +import com.simplemobiletools.commons.extensions.setText import com.simplemobiletools.commons.helpers.isOreoPlus import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.activities.DialerActivity @@ -67,19 +70,32 @@ class DialerCallService : Service() { } } + val notificationLayout = RemoteViews(packageName, R.layout.incoming_call_notification).apply { + setText(R.id.incoming_call_caller, callNumber) + setText(R.id.incoming_call_status, getCallStatusString()) + + val resources = applicationContext.resources + setImageViewBitmap(R.id.call_decline, resources.getColoredBitmap(R.drawable.ic_phone_down, resources.getColor(R.color.theme_dark_red_primary_color))) + setImageViewBitmap(R.id.call_answer, resources.getColoredBitmap(R.drawable.ic_phone, resources.getColor(R.color.md_green_700))) + + setOnClickPendingIntent(R.id.call_decline, getDeclineCallIntent()) + setOnClickPendingIntent(R.id.call_answer, getAnswerCallIntent()) + } + val notification = NotificationCompat.Builder(applicationContext, channelId) .setSmallIcon(R.drawable.ic_phone) - .setContentTitle(callNumber) - .setContentText(getCallStatusString()) .setContentIntent(getLaunchDialerIntent()) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setPriority(NotificationCompat.PRIORITY_MAX) + .setCustomContentView(notificationLayout) + .setCustomHeadsUpContentView(notificationLayout) + .setCustomBigContentView(notificationLayout) .setOngoing(true) + .setCategory(NotificationCompat.CATEGORY_CALL) .setChannelId(channelId) .setSound(null) + .setOnlyAlertOnce(true) .setUsesChronometer(callStatus == Call.STATE_ACTIVE) - .addAction(0, getString(R.string.decline_call), getDeclineCallIntent()) - .addAction(0, getString(R.string.answer_call), getAnswerCallIntent()) startForeground(CALL_NOTIFICATION_ID, notification.build()) diff --git a/app/src/main/res/drawable/ripple.xml b/app/src/main/res/drawable/ripple.xml new file mode 100644 index 00000000..4538babe --- /dev/null +++ b/app/src/main/res/drawable/ripple.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/incoming_call_notification.xml b/app/src/main/res/layout/incoming_call_notification.xml new file mode 100644 index 00000000..ece53f06 --- /dev/null +++ b/app/src/main/res/layout/incoming_call_notification.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d781ec5f..b8d2ac37 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,4 +1,4 @@ - + #55000000