Saving play history. The tracks are saved in the db at the time of playback and every week a list of the most played tracks is generated in the home page in grid format

This commit is contained in:
antonio 2022-12-28 14:25:59 +01:00
parent 6a1c5d2ce3
commit ff8bf4f6bf
14 changed files with 646 additions and 55 deletions

View file

@ -10,6 +10,7 @@ import androidx.media3.session.MediaBrowser;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.interfaces.MediaIndexCallback;
import com.cappielloantonio.play.model.Media;
import com.cappielloantonio.play.repository.ChronologyRepository;
import com.cappielloantonio.play.repository.QueueRepository;
import com.cappielloantonio.play.repository.SongRepository;
import com.cappielloantonio.play.util.MappingUtil;
@ -289,21 +290,22 @@ public class MediaManager {
}
}
@SuppressLint("UnsafeOptInUsageError")
public static void setLastPlayedTimestamp(MediaItem mediaItem) {
if (mediaItem != null) getQueueRepository().setLastPlayedTimestamp(mediaItem.mediaId);
}
@SuppressLint("UnsafeOptInUsageError")
public static void setPlayingPausedTimestamp(MediaItem mediaItem, long ms) {
if (mediaItem != null) getQueueRepository().setPlayingPausedTimestamp(mediaItem.mediaId, ms);
}
@SuppressLint("UnsafeOptInUsageError")
public static void scrobble(MediaItem mediaItem) {
if (mediaItem != null) getSongRepository().scrobble(mediaItem.mediaMetadata.extras.getString("id"));
}
public static void saveChronology(MediaItem mediaItem) {
if (mediaItem != null) getChronologyRepository().insert(MappingUtil.mapChronology(mediaItem));
}
private static QueueRepository getQueueRepository() {
return new QueueRepository(App.getInstance());
}
@ -312,6 +314,10 @@ public class MediaManager {
return new SongRepository(App.getInstance());
}
private static ChronologyRepository getChronologyRepository() {
return new ChronologyRepository(App.getInstance());
}
private static void enqueueDatabase(List<Media> media, boolean reset, int afterIndex) {
getQueueRepository().insertAll(media, reset, afterIndex);
}