From 3389fcdfdd64b69aef27911c0f9f08a88550e684 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sun, 1 Sep 2019 22:35:02 +0200 Subject: [PATCH] Widget: Fix null pointer exception when a device which has no activity database is used in Gadgetbridge For example a vibratissimo :D --- .../gadgetbridge/model/DailyTotals.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java index bcd8ff73e..c92773351 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java @@ -36,9 +36,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.GB; - public class DailyTotals { - Logger LOG = LoggerFactory.getLogger(DailyTotals.class); + private static final Logger LOG = LoggerFactory.getLogger(DailyTotals.class); public float[] getDailyTotalsForAllDevices(Calendar day) { @@ -52,6 +51,10 @@ public class DailyTotals { GBApplication gbApp = (GBApplication) context; List devices = gbApp.getDeviceManager().getDevices(); for (GBDevice device : devices) { + DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); + if (!coordinator.supportsActivityDataFetching()) { + continue; + } float[] all_daily = getDailyTotalsForDevice(device, day); all_steps += all_daily[0]; all_sleep += all_daily[1] + all_daily[2]; @@ -63,13 +66,12 @@ public class DailyTotals { } - public float[] getDailyTotalsForDevice(GBDevice device, Calendar day - ) { + public float[] getDailyTotalsForDevice(GBDevice device, Calendar day) { try (DBHandler handler = GBApplication.acquireDB()) { ActivityAnalysis analysis = new ActivityAnalysis(); - ActivityAmounts amountsSteps = null; - ActivityAmounts amountsSleep = null; + ActivityAmounts amountsSteps; + ActivityAmounts amountsSleep; amountsSteps = analysis.calculateActivityAmounts(getSamplesOfDay(handler, day, 0, device)); amountsSleep = analysis.calculateActivityAmounts(getSamplesOfDay(handler, day, -12, device));