diff --git a/app/src/main/java/com/jens/automation2/Trigger.java b/app/src/main/java/com/jens/automation2/Trigger.java index f57b8c33..bfd0853a 100644 --- a/app/src/main/java/com/jens/automation2/Trigger.java +++ b/app/src/main/java/com/jens/automation2/Trigger.java @@ -253,7 +253,7 @@ public class Trigger it contains the specific event of this trigger. */ - return triggerParameter == BroadcastListener.getInstance().broadcastsCollectionContains(triggerParameter2); + return triggerParameter == BroadcastListener.getInstance().hasBroadcastOccurredSince(triggerParameter2, getParentRule().getLastExecution()); } boolean checkNotification() diff --git a/app/src/main/java/com/jens/automation2/receivers/BroadcastListener.java b/app/src/main/java/com/jens/automation2/receivers/BroadcastListener.java index a37c57a1..52e225a1 100644 --- a/app/src/main/java/com/jens/automation2/receivers/BroadcastListener.java +++ b/app/src/main/java/com/jens/automation2/receivers/BroadcastListener.java @@ -12,11 +12,12 @@ import com.jens.automation2.Rule; import com.jens.automation2.Trigger; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; public class BroadcastListener extends android.content.BroadcastReceiver implements AutomationListenerInterface { - ArrayList broadcastsCollection = new ArrayList<>(); + ArrayList broadcastsCollection = new ArrayList<>(); public static AutomationService automationServiceRef = null; private static boolean broadcastReceiverActive = false; private static BroadcastListener broadcastReceiverInstance = null; @@ -31,10 +32,22 @@ public class BroadcastListener extends android.content.BroadcastReceiver impleme return broadcastReceiverInstance; } + public static class EventOccurrence + { + Calendar time; + String event; + + public EventOccurrence(Calendar time, String event) + { + this.time = time; + this.event = event; + } + } + @Override public void onReceive(Context context, Intent intent) { - broadcastsCollection.add(intent.getAction()); + broadcastsCollection.add(new EventOccurrence(Calendar.getInstance(), intent.getAction())); ArrayList ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.broadcastReceived); for(int i=0; i getBroadcastsCollection() + public ArrayList getBroadcastsCollection() { return broadcastsCollection; } - public boolean broadcastsCollectionContains(String event) + public boolean hasBroadcastOccurredSince(String event, Calendar timeLimit) { - return broadcastsCollection.contains(event); + for(EventOccurrence eo : broadcastsCollection) + { + if(eo.time.getTimeInMillis() > timeLimit.getTimeInMillis() && eo.event.equalsIgnoreCase(event)) + return true; + } + + return false; } @Override