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:
Daniel Schaal 2015-07-29 06:12:59 +02:00
parent 8387d057a1
commit de94c70b1e
5 changed files with 26 additions and 39 deletions

View file

@ -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:

View file

@ -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);
}
});
}

View file

@ -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;
}

View file

@ -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;

View file

@ -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;
}