1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-01 14:32:54 +01:00

Improve notification logging

- Reduce duplicated and redundant messages
- Log notification priority
- Add log entry for notification ignored by dnd
This commit is contained in:
José Rebelo 2023-06-03 20:28:27 +01:00
parent eb7366c7e3
commit 0c52f3d3da

View File

@ -56,6 +56,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@ -247,7 +248,7 @@ public class NotificationListener extends NotificationListenerService {
// determinate Source App Name ("Label")
PackageManager pm = getPackageManager();
try {
return (String)pm.getApplicationLabel(pm.getApplicationInfo(pkg, 0));
return (String) pm.getApplicationLabel(pm.getApplicationInfo(pkg, 0));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
@ -262,7 +263,6 @@ public class NotificationListener extends NotificationListenerService {
@Override
public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
logNotification(sbn, true);
LOG.debug("notificationAppListIsBlackList: " + GBApplication.getPrefs().getString("notification_list_is_blacklist","true"));
notificationStack.remove(sbn.getPackageName());
notificationStack.add(sbn.getPackageName());
@ -275,10 +275,7 @@ public class NotificationListener extends NotificationListenerService {
// If media notifications ignore app list, check them before
if (mediaIgnoresAppList && handleMediaSessionNotification(sbn)) return;
if (shouldIgnoreSource(sbn)) {
LOG.debug("Ignoring notification source");
return;
}
if (shouldIgnoreSource(sbn)) return;
// If media notifications do NOT ignore app list, check them after
if (!mediaIgnoresAppList && handleMediaSessionNotification(sbn)) return;
@ -293,8 +290,10 @@ public class NotificationListener extends NotificationListenerService {
}
if (prefs.getBoolean("notification_filter", false) && dndSuppressed == 1) {
LOG.debug("Ignoring notification because of do not disturb");
return;
}
if (NotificationCompat.CATEGORY_CALL.equals(sbn.getNotification().category)
&& prefs.getBoolean("notification_support_voip_calls", false)
&& sbn.isOngoing()) {
@ -304,7 +303,7 @@ public class NotificationListener extends NotificationListenerService {
if (shouldIgnoreNotification(sbn, false)) {
if (!"com.sec.android.app.clockpackage".equals(sbn.getPackageName())) { // workaround to allow phone alarm notification
LOG.info("Ignore notification: " + sbn.getPackageName()); // need to fix
LOG.info("Ignoring notification: {}", sbn.getPackageName()); // need to fix
return;
}
}
@ -316,8 +315,7 @@ public class NotificationListener extends NotificationListenerService {
if (notificationOldRepeatPreventionValue != null
&& notification.when <= notificationOldRepeatPreventionValue
&& !shouldIgnoreRepeatPrevention(sbn)
)
{
) {
LOG.info("NOT processing notification, already sent newer notifications from this source.");
return;
}
@ -328,8 +326,7 @@ public class NotificationListener extends NotificationListenerService {
if (notificationBurstPreventionValue != null) {
long diff = curTime - notificationBurstPreventionValue;
if (diff < TimeUnit.SECONDS.toNanos(prefs.getInt("notifications_timeout", 0))) {
LOG.info("Ignoring frequent notification, last one was "
+ TimeUnit.NANOSECONDS.toMillis(diff) + "ms ago");
LOG.info("Ignoring frequent notification, last one was {} ms ago", TimeUnit.NANOSECONDS.toMillis(diff));
return;
}
}
@ -365,7 +362,13 @@ public class NotificationListener extends NotificationListenerService {
// Get color
notificationSpec.pebbleColor = getPebbleColorForNotification(notificationSpec);
LOG.info("Processing notification " + notificationSpec.getId() + " age: " + (System.currentTimeMillis() - notification.when) + " from source " + source + " with flags: " + notification.flags);
LOG.info(
"Processing notification {}, age: {}, source: {}, flags: {}",
notificationSpec.getId(),
(System.currentTimeMillis() - notification.when) ,
source,
notification.flags
);
boolean preferBigText = prefs.getBoolean("notification_prefer_long_text", true);
@ -415,8 +418,8 @@ public class NotificationListener extends NotificationListenerService {
}
notificationSpec.attachedActions.add(wearableAction);
mActionLookup.add((notificationSpec.getId()<<4) + notificationSpec.attachedActions.size(), act);
LOG.info("found wearable action: " + notificationSpec.attachedActions.size() + " - "+ act.getTitle() + " " + sbn.getTag());
mActionLookup.add((notificationSpec.getId() << 4) + notificationSpec.attachedActions.size(), act);
LOG.info("Found wearable action: {} - {} {}", notificationSpec.attachedActions.size(), act.getTitle(), sbn.getTag());
}
}
@ -436,9 +439,9 @@ public class NotificationListener extends NotificationListenerService {
mPackageLookup.add(notificationSpec.getId(), sbn.getPackageName()); // for MUTE
notificationBurstPrevention.put(source, curTime);
if(0 != notification.when) {
if (0 != notification.when) {
notificationOldRepeatPrevention.put(source, notification.when);
}else {
} else {
LOG.info("This app might show old/duplicate notifications. notification.when is 0 for " + source);
}
notificationsActive.add(notificationSpec.getId());
@ -500,7 +503,7 @@ public class NotificationListener extends NotificationListenerService {
Notification noti = sbn.getNotification();
dumpExtras(noti.extras);
boolean callStarted = false;
if(noti.actions != null && noti.actions.length > 0) {
if (noti.actions != null && noti.actions.length > 0) {
for (Notification.Action action : noti.actions) {
LOG.info("Found call action: " + action.title);
}
@ -524,9 +527,9 @@ public class NotificationListener extends NotificationListenerService {
// figure out sender
String number;
if(noti.extras.containsKey(Notification.EXTRA_PEOPLE)) {
if (noti.extras.containsKey(Notification.EXTRA_PEOPLE)) {
number = noti.extras.getString(Notification.EXTRA_PEOPLE);
} else if(noti.extras.containsKey(Notification.EXTRA_TITLE)) {
} else if (noti.extras.containsKey(Notification.EXTRA_TITLE)) {
number = noti.extras.getString(Notification.EXTRA_TITLE);
} else {
String appName = getAppName(app);
@ -740,7 +743,7 @@ public class NotificationListener extends NotificationListenerService {
// If media notifications do NOT ignore app list, check them after
if (!mediaIgnoresAppList && handleMediaSessionNotification(sbn)) return;
if(Notification.CATEGORY_CALL.equals(sbn.getNotification().category)
if (Notification.CATEGORY_CALL.equals(sbn.getNotification().category)
&& activeCallPostTime == sbn.getPostTime()) {
activeCallPostTime = 0;
CallSpec callSpec = new CallSpec();
@ -755,7 +758,7 @@ public class NotificationListener extends NotificationListenerService {
ArrayList<Integer> activeNotificationsIds = new ArrayList<Integer>();
for (StatusBarNotification notification : getActiveNotifications()) {
Object o = mNotificationHandleLookup.lookupByValue(notification.getPostTime());
if(o != null) {
if (o != null) {
int id = (int) o;
activeNotificationsIds.add(id);
}
@ -774,7 +777,7 @@ public class NotificationListener extends NotificationListenerService {
// Send notification remove request to device
List<GBDevice> devices = GBApplication.app().getDeviceManager().getDevices();
for(GBDevice device : devices){
for (GBDevice device : devices) {
Prefs devicePrefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(device.getAddress()));
if (devicePrefs.getBoolean("autoremove_notifications", true)) {
for (int id : notificationsToRemove) {
@ -786,16 +789,14 @@ public class NotificationListener extends NotificationListenerService {
}
private void logNotification(StatusBarNotification sbn, boolean posted) {
String infoMsg = String.format(
"Notification %d %s: %s",
LOG.debug(
"Notification {} {}: packageName={}, priority={}, category={}",
sbn.getId(),
posted ? "posted" : "removed",
sbn.getPackageName()
sbn.getPackageName(),
sbn.getNotification().priority,
sbn.getNotification().category
);
infoMsg += ": " + sbn.getNotification().category;
LOG.debug(infoMsg);
}
private void dumpExtras(Bundle bundle) {
@ -808,7 +809,6 @@ public class NotificationListener extends NotificationListenerService {
}
}
private boolean isServiceNotRunningAndShouldIgnoreNotifications() {
/*
* return early if DeviceCommunicationService is not running,
@ -849,6 +849,7 @@ public class NotificationListener extends NotificationListenerService {
source.equals("com.android.messaging") ||
source.equals("org.smssecure.smssecure")) {
if (!"never".equals(prefs.getString("notification_mode_sms", "when_screen_off"))) {
LOG.info("Ignoring notification, it's an sms notification");
return true;
}
}
@ -911,7 +912,7 @@ public class NotificationListener extends NotificationListenerService {
type != NotificationType.WECHAT &&
type != NotificationType.OUTLOOK &&
type != NotificationType.SKYPE) { //see https://github.com/Freeyourgadget/Gadgetbridge/issues/1109
LOG.info("local only");
LOG.info("Ignoring notification, local only");
return true;
}
@ -919,7 +920,7 @@ public class NotificationListener extends NotificationListenerService {
// Check for screen on when posting the notification; for removal, the screen
// has to be on (obviously)
if(!remove) {
if (!remove) {
if (!prefs.getBoolean("notifications_generic_whenscreenon", false)) {
PowerManager powermanager = (PowerManager) getSystemService(POWER_SERVICE);
if (powermanager != null && powermanager.isScreenOn()) {
@ -936,7 +937,7 @@ public class NotificationListener extends NotificationListenerService {
}
}
if (shouldIgnoreOngoing(sbn)){
if (shouldIgnoreOngoing(sbn)) {
return false;
}