mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-25 16:27:38 +00:00
fix: incoming ringer fix on receiving call, call notification priorities and notification channel update
This commit is contained in:
@@ -44,14 +44,15 @@ public class NotificationChannels {
|
|||||||
private static final String TAG = NotificationChannels.class.getSimpleName();
|
private static final String TAG = NotificationChannels.class.getSimpleName();
|
||||||
|
|
||||||
private static final int VERSION_MESSAGES_CATEGORY = 2;
|
private static final int VERSION_MESSAGES_CATEGORY = 2;
|
||||||
|
private static final int VERSION_SESSION_CALLS = 3;
|
||||||
|
|
||||||
private static final int VERSION = 2;
|
private static final int VERSION = 3;
|
||||||
|
|
||||||
private static final String CATEGORY_MESSAGES = "messages";
|
private static final String CATEGORY_MESSAGES = "messages";
|
||||||
private static final String CONTACT_PREFIX = "contact_";
|
private static final String CONTACT_PREFIX = "contact_";
|
||||||
private static final String MESSAGES_PREFIX = "messages_";
|
private static final String MESSAGES_PREFIX = "messages_";
|
||||||
|
|
||||||
public static final String CALLS = "calls_v2";
|
public static final String CALLS = "calls_v3";
|
||||||
public static final String FAILURES = "failures";
|
public static final String FAILURES = "failures";
|
||||||
public static final String APP_UPDATES = "app_updates";
|
public static final String APP_UPDATES = "app_updates";
|
||||||
public static final String BACKUPS = "backups_v2";
|
public static final String BACKUPS = "backups_v2";
|
||||||
@@ -427,7 +428,7 @@ public class NotificationChannels {
|
|||||||
notificationManager.createNotificationChannelGroup(messagesGroup);
|
notificationManager.createNotificationChannelGroup(messagesGroup);
|
||||||
|
|
||||||
NotificationChannel messages = new NotificationChannel(getMessagesChannel(context), context.getString(R.string.NotificationChannel_messages), NotificationManager.IMPORTANCE_HIGH);
|
NotificationChannel messages = new NotificationChannel(getMessagesChannel(context), context.getString(R.string.NotificationChannel_messages), NotificationManager.IMPORTANCE_HIGH);
|
||||||
NotificationChannel calls = new NotificationChannel(CALLS, context.getString(R.string.NotificationChannel_calls), NotificationManager.IMPORTANCE_DEFAULT);
|
NotificationChannel calls = new NotificationChannel(CALLS, context.getString(R.string.NotificationChannel_calls), NotificationManager.IMPORTANCE_HIGH);
|
||||||
NotificationChannel failures = new NotificationChannel(FAILURES, context.getString(R.string.NotificationChannel_failures), NotificationManager.IMPORTANCE_HIGH);
|
NotificationChannel failures = new NotificationChannel(FAILURES, context.getString(R.string.NotificationChannel_failures), NotificationManager.IMPORTANCE_HIGH);
|
||||||
NotificationChannel backups = new NotificationChannel(BACKUPS, context.getString(R.string.NotificationChannel_backups), NotificationManager.IMPORTANCE_LOW);
|
NotificationChannel backups = new NotificationChannel(BACKUPS, context.getString(R.string.NotificationChannel_backups), NotificationManager.IMPORTANCE_LOW);
|
||||||
NotificationChannel lockedStatus = new NotificationChannel(LOCKED_STATUS, context.getString(R.string.NotificationChannel_locked_status), NotificationManager.IMPORTANCE_LOW);
|
NotificationChannel lockedStatus = new NotificationChannel(LOCKED_STATUS, context.getString(R.string.NotificationChannel_locked_status), NotificationManager.IMPORTANCE_LOW);
|
||||||
@@ -439,6 +440,7 @@ public class NotificationChannels {
|
|||||||
setLedPreference(messages, TextSecurePreferences.getNotificationLedColor(context));
|
setLedPreference(messages, TextSecurePreferences.getNotificationLedColor(context));
|
||||||
|
|
||||||
calls.setShowBadge(false);
|
calls.setShowBadge(false);
|
||||||
|
calls.setSound(null, null);
|
||||||
backups.setShowBadge(false);
|
backups.setShowBadge(false);
|
||||||
lockedStatus.setShowBadge(false);
|
lockedStatus.setShowBadge(false);
|
||||||
other.setShowBadge(false);
|
other.setShowBadge(false);
|
||||||
@@ -463,6 +465,8 @@ public class NotificationChannels {
|
|||||||
notificationManager.deleteNotificationChannel("locked_status");
|
notificationManager.deleteNotificationChannel("locked_status");
|
||||||
notificationManager.deleteNotificationChannel("backups");
|
notificationManager.deleteNotificationChannel("backups");
|
||||||
notificationManager.deleteNotificationChannel("other");
|
notificationManager.deleteNotificationChannel("other");
|
||||||
|
} if (oldVersion < VERSION_SESSION_CALLS) {
|
||||||
|
notificationManager.deleteNotificationChannel("calls_v2");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,7 +15,6 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
|||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import org.session.libsession.utilities.Address
|
import org.session.libsession.utilities.Address
|
||||||
import org.session.libsession.utilities.FutureTaskListener
|
import org.session.libsession.utilities.FutureTaskListener
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
|
||||||
import org.session.libsession.utilities.Util
|
import org.session.libsession.utilities.Util
|
||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
import org.session.libsignal.utilities.Log
|
import org.session.libsignal.utilities.Log
|
||||||
@@ -310,9 +309,8 @@ class WebRtcCallService: Service(), PeerConnection.Observer {
|
|||||||
callManager.onIncomingRing(offer, callId, recipient, timestamp)
|
callManager.onIncomingRing(offer, callId, recipient, timestamp)
|
||||||
callManager.postConnectionEvent(STATE_LOCAL_RINGING)
|
callManager.postConnectionEvent(STATE_LOCAL_RINGING)
|
||||||
callManager.postViewModelState(CallViewModel.State.CALL_RINGING)
|
callManager.postViewModelState(CallViewModel.State.CALL_RINGING)
|
||||||
if (TextSecurePreferences.isCallNotificationsEnabled(this)) {
|
callManager.initializeAudioForCall()
|
||||||
callManager.startIncomingRinger()
|
callManager.startIncomingRinger()
|
||||||
}
|
|
||||||
registerPowerButtonReceiver()
|
registerPowerButtonReceiver()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -28,12 +28,14 @@ class CallNotificationBuilder {
|
|||||||
val contentIntent = Intent(context, WebRtcCallActivity::class.java)
|
val contentIntent = Intent(context, WebRtcCallActivity::class.java)
|
||||||
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
|
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
|
||||||
|
|
||||||
val pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, 0)
|
val pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
|
||||||
|
|
||||||
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
|
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
|
||||||
.setSmallIcon(R.drawable.ic_baseline_call_24)
|
.setSound(null)
|
||||||
.setContentIntent(pendingIntent)
|
.setSmallIcon(R.drawable.ic_baseline_call_24)
|
||||||
.setOngoing(true)
|
.setContentIntent(pendingIntent)
|
||||||
|
.setOngoing(true)
|
||||||
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
|
|
||||||
recipient?.name?.let { name ->
|
recipient?.name?.let { name ->
|
||||||
builder.setContentTitle(name)
|
builder.setContentTitle(name)
|
||||||
@@ -42,7 +44,7 @@ class CallNotificationBuilder {
|
|||||||
when (type) {
|
when (type) {
|
||||||
TYPE_INCOMING_CONNECTING -> {
|
TYPE_INCOMING_CONNECTING -> {
|
||||||
builder.setContentText(context.getString(R.string.CallNotificationBuilder_connecting))
|
builder.setContentText(context.getString(R.string.CallNotificationBuilder_connecting))
|
||||||
builder.priority = NotificationCompat.PRIORITY_MIN
|
builder.priority = NotificationCompat.PRIORITY_LOW
|
||||||
}
|
}
|
||||||
TYPE_INCOMING_RINGING -> {
|
TYPE_INCOMING_RINGING -> {
|
||||||
builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
|
builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
|
||||||
@@ -89,7 +91,7 @@ class CallNotificationBuilder {
|
|||||||
val intent = Intent(context, WebRtcCallService::class.java)
|
val intent = Intent(context, WebRtcCallService::class.java)
|
||||||
.setAction(action)
|
.setAction(action)
|
||||||
|
|
||||||
val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
|
val pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE)
|
||||||
|
|
||||||
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
|
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
|
||||||
}
|
}
|
||||||
@@ -100,7 +102,7 @@ class CallNotificationBuilder {
|
|||||||
val intent = Intent(context, WebRtcCallActivity::class.java)
|
val intent = Intent(context, WebRtcCallActivity::class.java)
|
||||||
.setAction(action)
|
.setAction(action)
|
||||||
|
|
||||||
val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
|
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE)
|
||||||
|
|
||||||
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
|
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
|
||||||
}
|
}
|
||||||
|
@@ -4,18 +4,13 @@ import android.content.BroadcastReceiver
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.media.AudioFocusRequest
|
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.media.SoundPool
|
import android.media.SoundPool
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.HandlerThread
|
import android.os.HandlerThread
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.session.libsession.utilities.ServiceUtil
|
|
||||||
import org.session.libsession.utilities.concurrent.SignalExecutors
|
|
||||||
import org.session.libsignal.utilities.Log
|
import org.session.libsignal.utilities.Log
|
||||||
import org.thoughtcrime.securesms.webrtc.AudioManagerCommand
|
import org.thoughtcrime.securesms.webrtc.AudioManagerCommand
|
||||||
import org.thoughtcrime.securesms.webrtc.audio.SignalBluetoothManager.State
|
|
||||||
|
|
||||||
private val TAG = Log.tag(SignalAudioManager::class.java)
|
private val TAG = Log.tag(SignalAudioManager::class.java)
|
||||||
|
|
||||||
@@ -347,7 +342,6 @@ class SignalAudioManager(private val context: Context,
|
|||||||
private fun startIncomingRinger(vibrate: Boolean) {
|
private fun startIncomingRinger(vibrate: Boolean) {
|
||||||
Log.i(TAG, "startIncomingRinger(): vibrate: $vibrate")
|
Log.i(TAG, "startIncomingRinger(): vibrate: $vibrate")
|
||||||
androidAudioManager.mode = AudioManager.MODE_RINGTONE
|
androidAudioManager.mode = AudioManager.MODE_RINGTONE
|
||||||
setMicrophoneMute(false)
|
|
||||||
setDefaultAudioDevice(AudioDevice.SPEAKER_PHONE, false)
|
setDefaultAudioDevice(AudioDevice.SPEAKER_PHONE, false)
|
||||||
|
|
||||||
incomingRinger.start(vibrate)
|
incomingRinger.start(vibrate)
|
||||||
|
Reference in New Issue
Block a user