diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java index 7ef36c5e3..48e9523da 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/XiaomiSupport.java @@ -239,8 +239,7 @@ public class XiaomiSupport extends AbstractBTLEDeviceSupport { @Override public void onFindPhone(final boolean start) { - // TODO possible to notify watch? - super.onFindPhone(start); + systemService.onFindPhone(start); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java index 6f1359dbd..8fa898e67 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java @@ -26,6 +26,7 @@ import java.util.TimeZone; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo; +import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventUpdateDeviceInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo; import nodomain.freeyourgadget.gadgetbridge.model.BatteryState; @@ -43,6 +44,7 @@ public class XiaomiSystemService extends AbstractXiaomiService { public static final int CMD_BATTERY = 1; public static final int CMD_DEVICE_INFO = 2; public static final int CMD_CLOCK = 3; + public static final int CMD_FIND_PHONE = 17; public static final int CMD_CHARGER = 79; public XiaomiSystemService(final XiaomiSupport support) { @@ -91,6 +93,15 @@ public class XiaomiSystemService extends AbstractXiaomiService { } getSupport().evaluateGBDeviceEvent(batteryInfo); return; + case CMD_FIND_PHONE: + final GBDeviceEventFindPhone findPhoneEvent = new GBDeviceEventFindPhone(); + if (cmd.getSystem().getFindDevice() == 0) { + findPhoneEvent.event = GBDeviceEventFindPhone.Event.START; + } else { + findPhoneEvent.event = GBDeviceEventFindPhone.Event.STOP; + } + getSupport().evaluateGBDeviceEvent(findPhoneEvent); + return; case CMD_CHARGER: // charger event, request battery state getSupport().sendCommand( @@ -143,4 +154,18 @@ public class XiaomiSystemService extends AbstractXiaomiService { .build() ); } + + public void onFindPhone(final boolean start) { + if (!start) { + // Stop on watch + getSupport().sendCommand( + "find phone stop", + XiaomiProto.Command.newBuilder() + .setType(COMMAND_TYPE) + .setSubtype(CMD_FIND_PHONE) + .setSystem(XiaomiProto.System.newBuilder().setFindDevice(1).build()) + .build() + ); + } + } }