diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/packets/GpsAndTime.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/packets/GpsAndTime.java index 78ebbc7fa..327ac37c6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/packets/GpsAndTime.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/packets/GpsAndTime.java @@ -9,19 +9,21 @@ public class GpsAndTime { public static class CurrentGPSRequest extends HuaweiPacket { public static final byte id = 0x07; public CurrentGPSRequest ( - ParamsProvider paramsProvider + ParamsProvider paramsProvider, + int timestamp, + double lat, + double lon ) { super(paramsProvider); this.serviceId = GpsAndTime.id; this.commandId = id; - this.tlv = new HuaweiTLV(); - this.tlv.put(0x01, (int) 0); - this.tlv.put(0x02, (long) 0); - this.tlv.put(0x03, (long) 0); + this.tlv = new HuaweiTLV() + .put(0x01, timestamp) + .put(0x02, lon) + .put(0x03, lat); this.isEncrypted = true; this.complete = true; - } } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/requests/SendGpsAndTimeToDeviceRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/requests/SendGpsAndTimeToDeviceRequest.java index 9b5a76389..76d4c6ebf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/requests/SendGpsAndTimeToDeviceRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/requests/SendGpsAndTimeToDeviceRequest.java @@ -1,15 +1,16 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests; +import java.util.Calendar; import java.util.List; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiPacket; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.packets.GpsAndTime; import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiSupportProvider; - +import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class SendGpsAndTimeToDeviceRequest extends Request { - public SendGpsAndTimeToDeviceRequest(HuaweiSupportProvider support) { super(support); this.serviceId = GpsAndTime.id; @@ -21,12 +22,16 @@ public class SendGpsAndTimeToDeviceRequest extends Request { try { // TODO: support multiple units + Prefs prefs = GBApplication.getPrefs(); + // Backdating a bit seems to work better return new GpsAndTime.CurrentGPSRequest( - this.paramsProvider + this.paramsProvider, + (int) (Calendar.getInstance().getTime().getTime() / 1000L) - 60, + prefs.getFloat("location_latitude", 0), + prefs.getFloat("location_longitude", 0) ).serialize(); } catch (HuaweiPacket.CryptoException e) { throw new RequestCreationException(e); } } - }