Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/podcast/YoutubePlaybackService.java')
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/podcast/YoutubePlaybackService.java163
1 files changed, 163 insertions, 0 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/podcast/YoutubePlaybackService.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/podcast/YoutubePlaybackService.java
new file mode 100644
index 00000000..29e3c87f
--- /dev/null
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/podcast/YoutubePlaybackService.java
@@ -0,0 +1,163 @@
+package de.luhmer.owncloudnewsreader.services.podcast;
+
+import android.content.Context;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.google.android.youtube.player.YouTubePlayer;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import de.luhmer.owncloudnewsreader.model.MediaItem;
+
+/**
+ * Created by david on 31.01.17.
+ */
+
+public class YoutubePlaybackService extends PlaybackService {
+
+ private static final String TAG = YoutubePlaybackService.class.getCanonicalName();
+ YouTubePlayer youTubePlayer;
+ Context context;
+
+ public YoutubePlaybackService(Context context, PodcastStatusListener podcastStatusListener, MediaItem mediaItem) {
+ super(context, podcastStatusListener, mediaItem);
+ this.context = context;
+ setStatus(Status.PREPARING);
+ }
+
+ @Override
+ public void destroy() {
+ if(youTubePlayer != null) {
+ youTubePlayer.pause();
+ youTubePlayer = null;
+ }
+ }
+
+ @Override
+ public void play() {
+ if(youTubePlayer != null) {
+ youTubePlayer.play();
+ }
+ }
+
+ @Override
+ public void pause() {
+ if(youTubePlayer != null) {
+ youTubePlayer.pause();
+ }
+ }
+
+ public void seekTo(double percent) {
+ if(youTubePlayer != null) {
+ double totalDuration = getTotalDuration();
+ int position = (int) ((totalDuration / 100d) * percent);
+ youTubePlayer.seekToMillis(position);
+ }
+ }
+ public int getCurrentDuration() {
+ if(youTubePlayer != null) {
+ return youTubePlayer.getCurrentTimeMillis();
+ }
+ return 0;
+ }
+
+ public int getTotalDuration() {
+ if(youTubePlayer != null) {
+ return youTubePlayer.getDurationMillis();
+ }
+ return 0;
+ }
+
+ @Override
+ public VideoType getVideoType() {
+ return VideoType.YouTube;
+ }
+
+ public void setYoutubePlayer(YouTubePlayer youTubePlayer, boolean wasRestored) {
+ this.youTubePlayer = youTubePlayer;
+ youTubePlayer.setPlaybackEventListener(youtubePlaybackEventListener);
+ youTubePlayer.setPlayerStateChangeListener(youtubePlayerStateChangeListener);
+
+ youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
+
+ // Start buffering
+ if (!wasRestored) {
+ Pattern youtubeIdPattern = Pattern.compile(".*?v=([^&]*)");
+ Matcher matcher = youtubeIdPattern.matcher(getMediaItem().link);
+ if(matcher.matches()) {
+ String youtubeId = matcher.group(1);
+ youTubePlayer.cueVideo(youtubeId);
+ } else {
+ Toast.makeText(context, "Cannot find youtube video id", Toast.LENGTH_LONG).show();
+ setStatus(Status.FAILED);
+ }
+ }
+ }
+
+
+ YouTubePlayer.PlayerStateChangeListener youtubePlayerStateChangeListener = new YouTubePlayer.PlayerStateChangeListener() {
+ @Override
+ public void onLoading() {
+ Log.d(TAG, "onLoading() called");
+ }
+
+ @Override
+ public void onLoaded(String s) {
+ Log.d(TAG, "onLoaded() called with: s = [" + s + "]");
+ youTubePlayer.play();
+ }
+
+ @Override
+ public void onAdStarted() {
+ Log.d(TAG, "onAdStarted() called");
+ }
+
+ @Override
+ public void onVideoStarted() {
+ Log.d(TAG, "onVideoStarted() called");
+ }
+
+ @Override
+ public void onVideoEnded() {
+ Log.d(TAG, "onVideoEnded() called");
+ }
+
+ @Override
+ public void onError(YouTubePlayer.ErrorReason errorReason) {
+ Log.d(TAG, "onError() called with: errorReason = [" + errorReason + "]");
+ }
+ };
+
+
+ YouTubePlayer.PlaybackEventListener youtubePlaybackEventListener = new YouTubePlayer.PlaybackEventListener() {
+ @Override
+ public void onPlaying() {
+ Log.d(TAG, "onPlaying() called");
+ setStatus(Status.PLAYING);
+ }
+
+ @Override
+ public void onPaused() {
+ Log.d(TAG, "onPaused() called");
+ setStatus(Status.PAUSED);
+ }
+
+ @Override
+ public void onStopped() {
+ Log.d(TAG, "onStopped() called");
+ setStatus(Status.PAUSED);
+ }
+
+ @Override
+ public void onBuffering(boolean b) {
+ Log.d(TAG, "onBuffering() called with: b = [" + b + "]");
+ }
+
+ @Override
+ public void onSeekTo(int i) {
+ Log.d(TAG, "onSeekTo() called with: i = [" + i + "]");
+ }
+ };
+}