diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java index 31c80d58f..21d669eca 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/GarminSupport.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Queue; import java.util.Timer; @@ -648,6 +649,15 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni } } + @Override + public void onSetPhoneVolume(final float volume) { + final Map attributes = new HashMap<>(); + + attributes.put(MusicControlEntityUpdateMessage.PLAYER.VOLUME, String.format(Locale.ROOT, "%.2f", volume / 100f)); + + sendOutgoingMessage("set phone volume", new MusicControlEntityUpdateMessage(attributes)); + } + private boolean alreadyDownloaded(final FileTransferHandler.DirectoryEntry entry) { final Optional file = getFile(entry.getFileName()); if (file.isPresent()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/MusicControlEntityUpdateMessage.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/MusicControlEntityUpdateMessage.java index 7d2299eca..fad5095b5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/MusicControlEntityUpdateMessage.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/messages/MusicControlEntityUpdateMessage.java @@ -1,6 +1,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages; import java.nio.charset.StandardCharsets; +import java.util.HashMap; import java.util.Map; public class MusicControlEntityUpdateMessage extends GFDIMessage { @@ -14,6 +15,36 @@ public class MusicControlEntityUpdateMessage extends GFDIMessage { } + public static MusicControlEntityUpdateMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) { + final Map attributes = new HashMap<>(); + + while (reader.remaining() > 0) { + final int len = reader.readByte(); + final int entityId = reader.readByte(); + final int ordinal = reader.readByte(); + final int zero = reader.readByte(); + byte[] bytes = reader.readBytes(len - 3); + final String str = new String(bytes, StandardCharsets.UTF_8); + + switch (entityId) { + case 0: + PLAYER player = PLAYER.values()[ordinal]; + break; + case 1: + QUEUE queue = QUEUE.values()[ordinal]; + break; + case 2: + TRACK track = TRACK.values()[ordinal]; + break; + default: + LOG.warn("Unknown entity {}", entityId); + continue; + } + } + + return new MusicControlEntityUpdateMessage(attributes); + } + @Override protected boolean generateOutgoing() { final MessageWriter writer = new MessageWriter(response);