From 23f2dd35d44cda43439ea5e50b11f9c243100ca9 Mon Sep 17 00:00:00 2001 From: Avamander Date: Fri, 17 Feb 2017 10:01:37 +0200 Subject: [PATCH] Extract music shuffle and repeat states and set the song progress to auto-update. (#554) --- .../externalevents/MusicPlaybackReceiver.java | 13 +++++++++++++ .../gadgetbridge/model/MusicStateSpec.java | 8 ++++---- .../service/DeviceCommunicationService.java | 3 ++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/MusicPlaybackReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/MusicPlaybackReceiver.java index 6a84e42c..5afa6791 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/MusicPlaybackReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/MusicPlaybackReceiver.java @@ -51,6 +51,7 @@ public class MusicPlaybackReceiver extends BroadcastReceiver { stateSpec.position = ((Long) incoming).intValue() / 1000; } else if (incoming instanceof Boolean && "playing".equals(key)) { stateSpec.state = (byte) (((Boolean) incoming) ? MusicStateSpec.STATE_PLAYING : MusicStateSpec.STATE_PAUSED); + stateSpec.playRate = (byte) (((Boolean) incoming) ? 100 : 0); } else if (incoming instanceof String && "duration".equals(key)) { musicSpec.duration = Integer.valueOf((String) incoming) / 1000; } else if (incoming instanceof String && "trackno".equals(key)) { @@ -59,6 +60,18 @@ public class MusicPlaybackReceiver extends BroadcastReceiver { musicSpec.trackCount = Integer.valueOf((String) incoming); } else if (incoming instanceof Integer && "pos".equals(key)) { stateSpec.position = (Integer) incoming; + } else if (incoming instanceof Integer && "repeat".equals(key)) { + if ((Integer) incoming > 0) { + stateSpec.repeat = 1; + } else { + stateSpec.repeat = 0; + } + } else if (incoming instanceof Integer && "shuffle".equals(key)) { + if ((Integer) incoming > 0) { + stateSpec.shuffle = 1; + } else { + stateSpec.shuffle = 0; + } } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/MusicStateSpec.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/MusicStateSpec.java index c960b149..eac51d93 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/MusicStateSpec.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/MusicStateSpec.java @@ -10,8 +10,8 @@ public class MusicStateSpec { public static final int STATE_UNKNOWN = 3; public byte state; - public int position; - public int playRate; + public int position; // Position of the current media in seconds + public int playRate; // Speed of playback, usually 0 or 100 (full speed) public byte shuffle; public byte repeat; @@ -47,8 +47,8 @@ public class MusicStateSpec { @Override public int hashCode() { int result = (int) state; -// ignore the position -- it is taken into account in equals() -// result = 31 * result + position; +//ignore the position -- it is taken into account in equals() +//result = 31 * result + position; result = 31 * result + playRate; result = 31 * result + (int) shuffle; result = 31 * result + (int) repeat; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java index 04206e8d..d88594e9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java @@ -163,7 +163,8 @@ public class DeviceCommunicationService extends Service implements SharedPrefere "com.android.music.playbackcomplete", "net.sourceforge.subsonic.androidapp.EVENT_META_CHANGED", "com.maxmpz.audioplayer.TPOS_SYNC", - "com.maxmpz.audioplayer.STATUS_CHANGED",}; + "com.maxmpz.audioplayer.STATUS_CHANGED", + "com.maxmpz.audioplayer.PLAYING_MODE_CHANGED"}; /** * For testing!