From 26a84c5546dc1cd94a2b27de97a3c35b23ef4490 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 25 May 2022 13:37:02 -0400 Subject: [PATCH] Show calling service notification immediately. --- .../service/webrtc/WebRtcCallService.java | 5 ++++- .../webrtc/CallNotificationBuilder.java | 16 +++++++++++++++- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java index 8962c3b60..6eb9deb99 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java @@ -116,6 +116,8 @@ public final class WebRtcCallService extends Service implements SignalAudioManag public void onCreate() { Log.v(TAG, "onCreate"); super.onCreate(); + startForegroundCompat(CallNotificationBuilder.getStartingStoppingNotificationId(), CallNotificationBuilder.getStartingNotification(this)); + this.callManager = ApplicationDependencies.getSignalCallManager(); this.hangUpRtcOnDeviceCallAnswered = new HangUpRtcOnPstnCallAnsweredListener(); this.lastNotificationId = INVALID_NOTIFICATION_ID; @@ -203,7 +205,7 @@ public final class WebRtcCallService extends Service implements SignalAudioManag startForegroundCompat(lastNotificationId, lastNotification); } else { Log.w(TAG, "Service running without having called start first, show temp notification and terminate service."); - startForegroundCompat(CallNotificationBuilder.getStoppingNotificationId(), CallNotificationBuilder.getStoppingNotification(this)); + startForegroundCompat(CallNotificationBuilder.getStartingStoppingNotificationId(), CallNotificationBuilder.getStoppingNotification(this)); stop(); } } @@ -280,6 +282,7 @@ public final class WebRtcCallService extends Service implements SignalAudioManag callManager.onBluetoothPermissionDenied(); } + @SuppressWarnings("deprecation") private class HangUpRtcOnPstnCallAnsweredListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, @NonNull String phoneNumber) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java b/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java index 5b07f92bd..01f5c5429 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java @@ -81,6 +81,20 @@ public class CallNotificationBuilder { } } + public static @NonNull Notification getStartingNotification(@NonNull Context context) { + Intent contentIntent = new Intent(context, MainActivity.class); + contentIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); + + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, 0); + + return new NotificationCompat.Builder(context, NotificationChannels.CALL_STATUS).setSmallIcon(R.drawable.ic_call_secure_white_24dp) + .setContentIntent(pendingIntent) + .setOngoing(true) + .setContentTitle(context.getString(R.string.NotificationBarManager__starting_signal_call_service)) + .setPriority(NotificationCompat.PRIORITY_MIN) + .build(); + } + public static @NonNull Notification getStoppingNotification(@NonNull Context context) { Intent contentIntent = new Intent(context, MainActivity.class); contentIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); @@ -95,7 +109,7 @@ public class CallNotificationBuilder { .build(); } - public static int getStoppingNotificationId() { + public static int getStartingStoppingNotificationId() { return WEBRTC_NOTIFICATION; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6c1c8670..bb5685741 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1042,6 +1042,8 @@ Establishing Signal call Incoming Signal call Incoming Signal group call + + Starting Signal call service Stopping Signal call service Decline call Answer call