summaryrefslogtreecommitdiff
path: root/src/de/podfetcher/service
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/podfetcher/service')
-rw-r--r--src/de/podfetcher/service/PlaybackService.java35
-rw-r--r--src/de/podfetcher/service/PlayerStatus.java5
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
+}