diff options
author | David Development <david-dev@live.de> | 2014-07-04 13:26:39 +0400 |
---|---|---|
committer | David Development <david-dev@live.de> | 2014-07-04 13:26:39 +0400 |
commit | 99a5b5dd417f03b749a5dedb5ad3f52403491a13 (patch) | |
tree | 9acc3399db3552b5c2c4641d7896ca330395cf6c /News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services | |
parent | 63d2c5700f9451722a244ac9969de766a60be6e6 (diff) |
Update podcast support
Diffstat (limited to 'News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services')
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/PodcastPlaybackService.java (renamed from News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/AudioPodcastService.java) | 87 |
1 files changed, 67 insertions, 20 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/AudioPodcastService.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/PodcastPlaybackService.java index 9fe56b8a..7a656ba2 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/AudioPodcastService.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/PodcastPlaybackService.java @@ -5,17 +5,19 @@ import android.content.Intent; import android.media.MediaPlayer; import android.os.Handler; import android.os.IBinder; +import android.view.SurfaceHolder; import java.io.IOException; import de.greenrobot.event.EventBus; import de.luhmer.owncloudnewsreader.events.podcast.OpenAudioPodcastEvent; +import de.luhmer.owncloudnewsreader.events.podcast.RegisterVideoOutput; import de.luhmer.owncloudnewsreader.events.podcast.TogglePlayerStateEvent; import de.luhmer.owncloudnewsreader.events.podcast.UpdatePodcastStatusEvent; import de.luhmer.owncloudnewsreader.events.podcast.WindPodcast; import de.luhmer.owncloudnewsreader.view.PodcastNotification; -public class AudioPodcastService extends Service { +public class PodcastPlaybackService extends Service { PodcastNotification podcastNotification; @@ -26,17 +28,27 @@ public class AudioPodcastService extends Service { super.onCreate(); } - public AudioPodcastService() { + public PodcastPlaybackService() { mediaPlayer = new MediaPlayer(); mHandler = new Handler(); eventBus = EventBus.getDefault(); eventBus.register(this); + + + mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mediaPlayer) { + play(); + isPreparing = false; + } + }); + mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { - mHandler.removeCallbacks(mUpdateTimeTask); + pause();//Send the over signal } }); @@ -44,6 +56,7 @@ public class AudioPodcastService extends Service { //openFile("/sdcard/Music/#Musik/Finest Tunes/Netsky - Running Low (Ft. Beth Ditto).mp3"); } + @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. @@ -73,22 +86,6 @@ public class AudioPodcastService extends Service { mediaPlayer.reset(); mediaPlayer.setDataSource(pathToFile); mediaPlayer.prepareAsync(); - - mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { - @Override - public void onPrepared(MediaPlayer mediaPlayer) { - play(); - isPreparing = false; - } - }); - - mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { - @Override - public void onCompletion(MediaPlayer mediaPlayer) { - pause();//Send the over signal - } - }); - } catch (IOException e) { e.printStackTrace(); isPreparing = false; @@ -126,6 +123,13 @@ public class AudioPodcastService extends Service { openFile(event.pathToFile, event.mediaTitle); } + public void onEvent(RegisterVideoOutput videoOutput) { + if(mediaPlayer != null) { + //getHolder().addCallback(videoOutput); + videoOutput.surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + } + } + @@ -137,7 +141,9 @@ public class AudioPodcastService extends Service { } public void pause() { - mediaPlayer.pause(); + if(mediaPlayer.isPlaying()) + mediaPlayer.pause(); + mHandler.removeCallbacks(mUpdateTimeTask); sendMediaStatus(); @@ -167,4 +173,45 @@ public class AudioPodcastService extends Service { eventBus.post(audioPodcastEvent); } + + + + SurfaceHolder.Callback mSHCallback = new SurfaceHolder.Callback() + { + public void surfaceChanged(SurfaceHolder holder, int format, + int w, int h) + { + mSurfaceWidth = w; + mSurfaceHeight = h; + if (mIsPrepared && mVideoWidth == w && mVideoHeight == h) { + if (mSeekWhenPrepared != 0) { + mMediaPlayer.seekTo(mSeekWhenPrepared); + } + mMediaPlayer.start(); + if (mMediaController != null) { + mMediaController.show(); + } + } + } + + public void surfaceCreated(SurfaceHolder holder) + { + mSurfaceHolder = holder; + openVideo(); + } + + public void surfaceDestroyed(SurfaceHolder holder) + { + // after we return from this we can't use the surface any more + mSurfaceHolder = null; + if (mMediaController != null) mMediaController.hide(); + if (mMediaPlayer != null) { + mMediaPlayer.reset(); + mMediaPlayer.release(); + mMediaPlayer = null; + } + } + }; + + } |