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 6a84e42c2..5afa67911 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 c960b149d..eac51d930 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 04206e8d1..d88594e9c 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!