mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 01:53:31 +00:00
Reimplemented a basic track download functionality for playlist
This commit is contained in:
parent
dee845ebff
commit
bc5669c6ce
2 changed files with 33 additions and 6 deletions
|
|
@ -26,6 +26,8 @@ import com.cappielloantonio.play.glide.CustomGlideRequest;
|
||||||
import com.cappielloantonio.play.service.MediaManager;
|
import com.cappielloantonio.play.service.MediaManager;
|
||||||
import com.cappielloantonio.play.service.MediaService;
|
import com.cappielloantonio.play.service.MediaService;
|
||||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||||
|
import com.cappielloantonio.play.util.DownloadUtil;
|
||||||
|
import com.cappielloantonio.play.util.MappingUtil;
|
||||||
import com.cappielloantonio.play.util.MusicUtil;
|
import com.cappielloantonio.play.util.MusicUtil;
|
||||||
import com.cappielloantonio.play.viewmodel.PlaylistPageViewModel;
|
import com.cappielloantonio.play.viewmodel.PlaylistPageViewModel;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
|
@ -104,7 +106,13 @@ public class PlaylistPageFragment extends Fragment {
|
||||||
if (item.getItemId() == R.id.action_download_playlist) {
|
if (item.getItemId() == R.id.action_download_playlist) {
|
||||||
playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> {
|
playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> {
|
||||||
if (isVisible() && getActivity() != null) {
|
if (isVisible() && getActivity() != null) {
|
||||||
// DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName());
|
DownloadUtil.getDownloadTracker(requireContext()).download(
|
||||||
|
MappingUtil.markPlaylistMediaItems(
|
||||||
|
MappingUtil.mapMediaItems(requireContext(), songs, false),
|
||||||
|
playlistPageViewModel.getPlaylist().getId(),
|
||||||
|
playlistPageViewModel.getPlaylist().getName()
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,7 @@ public class MappingUtil {
|
||||||
return genres;
|
return genres;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MediaItem mapMediaItem(Context context, Song song, boolean isForStreaming) {
|
public static MediaItem mapMediaItem(Context context, Song song, boolean stream) {
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString("id", song.getId());
|
bundle.putString("id", song.getId());
|
||||||
bundle.putString("albumId", song.getAlbumId());
|
bundle.putString("albumId", song.getAlbumId());
|
||||||
|
|
@ -207,7 +207,7 @@ public class MappingUtil {
|
||||||
.setMediaId(song.getId())
|
.setMediaId(song.getId())
|
||||||
.setMediaMetadata(
|
.setMediaMetadata(
|
||||||
new MediaMetadata.Builder()
|
new MediaMetadata.Builder()
|
||||||
.setMediaUri(isForStreaming ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song))
|
.setMediaUri(stream ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song))
|
||||||
.setTitle(MusicUtil.getReadableString(song.getTitle()))
|
.setTitle(MusicUtil.getReadableString(song.getTitle()))
|
||||||
.setTrackNumber(song.getTrackNumber())
|
.setTrackNumber(song.getTrackNumber())
|
||||||
.setDiscNumber(song.getDiscNumber())
|
.setDiscNumber(song.getDiscNumber())
|
||||||
|
|
@ -217,17 +217,36 @@ public class MappingUtil {
|
||||||
.setExtras(bundle)
|
.setExtras(bundle)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.setUri(isForStreaming ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song))
|
.setUri(stream ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<MediaItem> mapMediaItems(Context context, List<Song> songs, boolean isForStreaming) {
|
public static ArrayList<MediaItem> mapMediaItems(Context context, List<Song> songs, boolean stream) {
|
||||||
ArrayList<MediaItem> mediaItems = new ArrayList();
|
ArrayList<MediaItem> mediaItems = new ArrayList();
|
||||||
|
|
||||||
for (Song song : songs) {
|
for (Song song : songs) {
|
||||||
mediaItems.add(mapMediaItem(context, song, isForStreaming));
|
mediaItems.add(mapMediaItem(context, song, stream));
|
||||||
}
|
}
|
||||||
|
|
||||||
return mediaItems;
|
return mediaItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static MediaItem markPlaylistMediaItem(MediaItem mediaItem, String playlistId, String playlistName) {
|
||||||
|
if (mediaItem.mediaMetadata.extras != null) {
|
||||||
|
mediaItem.mediaMetadata.extras.putString("playlistId", playlistId);
|
||||||
|
mediaItem.mediaMetadata.extras.putString("playlistName", playlistName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mediaItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<MediaItem> markPlaylistMediaItems(ArrayList<MediaItem> mediaItems, String playlistId, String playlistName) {
|
||||||
|
ArrayList<MediaItem> toReturn = new ArrayList();
|
||||||
|
|
||||||
|
for(MediaItem mediaItem: mediaItems) {
|
||||||
|
toReturn.add(markPlaylistMediaItem(mediaItem, playlistId, playlistName));
|
||||||
|
}
|
||||||
|
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue