led color follows current app primary colort

This commit is contained in:
kosyak 2023-12-27 01:08:35 +01:00
parent 543146e94a
commit bef39f7e0c

View file

@ -13,6 +13,7 @@ import android.content.SharedPreferences;
import android.content.pm.ShortcutManager; import android.content.pm.ShortcutManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.media.AudioAttributes; import android.media.AudioAttributes;
import android.media.Ringtone; import android.media.Ringtone;
@ -28,6 +29,7 @@ import android.text.style.StyleSpan;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import androidx.annotation.ColorInt;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationCompat.BigPictureStyle; import androidx.core.app.NotificationCompat.BigPictureStyle;
@ -93,8 +95,6 @@ public class NotificationService {
public static final Object CATCHUP_LOCK = new Object(); public static final Object CATCHUP_LOCK = new Object();
private static final int LED_COLOR = 0xff00ff00;
private static final long[] CALL_PATTERN = {0, 500, 300, 600}; private static final long[] CALL_PATTERN = {0, 500, 300, 600};
private static final String MESSAGES_GROUP = "eu.siacs.conversations.messages"; private static final String MESSAGES_GROUP = "eu.siacs.conversations.messages";
@ -216,7 +216,7 @@ public class NotificationService {
NotificationManager.IMPORTANCE_HIGH); NotificationManager.IMPORTANCE_HIGH);
incomingCallsChannel.setSound(null, null); incomingCallsChannel.setSound(null, null);
incomingCallsChannel.setShowBadge(false); incomingCallsChannel.setShowBadge(false);
incomingCallsChannel.setLightColor(LED_COLOR); incomingCallsChannel.setLightColor(getPrimaryColor());
incomingCallsChannel.enableLights(true); incomingCallsChannel.enableLights(true);
incomingCallsChannel.setGroup("calls"); incomingCallsChannel.setGroup("calls");
incomingCallsChannel.setBypassDnd(true); incomingCallsChannel.setBypassDnd(true);
@ -239,7 +239,7 @@ public class NotificationService {
NotificationManager.IMPORTANCE_HIGH); NotificationManager.IMPORTANCE_HIGH);
missedCallsChannel.setShowBadge(true); missedCallsChannel.setShowBadge(true);
missedCallsChannel.setSound(null, null); missedCallsChannel.setSound(null, null);
missedCallsChannel.setLightColor(LED_COLOR); missedCallsChannel.setLightColor(getPrimaryColor());
missedCallsChannel.enableLights(true); missedCallsChannel.enableLights(true);
missedCallsChannel.setGroup("calls"); missedCallsChannel.setGroup("calls");
notificationManager.createNotificationChannel(missedCallsChannel); notificationManager.createNotificationChannel(missedCallsChannel);
@ -256,7 +256,7 @@ public class NotificationService {
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT) .setUsage(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT)
.build()); .build());
messagesChannel.setLightColor(LED_COLOR); messagesChannel.setLightColor(getPrimaryColor());
final int dat = 70; final int dat = 70;
final long[] pattern = {0, 3 * dat, dat, dat}; final long[] pattern = {0, 3 * dat, dat, dat};
messagesChannel.setVibrationPattern(pattern); messagesChannel.setVibrationPattern(pattern);
@ -272,7 +272,7 @@ public class NotificationService {
silentMessagesChannel.setDescription( silentMessagesChannel.setDescription(
c.getString(R.string.silent_messages_channel_description)); c.getString(R.string.silent_messages_channel_description));
silentMessagesChannel.setShowBadge(true); silentMessagesChannel.setShowBadge(true);
silentMessagesChannel.setLightColor(LED_COLOR); silentMessagesChannel.setLightColor(getPrimaryColor());
silentMessagesChannel.enableLights(true); silentMessagesChannel.enableLights(true);
silentMessagesChannel.setGroup("chats"); silentMessagesChannel.setGroup("chats");
notificationManager.createNotificationChannel(silentMessagesChannel); notificationManager.createNotificationChannel(silentMessagesChannel);
@ -283,7 +283,7 @@ public class NotificationService {
c.getString(R.string.title_pref_quiet_hours), c.getString(R.string.title_pref_quiet_hours),
NotificationManager.IMPORTANCE_LOW); NotificationManager.IMPORTANCE_LOW);
quietHoursChannel.setShowBadge(true); quietHoursChannel.setShowBadge(true);
quietHoursChannel.setLightColor(LED_COLOR); quietHoursChannel.setLightColor(getPrimaryColor());
quietHoursChannel.enableLights(true); quietHoursChannel.enableLights(true);
quietHoursChannel.setGroup("chats"); quietHoursChannel.setGroup("chats");
quietHoursChannel.enableVibration(false); quietHoursChannel.enableVibration(false);
@ -831,8 +831,13 @@ public class NotificationService {
} }
private void setNotificationColor(final Builder mBuilder) { private void setNotificationColor(final Builder mBuilder) {
mBuilder.setColor(getPrimaryColor());
}
@ColorInt
private int getPrimaryColor() {
Integer primaryColorOverride = ThemeHelper.getOverriddenPrimaryColor(mXmppConnectionService); Integer primaryColorOverride = ThemeHelper.getOverriddenPrimaryColor(mXmppConnectionService);
mBuilder.setColor(primaryColorOverride == null ? ContextCompat.getColor(mXmppConnectionService, R.color.green600) : primaryColorOverride); return primaryColorOverride == null ? ContextCompat.getColor(mXmppConnectionService, R.color.green600) : primaryColorOverride;
} }
public void updateNotification() { public void updateNotification() {
@ -972,14 +977,14 @@ public class NotificationService {
setNotificationColor(mBuilder); setNotificationColor(mBuilder);
mBuilder.setDefaults(0); mBuilder.setDefaults(0);
if (led) { if (led) {
mBuilder.setLights(LED_COLOR, 2000, 3000); mBuilder.setLights(getPrimaryColor(), 2000, 3000);
} }
} }
private void modifyIncomingCall(final Builder mBuilder) { private void modifyIncomingCall(final Builder mBuilder) {
mBuilder.setPriority(NotificationCompat.PRIORITY_HIGH); mBuilder.setPriority(NotificationCompat.PRIORITY_HIGH);
setNotificationColor(mBuilder); setNotificationColor(mBuilder);
mBuilder.setLights(LED_COLOR, 2000, 3000); mBuilder.setLights(getPrimaryColor(), 2000, 3000);
} }
private Uri fixRingtoneUri(Uri uri) { private Uri fixRingtoneUri(Uri uri) {
@ -1104,7 +1109,7 @@ public class NotificationService {
final Resources resources = mXmppConnectionService.getResources(); final Resources resources = mXmppConnectionService.getResources();
final boolean led = preferences.getBoolean("led", resources.getBoolean(R.bool.led)); final boolean led = preferences.getBoolean("led", resources.getBoolean(R.bool.led));
if (led) { if (led) {
builder.setLights(LED_COLOR, 2000, 3000); builder.setLights(getPrimaryColor(), 2000, 3000);
} }
builder.setPriority(NotificationCompat.PRIORITY_HIGH); builder.setPriority(NotificationCompat.PRIORITY_HIGH);
builder.setSound(null); builder.setSound(null);