Don't check if service is running when starting a podcast
Add base class MediaItem to PodcastItem and TTSItem. If the service is already running, onStartCommand will be called again when startService is called and the new MediaItem will be started. Fixes a NPE when a podcast is started when the service is already running.
This commit is contained in:
parent
8387d057a1
commit
de94c70b1e
5 changed files with 26 additions and 39 deletions
|
@ -448,7 +448,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
|
|||
|
||||
case R.id.action_tts:
|
||||
TTSItem ttsItem = new TTSItem(rssItem.getId(), rssItem.getTitle(), rssItem.getTitle() + "\n\n " + Html.fromHtml(rssItem.getBody()).toString(), rssItem.getFeed().getFaviconUrl());
|
||||
openTTSItem(ttsItem);
|
||||
openMediaItem(ttsItem);
|
||||
break;
|
||||
|
||||
case R.id.action_ShareItem:
|
||||
|
|
|
@ -39,6 +39,7 @@ import de.luhmer.owncloudnewsreader.events.podcast.UpdatePodcastStatusEvent;
|
|||
import de.luhmer.owncloudnewsreader.events.podcast.VideoDoubleClicked;
|
||||
import de.luhmer.owncloudnewsreader.helper.SizeAnimator;
|
||||
import de.luhmer.owncloudnewsreader.interfaces.IPlayPausePodcastClicked;
|
||||
import de.luhmer.owncloudnewsreader.model.MediaItem;
|
||||
import de.luhmer.owncloudnewsreader.model.PodcastItem;
|
||||
import de.luhmer.owncloudnewsreader.model.TTSItem;
|
||||
import de.luhmer.owncloudnewsreader.services.PodcastDownloadService;
|
||||
|
@ -55,7 +56,7 @@ public class PodcastFragmentActivity extends AppCompatActivity implements IPlayP
|
|||
boolean mBound = false;
|
||||
|
||||
|
||||
private static final String TAG = "PodcastSherlockFragmentActivity";
|
||||
private static final String TAG = "PodcastFragmentActivity";
|
||||
private PodcastFragment mPodcastFragment;
|
||||
|
||||
private EventBus eventBus;
|
||||
|
@ -501,30 +502,13 @@ public class PodcastFragmentActivity extends AppCompatActivity implements IPlayP
|
|||
return px;
|
||||
}
|
||||
|
||||
private void openPodcast(PodcastItem podcastItem) {
|
||||
// Bind to LocalService
|
||||
protected void openMediaItem(MediaItem mediaItem) {
|
||||
Intent intent = new Intent(this, PodcastPlaybackService.class);
|
||||
if(!isMyServiceRunning(PodcastPlaybackService.class)) {
|
||||
intent.putExtra(PodcastPlaybackService.PODCAST_ITEM, podcastItem);
|
||||
startService(intent);
|
||||
} else {
|
||||
mPodcastPlaybackService.openFile(podcastItem);
|
||||
loadPodcastFavIcon();
|
||||
}
|
||||
|
||||
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
||||
protected void openTTSItem(TTSItem ttsItem) {
|
||||
// Bind to LocalService
|
||||
Intent intent = new Intent(this, PodcastPlaybackService.class);
|
||||
if(!isMyServiceRunning(PodcastPlaybackService.class)) {
|
||||
intent.putExtra(PodcastPlaybackService.TTS_ITEM, ttsItem);
|
||||
startService(intent);
|
||||
} else {
|
||||
mPodcastPlaybackService.openTtsFeed(ttsItem);
|
||||
loadPodcastFavIcon();
|
||||
}
|
||||
if(mediaItem instanceof TTSItem)
|
||||
intent.putExtra(PodcastPlaybackService.TTS_ITEM, mediaItem);
|
||||
else
|
||||
intent.putExtra(PodcastPlaybackService.PODCAST_ITEM, mediaItem);
|
||||
startService(intent);
|
||||
|
||||
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
@ -537,7 +521,7 @@ public class PodcastFragmentActivity extends AppCompatActivity implements IPlayP
|
|||
if(file.exists()) {
|
||||
podcastItem.link = file.getAbsolutePath();
|
||||
|
||||
openPodcast(podcastItem);
|
||||
openMediaItem(podcastItem);
|
||||
} else if(!podcastItem.offlineCached) {
|
||||
|
||||
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this)
|
||||
|
@ -558,7 +542,7 @@ public class PodcastFragmentActivity extends AppCompatActivity implements IPlayP
|
|||
alertDialog.setPositiveButton("Stream", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
openPodcast(podcastItem);
|
||||
openMediaItem(podcastItem);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package de.luhmer.owncloudnewsreader.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Created by daniel on 29.07.15.
|
||||
*/
|
||||
public abstract class MediaItem implements Serializable {
|
||||
public long itemId;
|
||||
public String title;
|
||||
public String favIcon;
|
||||
public String link;
|
||||
}
|
|
@ -1,11 +1,9 @@
|
|||
package de.luhmer.owncloudnewsreader.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Created by David on 21.06.2014.
|
||||
*/
|
||||
public class PodcastItem implements Serializable {
|
||||
public class PodcastItem extends MediaItem {
|
||||
|
||||
public PodcastItem() {
|
||||
|
||||
|
@ -21,12 +19,8 @@ public class PodcastItem implements Serializable {
|
|||
this.isVideoPodcast = isVideoPodcast;
|
||||
}
|
||||
|
||||
public long itemId;
|
||||
public String title;
|
||||
public String link;
|
||||
public String mimeType;
|
||||
public boolean offlineCached;
|
||||
public String favIcon;
|
||||
public boolean isVideoPodcast;
|
||||
|
||||
public Integer downloadProgress;
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.io.Serializable;
|
|||
/**
|
||||
* Created by David on 10.01.2015.
|
||||
*/
|
||||
public class TTSItem implements Serializable {
|
||||
public class TTSItem extends MediaItem {
|
||||
|
||||
public TTSItem() {
|
||||
|
||||
|
@ -18,9 +18,5 @@ public class TTSItem implements Serializable {
|
|||
this.favIcon = favIcon;
|
||||
}
|
||||
|
||||
public long itemId;
|
||||
public String title;
|
||||
public String link;
|
||||
public String text;
|
||||
public String favIcon;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue