tempus/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java

147 lines
5.1 KiB
Java
Raw Normal View History

package com.cappielloantonio.play.util;
2021-12-29 10:19:02 +01:00
import android.content.Context;
2022-02-07 17:38:47 +01:00
import android.net.Uri;
2021-12-29 10:19:02 +01:00
import android.os.Bundle;
import androidx.annotation.OptIn;
2021-12-29 10:19:02 +01:00
import androidx.media3.common.MediaItem;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.util.UnstableApi;
2021-12-29 10:19:02 +01:00
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
2021-07-29 17:12:55 +02:00
import com.cappielloantonio.play.model.Download;
2022-02-07 17:38:47 +01:00
import com.cappielloantonio.play.model.Media;
2021-07-29 14:56:00 +02:00
import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.subsonic.models.Child;
import java.util.ArrayList;
import java.util.List;
public class MappingUtil {
public static ArrayList<Album> mapDownloadToAlbum(List<Download> downloads) {
ArrayList<Album> albums = new ArrayList();
// TODO
/* for (Download download : downloads) {
Album album = new Album(download);
if (!albums.contains(album)) {
albums.add(album);
}
} */
return albums;
}
public static ArrayList<Artist> mapDownloadToArtist(List<Download> downloads) {
ArrayList<Artist> artists = new ArrayList();
// TODO
/* for (Download download : downloads) {
Artist artist = new Artist(download);
if (!artists.contains(artist)) {
artists.add(artist);
}
} */
return artists;
}
public static ArrayList<Playlist> mapDownloadToPlaylist(List<Download> downloads) {
ArrayList<Playlist> playlists = new ArrayList();
// TODO
/*for (Download download : downloads) {
2023-03-02 10:48:30 +01:00
playlists.add(new Playlist(download.getPlaylistId(), download.getPlaylistName(), null, 0, 0, null));
}*/
return playlists;
}
public static ArrayList<Download> mapDownload(List<Child> media, String playlistId, String playlistName) {
2021-07-29 17:12:55 +02:00
ArrayList<Download> downloads = new ArrayList();
// TODO
/* for (Child item : media) {
Download download = (Download) item;
download.setMediaID();
download.setServer();
download.setPlaylistId();
downloads.add(download);
} */
2021-07-29 17:12:55 +02:00
return downloads;
}
public static Download mapDownload(Child media, String playlistId, String playlistName) {
// TODO
//return new Download(media, playlistId, playlistName);
2021-07-31 18:43:40 +02:00
return null;
2021-07-31 18:43:40 +02:00
}
2021-12-29 10:19:02 +01:00
@OptIn(markerClass = UnstableApi.class)
public static MediaItem mapMediaItem(Context context, Child media, boolean stream) {
2022-02-07 17:38:47 +01:00
boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(media.getId()));
2022-01-02 15:50:59 +01:00
2021-12-29 10:19:02 +01:00
Bundle bundle = new Bundle();
bundle.putParcelable("child", media);
2021-12-29 10:19:02 +01:00
return new MediaItem.Builder()
2022-02-07 17:38:47 +01:00
.setMediaId(media.getId())
2021-12-29 10:19:02 +01:00
.setMediaMetadata(
new MediaMetadata.Builder()
2022-02-07 17:38:47 +01:00
.setTitle(MusicUtil.getReadableString(media.getTitle()))
.setTrackNumber(media.getTrack())
2022-02-07 17:38:47 +01:00
.setDiscNumber(media.getDiscNumber())
.setReleaseYear(media.getYear())
.setAlbumTitle(MusicUtil.getReadableString(media.getAlbum()))
.setArtist(MusicUtil.getReadableString(media.getArtist()))
2021-12-29 10:19:02 +01:00
.setExtras(bundle)
.build()
)
.setRequestMetadata(
new MediaItem.RequestMetadata.Builder()
.setMediaUri(getUri(context, media, stream && !isDownloaded))
.setExtras(bundle)
.build()
)
.setMimeType(MimeTypes.BASE_TYPE_AUDIO)
2022-02-07 17:38:47 +01:00
.setUri(getUri(context, media, stream && !isDownloaded))
2021-12-29 10:19:02 +01:00
.build();
}
private static Uri getUri(Context context, Child media, boolean stream) {
2022-02-07 17:38:47 +01:00
switch (media.getType()) {
case Media.MEDIA_TYPE_MUSIC:
if (stream) {
return MusicUtil.getStreamUri(context, media.getId());
} else {
2022-02-07 17:38:47 +01:00
return MusicUtil.getDownloadUri(media.getId());
}
case Media.MEDIA_TYPE_PODCAST:
if (stream) {
// TODO
// return MusicUtil.getStreamUri(context, media.getStreamId());
} else {
// TODO
// return MusicUtil.getDownloadUri(media.getStreamId());
2022-02-07 17:38:47 +01:00
}
default:
return MusicUtil.getStreamUri(context, media.getId());
}
2022-02-05 18:42:03 +01:00
}
public static ArrayList<MediaItem> mapMediaItems(Context context, List<Child> items, boolean stream) {
2021-12-29 10:19:02 +01:00
ArrayList<MediaItem> mediaItems = new ArrayList();
2022-02-07 17:38:47 +01:00
for (int i = 0; i < items.size(); i++) {
mediaItems.add(mapMediaItem(context, items.get(i), stream));
2021-12-29 10:19:02 +01:00
}
return mediaItems;
}
}