Let PlaybackController handle listening for service start
This commit is contained in:
parent
7d20baf4f9
commit
09f4ebf08a
|
@ -38,7 +38,6 @@ import com.joanzapata.iconify.fonts.FontAwesomeIcons;
|
|||
import java.util.Locale;
|
||||
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.core.event.ServiceEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
|
@ -68,9 +67,6 @@ import io.reactivex.Observable;
|
|||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -288,7 +284,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
|||
controller.init();
|
||||
loadMediaInfo();
|
||||
onPositionObserverUpdate();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -301,7 +296,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
|||
if (disposable != null) {
|
||||
disposable.dispose();
|
||||
}
|
||||
EventBus.getDefault().unregister(this);
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
@ -669,16 +663,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
|||
StorageUtils.checkStorageAvailability(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(ServiceEvent event) {
|
||||
Log.d(TAG, "onEvent(" + event + ")");
|
||||
if (event.action == ServiceEvent.Action.SERVICE_STARTED) {
|
||||
if (controller != null) {
|
||||
controller.init();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by 'handleStatus()' when the PlaybackService is waiting for
|
||||
* a video surface.
|
||||
|
|
|
@ -7,13 +7,9 @@ import android.widget.ListView;
|
|||
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.ChaptersListAdapter;
|
||||
import de.danoeh.antennapod.core.event.ServiceEvent;
|
||||
import de.danoeh.antennapod.core.feed.Chapter;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
|
||||
public class ChaptersFragment extends ListFragment {
|
||||
|
@ -58,24 +54,15 @@ public class ChaptersFragment extends ListFragment {
|
|||
};
|
||||
controller.init();
|
||||
onMediaChanged(controller.getMedia());
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
controller.release();
|
||||
controller = null;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(ServiceEvent event) {
|
||||
if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) {
|
||||
controller.init();
|
||||
}
|
||||
}
|
||||
|
||||
private void onMediaChanged(Playable media) {
|
||||
if (adapter != null) {
|
||||
adapter.setMedia(media);
|
||||
|
|
|
@ -13,13 +13,9 @@ import com.bumptech.glide.Glide;
|
|||
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.core.event.ServiceEvent;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* Displays the cover and the title of a FeedItem.
|
||||
|
@ -85,20 +81,11 @@ public class CoverFragment extends Fragment {
|
|||
};
|
||||
controller.init();
|
||||
loadMediaInfo();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(ServiceEvent event) {
|
||||
if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) {
|
||||
controller.init();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
controller.release();
|
||||
controller = null;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@ import com.bumptech.glide.Glide;
|
|||
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.core.event.ServiceEvent;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.glide.ApGlideSettings;
|
||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||
|
@ -28,9 +27,6 @@ import io.reactivex.Maybe;
|
|||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* Fragment which is supposed to be displayed outside of the MediaplayerActivity
|
||||
|
@ -94,14 +90,6 @@ public class ExternalPlayerFragment extends Fragment {
|
|||
loadMediaInfo();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(ServiceEvent event) {
|
||||
Log.d(TAG, "onEvent(" + event + ")");
|
||||
if (event.action == ServiceEvent.Action.SERVICE_STARTED) {
|
||||
controller.init();
|
||||
}
|
||||
}
|
||||
|
||||
private PlaybackController setupPlaybackController() {
|
||||
return new PlaybackController(getActivity(), true) {
|
||||
|
||||
|
@ -147,7 +135,6 @@ public class ExternalPlayerFragment extends Fragment {
|
|||
public void onStart() {
|
||||
super.onStart();
|
||||
controller.init();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -156,7 +143,6 @@ public class ExternalPlayerFragment extends Fragment {
|
|||
if (controller != null) {
|
||||
controller.release();
|
||||
}
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -28,7 +28,6 @@ import android.widget.Toast;
|
|||
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.activity.MediaplayerInfoActivity;
|
||||
import de.danoeh.antennapod.core.event.ServiceEvent;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
||||
|
@ -40,9 +39,6 @@ import io.reactivex.Observable;
|
|||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* Displays the description of a Playable object in a Webview.
|
||||
|
@ -312,20 +308,11 @@ public class ItemDescriptionFragment extends Fragment {
|
|||
};
|
||||
controller.init();
|
||||
load();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(ServiceEvent event) {
|
||||
if (event.action == ServiceEvent.Action.SERVICE_STARTED && controller != null) {
|
||||
controller.init();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
controller.release();
|
||||
controller = null;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import de.danoeh.antennapod.core.R;
|
||||
import de.danoeh.antennapod.core.event.ServiceEvent;
|
||||
import de.danoeh.antennapod.core.feed.Chapter;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
|
@ -43,6 +44,9 @@ import io.reactivex.Observable;
|
|||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
/**
|
||||
* Communicates with the playback service. GUI classes should use this class to
|
||||
|
@ -69,6 +73,7 @@ public abstract class PlaybackController {
|
|||
private boolean mediaInfoLoaded = false;
|
||||
private boolean released = false;
|
||||
private boolean initialized = false;
|
||||
private boolean eventsRegistered = false;
|
||||
|
||||
private Disposable serviceBinder;
|
||||
private Disposable mediaLoader;
|
||||
|
@ -95,7 +100,11 @@ public abstract class PlaybackController {
|
|||
/**
|
||||
* Creates a new connection to the playbackService.
|
||||
*/
|
||||
public void init() {
|
||||
public synchronized void init() {
|
||||
if (!eventsRegistered) {
|
||||
EventBus.getDefault().register(this);
|
||||
eventsRegistered = true;
|
||||
}
|
||||
if (PlaybackService.isRunning) {
|
||||
initServiceRunning();
|
||||
} else {
|
||||
|
@ -103,6 +112,13 @@ public abstract class PlaybackController {
|
|||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(ServiceEvent event) {
|
||||
if (event.action == ServiceEvent.Action.SERVICE_STARTED) {
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized void initServiceRunning() {
|
||||
Log.v(TAG, "initServiceRunning()");
|
||||
if (initialized) {
|
||||
|
@ -165,6 +181,10 @@ public abstract class PlaybackController {
|
|||
media = null;
|
||||
released = true;
|
||||
|
||||
if (eventsRegistered) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
eventsRegistered = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue