From 2966dc00ab50a15aa3f83fdf562b59d51d65bbc9 Mon Sep 17 00:00:00 2001 From: jubb Date: Mon, 6 Dec 2021 18:11:26 +1100 Subject: [PATCH] refactor: testing out the full screen intents --- app/src/main/AndroidManifest.xml | 2 + .../securesms/calls/WebRtcCallActivity.kt | 12 +++- .../notifications/NotificationChannels.java | 1 + .../securesms/util/CallNotificationBuilder.kt | 56 ++++++++----------- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d65bb0045f..271f98561c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -54,6 +54,7 @@ + @@ -298,6 +299,7 @@ = Build.VERSION_CODES.O_MR1) { + setShowWhenLocked(true) + setTurnScreenOn(true) + } + window.addFlags( + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON) volumeControlStream = AudioManager.STREAM_VOICE_CALL if (intent.action == ACTION_ANSWER) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java index 00278c4ee5..61c126339d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.notifications; import android.annotation.TargetApi; +import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationChannelGroup; import android.app.NotificationManager; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt b/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt index 971e60493e..c9fa02fe3e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/CallNotificationBuilder.kt @@ -34,13 +34,14 @@ class CallNotificationBuilder { val text = context.getString(R.string.CallNotificationBuilder_first_call_message) val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS) - .setSound(null) - .setSmallIcon(R.drawable.ic_baseline_call_24) - .setContentIntent(pendingIntent) - .setPriority(NotificationCompat.PRIORITY_HIGH) - .setContentTitle(context.getString(R.string.CallNotificationBuilder_first_call_title)) - .setContentText(text) - .setStyle(NotificationCompat.BigTextStyle().bigText(text)) + .setSound(null) + .setSmallIcon(R.drawable.ic_baseline_call_24) + .setContentIntent(pendingIntent) + .setPriority(NotificationCompat.PRIORITY_HIGH) + .setContentTitle(context.getString(R.string.CallNotificationBuilder_first_call_title)) + .setContentText(text) + .setStyle(NotificationCompat.BigTextStyle().bigText(text)) + .setAutoCancel(true) return builder.build() } @@ -53,11 +54,11 @@ class CallNotificationBuilder { val pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS) - .setSound(null) - .setSmallIcon(R.drawable.ic_baseline_call_24) - .setContentIntent(pendingIntent) - .setOngoing(true) - .setPriority(NotificationCompat.PRIORITY_LOW) + .setSound(null) + .setSmallIcon(R.drawable.ic_baseline_call_24) + .setContentIntent(pendingIntent) + .setOngoing(true) + .setPriority(NotificationCompat.PRIORITY_LOW) recipient?.name?.let { name -> builder.setContentTitle(name) @@ -68,23 +69,7 @@ class CallNotificationBuilder { builder.setContentText(context.getString(R.string.CallNotificationBuilder_connecting)) builder.priority = NotificationCompat.PRIORITY_LOW } - TYPE_INCOMING_PRE_OFFER -> { - builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call)) - .setCategory(NotificationCompat.CATEGORY_CALL) - builder.addAction(getServiceNotificationAction( - context, - WebRtcCallService.ACTION_DENY_CALL, - R.drawable.ic_close_grey600_32dp, - R.string.NotificationBarManager__deny_call - )) - builder.addAction(getActivityNotificationAction( - context, - WebRtcCallActivity.ACTION_PRE_OFFER, - R.drawable.ic_phone_grey600_32dp, - R.string.NotificationBarManager__answer_call - )) - builder.priority = NotificationCompat.PRIORITY_HIGH - } + TYPE_INCOMING_PRE_OFFER, TYPE_INCOMING_RINGING -> { builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call)) .setCategory(NotificationCompat.CATEGORY_CALL) @@ -94,9 +79,12 @@ class CallNotificationBuilder { R.drawable.ic_close_grey600_32dp, R.string.NotificationBarManager__deny_call )) + builder.setFullScreenIntent(getFullScreenPendingIntent( + context + ), true) builder.addAction(getActivityNotificationAction( context, - WebRtcCallActivity.ACTION_ANSWER, + if (type == TYPE_INCOMING_PRE_OFFER) WebRtcCallActivity.ACTION_PRE_OFFER else WebRtcCallActivity.ACTION_ANSWER, R.drawable.ic_phone_grey600_32dp, R.string.NotificationBarManager__answer_call )) @@ -125,7 +113,6 @@ class CallNotificationBuilder { return builder.build() } - @JvmStatic private fun getServiceNotificationAction(context: Context, action: String, iconResId: Int, titleResId: Int): NotificationCompat.Action { val intent = Intent(context, WebRtcCallService::class.java) .setAction(action) @@ -135,7 +122,12 @@ class CallNotificationBuilder { return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent) } - @JvmStatic + private fun getFullScreenPendingIntent(context: Context): PendingIntent { + val intent = Intent(context, WebRtcCallActivity::class.java) + + return PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE) + } + private fun getActivityNotificationAction(context: Context, action: String, @DrawableRes iconResId: Int, @StringRes titleResId: Int): NotificationCompat.Action { val intent = Intent(context, WebRtcCallActivity::class.java)