Saved the playback position when the player is paused

This commit is contained in:
CappielloAntonio 2022-01-02 17:43:30 +01:00
parent e4d09f3bc0
commit 40866a2855
7 changed files with 101 additions and 13 deletions

View file

@ -128,8 +128,14 @@ public class QueueRepository {
return count;
}
public void setTimestamp(String id) {
SetTimestampThreadSafe timestamp = new SetTimestampThreadSafe(queueDao, id);
public void setLastPlayedTimestamp(String id) {
SetLastPlayedTimestampThreadSafe timestamp = new SetLastPlayedTimestampThreadSafe(queueDao, id);
Thread thread = new Thread(timestamp);
thread.start();
}
public void setPlayingChangedTimestamp(String id, long ms) {
SetPlayingChangedTimestampThreadSafe timestamp = new SetPlayingChangedTimestampThreadSafe(queueDao, id, ms);
Thread thread = new Thread(timestamp);
thread.start();
}
@ -151,6 +157,23 @@ public class QueueRepository {
return index;
}
public long getLastPlayedSongTimestamp() {
long timestamp = 0;
GetLastPlayedSongTimestampThreadSafe getLastPlayedSongTimestampThreadSafe = new GetLastPlayedSongTimestampThreadSafe(queueDao);
Thread thread = new Thread(getLastPlayedSongTimestampThreadSafe);
thread.start();
try {
thread.join();
timestamp = getLastPlayedSongTimestampThreadSafe.getTimestamp();
} catch (InterruptedException e) {
e.printStackTrace();
}
return timestamp;
}
private static class GetSongsThreadSafe implements Runnable {
private final QueueDao queueDao;
private List<Song> songs;
@ -230,11 +253,11 @@ public class QueueRepository {
}
}
private static class SetTimestampThreadSafe implements Runnable {
private static class SetLastPlayedTimestampThreadSafe implements Runnable {
private final QueueDao queueDao;
private final String songId;
public SetTimestampThreadSafe(QueueDao queueDao, String songId) {
public SetLastPlayedTimestampThreadSafe(QueueDao queueDao, String songId) {
this.queueDao = queueDao;
this.songId = songId;
}
@ -245,6 +268,23 @@ public class QueueRepository {
}
}
private static class SetPlayingChangedTimestampThreadSafe implements Runnable {
private final QueueDao queueDao;
private final String songId;
private final long ms;
public SetPlayingChangedTimestampThreadSafe(QueueDao queueDao, String songId, long ms) {
this.queueDao = queueDao;
this.songId = songId;
this.ms = ms;
}
@Override
public void run() {
queueDao.setPlayingChanged(songId, ms);
}
}
private static class GetLastPlayedSongThreadSafe implements Runnable {
private final QueueDao queueDao;
private int index;
@ -262,4 +302,22 @@ public class QueueRepository {
return index;
}
}
private static class GetLastPlayedSongTimestampThreadSafe implements Runnable {
private final QueueDao queueDao;
private long timestamp;
public GetLastPlayedSongTimestampThreadSafe(QueueDao queueDao) {
this.queueDao = queueDao;
}
@Override
public void run() {
timestamp = queueDao.getLastPlayedTimestamp();
}
public long getTimestamp() {
return timestamp;
}
}
}