diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java index f9891005..b133ccf7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleIoThread.java @@ -543,20 +543,6 @@ class PebbleIoThread extends GBDeviceIoThread { } void installApp(Uri uri, int appId) { - if (uri.equals(Uri.parse("fake://health"))) { - write(mPebbleProtocol.encodeActivateHealth(true)); - write(mPebbleProtocol.encodeSetSaneDistanceUnit(true)); - return; - } - if (uri.equals(Uri.parse("fake://hrm"))) { - write(mPebbleProtocol.encodeActivateHRM(true)); - return; - } - if (uri.equals(Uri.parse("fake://weather"))) { - write(mPebbleProtocol.encodeActivateWeather(true)); - return; - } - if (mIsInstalling) { return; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java index d9bd9f2d..ffc88f26 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java @@ -30,6 +30,7 @@ import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; @@ -67,7 +68,30 @@ public class PebbleSupport extends AbstractSerialDeviceSupport { @Override public void onInstallApp(Uri uri) { - getDeviceIOThread().installApp(uri, 0); + PebbleProtocol pebbleProtocol = (PebbleProtocol) getDeviceProtocol(); + PebbleIoThread pebbleIoThread = getDeviceIOThread(); + // catch fake urls first + if (uri.equals(Uri.parse("fake://health"))) { + getDeviceIOThread().write(pebbleProtocol.encodeActivateHealth(true)); + String units = GBApplication.getPrefs().getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, getContext().getString(R.string.p_unit_metric)); + if (units.equals(getContext().getString(R.string.p_unit_metric))) { + pebbleIoThread.write(pebbleProtocol.encodeSetSaneDistanceUnit(true)); + } else { + pebbleIoThread.write(pebbleProtocol.encodeSetSaneDistanceUnit(false)); + } + return; + } + if (uri.equals(Uri.parse("fake://hrm"))) { + getDeviceIOThread().write(pebbleProtocol.encodeActivateHRM(true)); + return; + } + if (uri.equals(Uri.parse("fake://weather"))) { + getDeviceIOThread().write(pebbleProtocol.encodeActivateWeather(true)); + return; + } + + // it is a real app + pebbleIoThread.installApp(uri, 0); } @Override