Refactoring: Move inner classes PlayableUtils and PlayableException out of Playable (#4962)
This commit is contained in:
parent
519d6ce9d6
commit
39f9796656
@ -28,6 +28,7 @@ import de.danoeh.antennapod.core.util.ChapterUtils;
|
|||||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||||
import de.danoeh.antennapod.core.sync.SyncService;
|
import de.danoeh.antennapod.core.sync.SyncService;
|
||||||
import de.danoeh.antennapod.core.sync.model.EpisodeAction;
|
import de.danoeh.antennapod.core.sync.model.EpisodeAction;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableException;
|
||||||
|
|
||||||
public class FeedMedia extends FeedFile implements Playable {
|
public class FeedMedia extends FeedFile implements Playable {
|
||||||
private static final String TAG = "FeedMedia";
|
private static final String TAG = "FeedMedia";
|
||||||
|
@ -38,6 +38,7 @@ import de.danoeh.antennapod.core.util.RewindAfterPauseUtils;
|
|||||||
import de.danoeh.antennapod.core.util.playback.AudioPlayer;
|
import de.danoeh.antennapod.core.util.playback.AudioPlayer;
|
||||||
import de.danoeh.antennapod.core.util.playback.IPlayer;
|
import de.danoeh.antennapod.core.util.playback.IPlayer;
|
||||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableException;
|
||||||
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
|
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
|
||||||
import de.danoeh.antennapod.core.util.playback.VideoPlayer;
|
import de.danoeh.antennapod.core.util.playback.VideoPlayer;
|
||||||
|
|
||||||
@ -288,7 +289,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
|
|||||||
onPrepared(startWhenPrepared);
|
onPrepared(startWhenPrepared);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Playable.PlayableException | IOException | IllegalStateException e) {
|
} catch (PlayableException | IOException | IllegalStateException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
setPlayerStatus(PlayerStatus.ERROR, null);
|
setPlayerStatus(PlayerStatus.ERROR, null);
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,8 @@ import de.danoeh.antennapod.core.util.NetworkUtils;
|
|||||||
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
|
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
|
||||||
import de.danoeh.antennapod.core.util.playback.ExternalMedia;
|
import de.danoeh.antennapod.core.util.playback.ExternalMedia;
|
||||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableException;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableUtils;
|
||||||
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
|
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
|
||||||
import de.danoeh.antennapod.core.widget.WidgetUpdater;
|
import de.danoeh.antennapod.core.widget.WidgetUpdater;
|
||||||
import de.danoeh.antennapod.ui.appstartintent.MainActivityStarter;
|
import de.danoeh.antennapod.ui.appstartintent.MainActivityStarter;
|
||||||
@ -723,7 +725,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startPlayingFromPreferences() {
|
private void startPlayingFromPreferences() {
|
||||||
Observable.fromCallable(() -> Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext()))
|
Observable.fromCallable(() -> PlayableUtils.createInstanceFromPreferences(getApplicationContext()))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(
|
.subscribe(
|
||||||
@ -996,7 +998,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
FeedMedia media = (FeedMedia) currentMedia;
|
FeedMedia media = (FeedMedia) currentMedia;
|
||||||
try {
|
try {
|
||||||
media.loadMetadata();
|
media.loadMetadata();
|
||||||
} catch (Playable.PlayableException e) {
|
} catch (PlayableException e) {
|
||||||
Log.e(TAG, "Unable to load metadata to get next in queue", e);
|
Log.e(TAG, "Unable to load metadata to get next in queue", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ import de.danoeh.antennapod.core.util.LongList;
|
|||||||
import de.danoeh.antennapod.core.util.Permutor;
|
import de.danoeh.antennapod.core.util.Permutor;
|
||||||
import de.danoeh.antennapod.core.util.SortOrder;
|
import de.danoeh.antennapod.core.util.SortOrder;
|
||||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides methods for writing data to AntennaPod's database.
|
* Provides methods for writing data to AntennaPod's database.
|
||||||
@ -382,7 +383,7 @@ public class DBWriter {
|
|||||||
List<FeedItem> updatedItems = new ArrayList<>();
|
List<FeedItem> updatedItems = new ArrayList<>();
|
||||||
ItemEnqueuePositionCalculator positionCalculator =
|
ItemEnqueuePositionCalculator positionCalculator =
|
||||||
new ItemEnqueuePositionCalculator(UserPreferences.getEnqueueLocation());
|
new ItemEnqueuePositionCalculator(UserPreferences.getEnqueueLocation());
|
||||||
Playable currentlyPlaying = Playable.PlayableUtils.createInstanceFromPreferences(context);
|
Playable currentlyPlaying = PlayableUtils.createInstanceFromPreferences(context);
|
||||||
int insertPosition = positionCalculator.calcPosition(queue, currentlyPlaying);
|
int insertPosition = positionCalculator.calcPosition(queue, currentlyPlaying);
|
||||||
for (long itemId : itemIds) {
|
for (long itemId : itemIds) {
|
||||||
if (!itemListContains(queue, itemId)) {
|
if (!itemListContains(queue, itemId)) {
|
||||||
|
@ -3,14 +3,10 @@ package de.danoeh.antennapod.core.util.playback;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import androidx.preference.PreferenceManager;
|
|
||||||
import android.util.Log;
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import de.danoeh.antennapod.core.feed.Chapter;
|
import de.danoeh.antennapod.core.feed.Chapter;
|
||||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
|
||||||
import de.danoeh.antennapod.core.feed.MediaType;
|
import de.danoeh.antennapod.core.feed.MediaType;
|
||||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
|
||||||
import de.danoeh.antennapod.core.storage.DBReader;
|
|
||||||
import de.danoeh.antennapod.core.util.ShownotesProvider;
|
import de.danoeh.antennapod.core.util.ShownotesProvider;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -183,100 +179,4 @@ public interface Playable extends Parcelable, ShownotesProvider {
|
|||||||
@Nullable
|
@Nullable
|
||||||
String getImageLocation();
|
String getImageLocation();
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides utility methods for Playable objects.
|
|
||||||
*/
|
|
||||||
class PlayableUtils {
|
|
||||||
private PlayableUtils(){}
|
|
||||||
|
|
||||||
private static final String TAG = "PlayableUtils";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restores a playable object from a sharedPreferences file. This method might load data from the database,
|
|
||||||
* depending on the type of playable that was restored.
|
|
||||||
*
|
|
||||||
* @return The restored Playable object
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
public static Playable createInstanceFromPreferences(Context context) {
|
|
||||||
long currentlyPlayingMedia = PlaybackPreferences.getCurrentlyPlayingMediaType();
|
|
||||||
if (currentlyPlayingMedia != PlaybackPreferences.NO_MEDIA_PLAYING) {
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
|
|
||||||
return PlayableUtils.createInstanceFromPreferences(context,
|
|
||||||
(int) currentlyPlayingMedia, prefs);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restores a playable object from a sharedPreferences file. This method might load data from the database,
|
|
||||||
* depending on the type of playable that was restored.
|
|
||||||
*
|
|
||||||
* @param type An integer that represents the type of the Playable object
|
|
||||||
* that is restored.
|
|
||||||
* @param pref The SharedPreferences file from which the Playable object
|
|
||||||
* is restored
|
|
||||||
* @return The restored Playable object
|
|
||||||
*/
|
|
||||||
public static Playable createInstanceFromPreferences(Context context, int type,
|
|
||||||
SharedPreferences pref) {
|
|
||||||
Playable result = null;
|
|
||||||
// ADD new Playable types here:
|
|
||||||
switch (type) {
|
|
||||||
case FeedMedia.PLAYABLE_TYPE_FEEDMEDIA:
|
|
||||||
result = createFeedMediaInstance(pref);
|
|
||||||
break;
|
|
||||||
case ExternalMedia.PLAYABLE_TYPE_EXTERNAL_MEDIA:
|
|
||||||
result = createExternalMediaInstance(pref);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (result == null) {
|
|
||||||
Log.e(TAG, "Could not restore Playable object from preferences");
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Playable createFeedMediaInstance(SharedPreferences pref) {
|
|
||||||
Playable result = null;
|
|
||||||
long mediaId = pref.getLong(FeedMedia.PREF_MEDIA_ID, -1);
|
|
||||||
if (mediaId != -1) {
|
|
||||||
result = DBReader.getFeedMedia(mediaId);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Playable createExternalMediaInstance(SharedPreferences pref) {
|
|
||||||
Playable result = null;
|
|
||||||
String source = pref.getString(ExternalMedia.PREF_SOURCE_URL, null);
|
|
||||||
String mediaType = pref.getString(ExternalMedia.PREF_MEDIA_TYPE, null);
|
|
||||||
if (source != null && mediaType != null) {
|
|
||||||
int position = pref.getInt(ExternalMedia.PREF_POSITION, 0);
|
|
||||||
long lastPlayedTime = pref.getLong(ExternalMedia.PREF_LAST_PLAYED_TIME, 0);
|
|
||||||
result = new ExternalMedia(source, MediaType.valueOf(mediaType),
|
|
||||||
position, lastPlayedTime);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class PlayableException extends Exception {
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
public PlayableException() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayableException(String detailMessage, Throwable throwable) {
|
|
||||||
super(detailMessage, throwable);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayableException(String detailMessage) {
|
|
||||||
super(detailMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayableException(Throwable throwable) {
|
|
||||||
super(throwable);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package de.danoeh.antennapod.core.util.playback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception thrown by {@link Playable} implementations.
|
||||||
|
*/
|
||||||
|
public class PlayableException extends Exception {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public PlayableException(String detailMessage) {
|
||||||
|
super(detailMessage);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
package de.danoeh.antennapod.core.util.playback;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.preference.PreferenceManager;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||||
|
import de.danoeh.antennapod.core.feed.MediaType;
|
||||||
|
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||||
|
import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides utility methods for Playable objects.
|
||||||
|
*/
|
||||||
|
public abstract class PlayableUtils {
|
||||||
|
|
||||||
|
private static final String TAG = "PlayableUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restores a playable object from a sharedPreferences file. This method might load data from the database,
|
||||||
|
* depending on the type of playable that was restored.
|
||||||
|
*
|
||||||
|
* @return The restored Playable object
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public static Playable createInstanceFromPreferences(@NonNull Context context) {
|
||||||
|
long currentlyPlayingMedia = PlaybackPreferences.getCurrentlyPlayingMediaType();
|
||||||
|
if (currentlyPlayingMedia != PlaybackPreferences.NO_MEDIA_PLAYING) {
|
||||||
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
|
||||||
|
return PlayableUtils.createInstanceFromPreferences((int) currentlyPlayingMedia, prefs);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restores a playable object from a sharedPreferences file. This method might load data from the database,
|
||||||
|
* depending on the type of playable that was restored.
|
||||||
|
*
|
||||||
|
* @param type An integer that represents the type of the Playable object
|
||||||
|
* that is restored.
|
||||||
|
* @param pref The SharedPreferences file from which the Playable object
|
||||||
|
* is restored
|
||||||
|
* @return The restored Playable object
|
||||||
|
*/
|
||||||
|
private static Playable createInstanceFromPreferences(int type, SharedPreferences pref) {
|
||||||
|
Playable result;
|
||||||
|
// ADD new Playable types here:
|
||||||
|
switch (type) {
|
||||||
|
case FeedMedia.PLAYABLE_TYPE_FEEDMEDIA:
|
||||||
|
result = createFeedMediaInstance(pref);
|
||||||
|
break;
|
||||||
|
case ExternalMedia.PLAYABLE_TYPE_EXTERNAL_MEDIA:
|
||||||
|
result = createExternalMediaInstance(pref);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
result = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (result == null) {
|
||||||
|
Log.e(TAG, "Could not restore Playable object from preferences");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Playable createFeedMediaInstance(SharedPreferences pref) {
|
||||||
|
Playable result = null;
|
||||||
|
long mediaId = pref.getLong(FeedMedia.PREF_MEDIA_ID, -1);
|
||||||
|
if (mediaId != -1) {
|
||||||
|
result = DBReader.getFeedMedia(mediaId);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Playable createExternalMediaInstance(SharedPreferences pref) {
|
||||||
|
Playable result = null;
|
||||||
|
String source = pref.getString(ExternalMedia.PREF_SOURCE_URL, null);
|
||||||
|
String mediaType = pref.getString(ExternalMedia.PREF_MEDIA_TYPE, null);
|
||||||
|
if (source != null && mediaType != null) {
|
||||||
|
int position = pref.getInt(ExternalMedia.PREF_POSITION, 0);
|
||||||
|
long lastPlayedTime = pref.getLong(ExternalMedia.PREF_LAST_PLAYED_TIME, 0);
|
||||||
|
result = new ExternalMedia(source, MediaType.valueOf(mediaType),
|
||||||
|
position, lastPlayedTime);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
@ -28,7 +28,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
|
|||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackServiceMediaPlayer;
|
import de.danoeh.antennapod.core.service.playback.PlaybackServiceMediaPlayer;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
||||||
import de.danoeh.antennapod.core.util.playback.Playable.PlayableUtils;
|
|
||||||
import de.danoeh.antennapod.ui.common.ThemeUtils;
|
import de.danoeh.antennapod.ui.common.ThemeUtils;
|
||||||
import io.reactivex.Maybe;
|
import io.reactivex.Maybe;
|
||||||
import io.reactivex.MaybeOnSubscribe;
|
import io.reactivex.MaybeOnSubscribe;
|
||||||
|
@ -8,6 +8,7 @@ import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
|||||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
||||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
import de.danoeh.antennapod.core.util.playback.Playable;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableUtils;
|
||||||
|
|
||||||
public class WidgetUpdaterJobService extends SafeJobIntentService {
|
public class WidgetUpdaterJobService extends SafeJobIntentService {
|
||||||
private static final int JOB_ID = -17001;
|
private static final int JOB_ID = -17001;
|
||||||
@ -22,7 +23,7 @@ public class WidgetUpdaterJobService extends SafeJobIntentService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onHandleWork(@NonNull Intent intent) {
|
protected void onHandleWork(@NonNull Intent intent) {
|
||||||
Playable media = Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext());
|
Playable media = PlayableUtils.createInstanceFromPreferences(getApplicationContext());
|
||||||
if (media != null) {
|
if (media != null) {
|
||||||
WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(media, PlayerStatus.STOPPED,
|
WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(media, PlayerStatus.STOPPED,
|
||||||
media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media),
|
media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media),
|
||||||
|
@ -10,6 +10,7 @@ import com.google.android.gms.cast.MediaInfo;
|
|||||||
import com.google.android.gms.cast.MediaMetadata;
|
import com.google.android.gms.cast.MediaMetadata;
|
||||||
import com.google.android.gms.common.images.WebImage;
|
import com.google.android.gms.common.images.WebImage;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableException;
|
||||||
import de.danoeh.antennapod.core.util.playback.RemoteMedia;
|
import de.danoeh.antennapod.core.util.playback.RemoteMedia;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -93,7 +94,7 @@ public class CastUtils {
|
|||||||
MediaMetadata metadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_GENERIC);
|
MediaMetadata metadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_GENERIC);
|
||||||
try{
|
try{
|
||||||
media.loadMetadata();
|
media.loadMetadata();
|
||||||
} catch (Playable.PlayableException e) {
|
} catch (PlayableException e) {
|
||||||
Log.e(TAG, "Unable to load FeedMedia metadata", e);
|
Log.e(TAG, "Unable to load FeedMedia metadata", e);
|
||||||
}
|
}
|
||||||
FeedItem feedItem = media.getItem();
|
FeedItem feedItem = media.getItem();
|
||||||
@ -202,7 +203,7 @@ public class CastUtils {
|
|||||||
} else {
|
} else {
|
||||||
Log.d(TAG, "FeedMedia object obtained does NOT match the MediaInfo provided. id=" + mediaId);
|
Log.d(TAG, "FeedMedia object obtained does NOT match the MediaInfo provided. id=" + mediaId);
|
||||||
}
|
}
|
||||||
} catch (Playable.PlayableException e) {
|
} catch (PlayableException e) {
|
||||||
Log.e(TAG, "Unable to load FeedMedia metadata to compare with MediaInfo", e);
|
Log.e(TAG, "Unable to load FeedMedia metadata to compare with MediaInfo", e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -28,6 +28,7 @@ import de.danoeh.antennapod.core.cast.CastConsumer;
|
|||||||
import de.danoeh.antennapod.core.cast.CastManager;
|
import de.danoeh.antennapod.core.cast.CastManager;
|
||||||
import de.danoeh.antennapod.core.cast.CastUtils;
|
import de.danoeh.antennapod.core.cast.CastUtils;
|
||||||
import de.danoeh.antennapod.core.cast.DefaultCastConsumer;
|
import de.danoeh.antennapod.core.cast.DefaultCastConsumer;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlayableException;
|
||||||
import de.danoeh.antennapod.core.util.playback.RemoteMedia;
|
import de.danoeh.antennapod.core.util.playback.RemoteMedia;
|
||||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.core.feed.MediaType;
|
import de.danoeh.antennapod.core.feed.MediaType;
|
||||||
@ -360,7 +361,7 @@ public class RemotePSMP extends PlaybackServiceMediaPlayer {
|
|||||||
if (prepareImmediately) {
|
if (prepareImmediately) {
|
||||||
prepare();
|
prepare();
|
||||||
}
|
}
|
||||||
} catch (Playable.PlayableException e) {
|
} catch (PlayableException e) {
|
||||||
Log.e(TAG, "Error while loading media metadata", e);
|
Log.e(TAG, "Error while loading media metadata", e);
|
||||||
setPlayerStatus(PlayerStatus.STOPPED, null);
|
setPlayerStatus(PlayerStatus.STOPPED, null);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user