diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsAgpsInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsAgpsInstallHandler.java index 5ba44a5ca..1d910b7b6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsAgpsInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsAgpsInstallHandler.java @@ -28,10 +28,13 @@ import java.io.InputStream; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.InstallActivity; +import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.GenericItem; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.operations.ZeppOsAgpsFile; +import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.UriHelper; @@ -76,6 +79,20 @@ public class ZeppOsAgpsInstallHandler implements InstallHandler { return; } + final DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); + if (!(coordinator instanceof Huami2021Coordinator)) { + LOG.warn("Coordinator is not a Huami2021Coordinator: {}", coordinator.getClass()); + installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_supported)); + installActivity.setInstallEnabled(false); + return; + } + final Huami2021Coordinator huami2021coordinator = (Huami2021Coordinator) coordinator; + if (!huami2021coordinator.supportsAgpsUpdates()) { + installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_supported)); + installActivity.setInstallEnabled(false); + return; + } + if (!device.isInitialized()) { installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_ready)); installActivity.setInstallEnabled(false); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsGpxRouteInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsGpxRouteInstallHandler.java index bf22362f8..6b5f44290 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsGpxRouteInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsGpxRouteInstallHandler.java @@ -28,10 +28,13 @@ import java.io.InputStream; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.InstallActivity; +import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.GenericItem; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.operations.ZeppOsGpxRouteFile; +import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.UriHelper; @@ -75,6 +78,20 @@ public class ZeppOsGpxRouteInstallHandler implements InstallHandler { return; } + final DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); + if (!(coordinator instanceof Huami2021Coordinator)) { + LOG.warn("Coordinator is not a Huami2021Coordinator: {}", coordinator.getClass()); + installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_supported)); + installActivity.setInstallEnabled(false); + return; + } + final Huami2021Coordinator huami2021coordinator = (Huami2021Coordinator) coordinator; + if (!huami2021coordinator.supportsGpxUploads()) { + installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_supported)); + installActivity.setInstallEnabled(false); + return; + } + if (!device.isInitialized()) { installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_ready)); installActivity.setInstallEnabled(false); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWInstallHandler.java index 976210b70..ebe949d34 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWInstallHandler.java @@ -77,7 +77,11 @@ public abstract class AbstractMiBandFWInstallHandler implements InstallHandler { return; } - if (!isSupportedDeviceType(device) || !device.isInitialized()) { + if (!isSupportedDeviceType(device)) { + installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_supported)); + installActivity.setInstallEnabled(false); + return; + } else if (!device.isInitialized()) { installActivity.setInfoText(mContext.getString(R.string.fwapp_install_device_not_ready)); installActivity.setInstallEnabled(false); return; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bc789338c..85721a180 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -785,6 +785,7 @@ Upload has failed Upload is in progress\n%1d%% at %.2fkbps (average %.2fkbps)\nPart %1d of %1d Flashing firmware… + File cannot be installed, device not supported. File cannot be installed, device not ready. %1$s: %2$s %3$s Compatible version