1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-05 09:47:01 +01:00

Garmin: Send phone volume to watch

This commit is contained in:
José Rebelo 2024-06-07 22:53:17 +01:00
parent 47e3cbcb33
commit 0f8889498e
2 changed files with 41 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Queue; import java.util.Queue;
import java.util.Timer; import java.util.Timer;
@ -648,6 +649,15 @@ public class GarminSupport extends AbstractBTLEDeviceSupport implements ICommuni
} }
} }
@Override
public void onSetPhoneVolume(final float volume) {
final Map<MusicControlEntityUpdateMessage.MusicEntity, String> 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) { private boolean alreadyDownloaded(final FileTransferHandler.DirectoryEntry entry) {
final Optional<File> file = getFile(entry.getFileName()); final Optional<File> file = getFile(entry.getFileName());
if (file.isPresent()) { if (file.isPresent()) {

View File

@ -1,6 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages; package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.messages;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class MusicControlEntityUpdateMessage extends GFDIMessage { public class MusicControlEntityUpdateMessage extends GFDIMessage {
@ -14,6 +15,36 @@ public class MusicControlEntityUpdateMessage extends GFDIMessage {
} }
public static MusicControlEntityUpdateMessage parseIncoming(MessageReader reader, GarminMessage garminMessage) {
final Map<MusicEntity, String> 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 @Override
protected boolean generateOutgoing() { protected boolean generateOutgoing() {
final MessageWriter writer = new MessageWriter(response); final MessageWriter writer = new MessageWriter(response);