1 package com.moiseum.wolnelektury.view.player.playlist;
3 import android.content.Context;
4 import android.os.Bundle;
5 import android.support.v4.media.MediaMetadataCompat;
6 import android.support.v4.media.session.MediaControllerCompat;
7 import android.support.v4.media.session.MediaSessionCompat;
8 import android.support.v4.media.session.PlaybackStateCompat;
9 import android.util.Log;
11 import com.moiseum.wolnelektury.base.DataProvider;
12 import com.moiseum.wolnelektury.base.mvp.FragmentPresenter;
13 import com.moiseum.wolnelektury.connection.models.BookModel;
14 import com.moiseum.wolnelektury.connection.models.MediaModel;
15 import com.moiseum.wolnelektury.connection.services.BooksService;
16 import com.moiseum.wolnelektury.storage.BookStorage;
17 import com.moiseum.wolnelektury.view.book.list.BookListType;
18 import com.moiseum.wolnelektury.view.player.PlayerPresenter;
19 import com.moiseum.wolnelektury.view.player.service.AudiobookService;
20 import com.moiseum.wolnelektury.view.player.service.MediaBrowserHelper;
22 import java.util.List;
25 * Created by Piotr Ostrowski on 28.05.2018.
27 public class PlayerPlaylistPresenter extends FragmentPresenter<PlayerPlaylistView> {
29 private class PlayerPlaylistMediaControllerCallback extends MediaControllerCompat.Callback {
32 public void onMetadataChanged(MediaMetadataCompat mediaMetadata) {
33 if (mediaMetadata == null) {
36 if (!containsMediaId(mediaMetadata.getString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID))) {
40 int currentChapter = (int) mediaMetadata.getLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER);
41 getView().setCurrentPlaylistItem(currentChapter);
44 private boolean containsMediaId(String mediaIdUrl) {
45 for (MediaModel model : media) {
46 if (model.getUrl().equals(mediaIdUrl)) {
54 private final List<MediaModel> media;
55 private MediaBrowserHelper mMediaBrowserHelper;
57 PlayerPlaylistPresenter(List<MediaModel> mediaFiles, PlayerPlaylistView view, Context context) {
60 mMediaBrowserHelper = new MediaBrowserHelper(context, AudiobookService.class);
61 mMediaBrowserHelper.registerCallback(new PlayerPlaylistMediaControllerCallback());
65 public void onStart() {
67 mMediaBrowserHelper.onStart();
71 public void onStop() {
73 mMediaBrowserHelper.onStop();
77 public void onViewCreated(Bundle savedInstanceState) {
78 super.onViewCreated(savedInstanceState);
79 getView().setPlaylist(media);
82 void onPlaylistItemClick(int itemPosition) {
83 mMediaBrowserHelper.getTransportControls().skipToQueueItem(itemPosition);