Fix corner case in trigger online logic #115

Merged
s416204 merged 1 commits from bg-fused-done into develop 2019-01-03 20:04:20 +01:00

View File

@ -184,25 +184,26 @@ public class BackgroundLocalizationService extends Service {
} }
private void changeBackgroundMode() { private void changeBackgroundMode() {
if (coordinatesHistory.size() > 4) {
Integer prevInterval = notify_interval; Integer prevInterval = notify_interval;
Boolean shouldExtendTimeInterval = Stream.of(coordinatesHistory) Boolean shouldExtendTimeInterval = Stream.of(coordinatesHistory)
.map(MapUtils::checkIfCoordinateIsValid).takeWhile(s -> !s).toList().size() == coordinatesHistory.size(); .map(MapUtils::checkIfCoordinateIsValid).takeWhile(s -> !s).toList().size() == coordinatesHistory.size();
Boolean shouldAbbreviateTimeInterval = Stream.of(coordinatesHistory). Boolean shouldAbbreviateTimeInterval = Stream.of(coordinatesHistory).
filter(MapUtils::checkIfCoordinateIsValid).toList().size() > 0; map(MapUtils::checkIfCoordinateIsValid).filter(x -> x).toList().size() > 0;
if (shouldExtendTimeInterval) { if (shouldAbbreviateTimeInterval) {
notify_interval = notify_interval_outside_building;
} else if (shouldAbbreviateTimeInterval) {
notify_interval = notify_interval_inside_building; notify_interval = notify_interval_inside_building;
} }
if (coordinatesHistory.size() > 4 && shouldExtendTimeInterval) {
notify_interval = notify_interval_outside_building;
}
Integer changedMode = Long.valueOf(prevInterval).compareTo(Long.valueOf(notify_interval)); Integer changedMode = Long.valueOf(prevInterval).compareTo(Long.valueOf(notify_interval));
if (changedMode != 0) { if (changedMode != 0) {
updateListeners(); updateListeners();
} }
}
} }
@RequiresApi(api = Build.VERSION_CODES.O) @RequiresApi(api = Build.VERSION_CODES.O)