diff options
Diffstat (limited to 'src/de/podfetcher/service')
-rw-r--r-- | src/de/podfetcher/service/PlaybackService.java | 35 | ||||
-rw-r--r-- | src/de/podfetcher/service/PlayerStatus.java | 5 |
2 files changed, 39 insertions, 1 deletions
diff --git a/src/de/podfetcher/service/PlaybackService.java b/src/de/podfetcher/service/PlaybackService.java index a4043f6f4..4d02db308 100644 --- a/src/de/podfetcher/service/PlaybackService.java +++ b/src/de/podfetcher/service/PlaybackService.java @@ -7,6 +7,7 @@ import android.content.Intent; import android.media.MediaPlayer; import android.util.Log; import android.net.Uri; +import android.os.Binder; import android.os.IBinder; import de.podfetcher.feed.FeedMedia; @@ -22,11 +23,23 @@ public class PlaybackService extends Service { /** Contains the id of the Feed object of the FeedMedia. */ public static final String EXTRA_FEED_ID = "extra.de.podfetcher.service.feedId"; + public static final String ACTION_PLAYER_STATUS_CHANGED = + "action.de.podfetcher.service.playerStatusChanged"; + private MediaPlayer player; private FeedMedia media; private Feed feed; private FeedManager manager; + private PlayerStatus status; + private final IBinder mBinder = new LocalBinder(); + + public class LocalBinder extends Binder { + public PlaybackService getService() { + return PlaybackService.this; + } + } + @Override public void onCreate() { super.onCreate(); @@ -37,7 +50,7 @@ public class PlaybackService extends Service { @Override public IBinder onBind(Intent intent) { - return null; + return mBinder; } @Override @@ -52,7 +65,9 @@ public class PlaybackService extends Service { } else { feed = manager.getFeed(feedId); media = manager.getFeedMedia(mediaId, feed); + player = MediaPlayer.create(this, Uri.fromFile(new File(media.getFile_url()))); + setStatus(PlayerStatus.PREPARING); player.setOnPreparedListener(preparedListener); Log.d(TAG, "Preparing to play file"); //player.prepareAsync(); @@ -65,7 +80,25 @@ public class PlaybackService extends Service { public void onPrepared(MediaPlayer mp) { Log.d(TAG, "Resource prepared"); mp.start(); + setStatus(PlayerStatus.PLAYING); } }; + + private void setStatus(PlayerStatus newStatus) { + status = newStatus; + sendBroadcast(new Intent(ACTION_PLAYER_STATUS_CHANGED)); + } + + public PlayerStatus getStatus() { + return status; + } + + public FeedMedia getMedia() { + return media; + } + + public MediaPlayer getPlayer() { + return player; + } } diff --git a/src/de/podfetcher/service/PlayerStatus.java b/src/de/podfetcher/service/PlayerStatus.java new file mode 100644 index 000000000..8f1d1d696 --- /dev/null +++ b/src/de/podfetcher/service/PlayerStatus.java @@ -0,0 +1,5 @@ +package de.podfetcher.service; + +public enum PlayerStatus { + ERROR, PREPARING, PAUSED, PLAYING, STOPPED +} |