allow dnd overwrite for incoming calls

This commit is contained in:
Daniel Gultsch 2020-04-21 18:13:09 +02:00
parent 442b952700
commit 3c0b3f4b94
1 changed files with 14 additions and 5 deletions

View File

@ -72,6 +72,9 @@ public class NotificationService {
private static final int LED_COLOR = 0xff00ff00; private static final int LED_COLOR = 0xff00ff00;
private static final int CALL_DAT = 120;
private static final long[] CALL_PATTERN = {0, 3 * CALL_DAT, CALL_DAT, CALL_DAT, 3 * CALL_DAT, CALL_DAT, CALL_DAT};
private static final String CONVERSATIONS_GROUP = "eu.siacs.conversations"; private static final String CONVERSATIONS_GROUP = "eu.siacs.conversations";
private static final int NOTIFICATION_ID_MULTIPLIER = 1024 * 1024; private static final int NOTIFICATION_ID_MULTIPLIER = 1024 * 1024;
static final int FOREGROUND_NOTIFICATION_ID = NOTIFICATION_ID_MULTIPLIER * 4; static final int FOREGROUND_NOTIFICATION_ID = NOTIFICATION_ID_MULTIPLIER * 4;
@ -167,6 +170,9 @@ public class NotificationService {
incomingCallsChannel.setLightColor(LED_COLOR); incomingCallsChannel.setLightColor(LED_COLOR);
incomingCallsChannel.enableLights(true); incomingCallsChannel.enableLights(true);
incomingCallsChannel.setGroup("calls"); incomingCallsChannel.setGroup("calls");
incomingCallsChannel.setBypassDnd(true);
incomingCallsChannel.enableVibration(true);
incomingCallsChannel.setVibrationPattern(CALL_PATTERN);
notificationManager.createNotificationChannel(incomingCallsChannel); notificationManager.createNotificationChannel(incomingCallsChannel);
final NotificationChannel ongoingCallsChannel = new NotificationChannel("ongoing_calls", final NotificationChannel ongoingCallsChannel = new NotificationChannel("ongoing_calls",
@ -351,10 +357,15 @@ public class NotificationService {
builder.setSmallIcon(R.drawable.ic_call_white_24dp); builder.setSmallIcon(R.drawable.ic_call_white_24dp);
builder.setContentTitle(mXmppConnectionService.getString(R.string.rtp_state_incoming_call)); builder.setContentTitle(mXmppConnectionService.getString(R.string.rtp_state_incoming_call));
} }
final Contact contact = id.getContact();
builder.setLargeIcon(mXmppConnectionService.getAvatarService().get( builder.setLargeIcon(mXmppConnectionService.getAvatarService().get(
id.getContact(), contact,
AvatarService.getSystemUiAvatarSize(mXmppConnectionService)) AvatarService.getSystemUiAvatarSize(mXmppConnectionService))
); );
final Uri systemAccount = contact.getSystemAccount();
if (systemAccount != null) {
builder.addPerson(systemAccount.toString());
}
builder.setContentText(id.account.getRoster().getContact(id.with).getDisplayName()); builder.setContentText(id.account.getRoster().getContact(id.with).getDisplayName());
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
builder.setPriority(NotificationCompat.PRIORITY_HIGH); builder.setPriority(NotificationCompat.PRIORITY_HIGH);
@ -579,10 +590,8 @@ public class NotificationService {
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService); final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mXmppConnectionService);
final Resources resources = mXmppConnectionService.getResources(); final Resources resources = mXmppConnectionService.getResources();
final String ringtone = preferences.getString("call_ringtone", resources.getString(R.string.incoming_call_ringtone)); final String ringtone = preferences.getString("call_ringtone", resources.getString(R.string.incoming_call_ringtone));
final int dat = 70; mBuilder.setVibrate(CALL_PATTERN);
final long[] pattern = {0, 3 * dat, dat, dat, 3 * dat, dat, dat}; final Uri uri = Uri.parse(ringtone);
mBuilder.setVibrate(pattern);
Uri uri = Uri.parse(ringtone);
try { try {
mBuilder.setSound(fixRingtoneUri(uri)); mBuilder.setSound(fixRingtoneUri(uri));
} catch (SecurityException e) { } catch (SecurityException e) {