summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/layout-land/mediaplayer_activity.xml8
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/de/danoeh/antennapod/activity/AudioplayerActivity.java10
-rw-r--r--src/de/danoeh/antennapod/activity/MediaplayerActivity.java8
-rw-r--r--src/de/danoeh/antennapod/activity/VideoplayerActivity.java20
-rw-r--r--src/de/danoeh/antennapod/service/PlaybackService.java21
6 files changed, 65 insertions, 3 deletions
diff --git a/res/layout-land/mediaplayer_activity.xml b/res/layout-land/mediaplayer_activity.xml
index dced89451..f44ee05f9 100644
--- a/res/layout-land/mediaplayer_activity.xml
+++ b/res/layout-land/mediaplayer_activity.xml
@@ -8,6 +8,14 @@
android:id="@+id/videoview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
+
+ <ProgressBar
+ android:id="@+id/progressIndicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:visibility="invisible"
+ android:indeterminateOnly="true" />
<!-- Mediaplayer controls -->
<LinearLayout
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 092f52c13..b8c80f3c7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -168,6 +168,7 @@
<string name="best_rating_label">Best rating</string>
<string name="add_feed_label">Add feed</string>
<string name="miro_feed_added">Feed is being added</string>
+ <string name="player_buffering_msg">Buffering</string>
</resources> \ No newline at end of file
diff --git a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java
index e85dac186..5144a40cf 100644
--- a/src/de/danoeh/antennapod/activity/AudioplayerActivity.java
+++ b/src/de/danoeh/antennapod/activity/AudioplayerActivity.java
@@ -186,4 +186,14 @@ public class AudioplayerActivity extends MediaplayerActivity {
}
}
+ @Override
+ protected void onBufferStart() {
+ postStatusMsg(R.string.player_buffering_msg);
+ }
+
+ @Override
+ protected void onBufferEnd() {
+ clearStatusMsg();
+ }
+
}
diff --git a/src/de/danoeh/antennapod/activity/MediaplayerActivity.java b/src/de/danoeh/antennapod/activity/MediaplayerActivity.java
index be0179e64..5c844d317 100644
--- a/src/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/src/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -127,6 +127,8 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity imple
* not the correct one for the current activity.
*/
protected abstract void onReloadNotification(int notificationCode);
+ protected abstract void onBufferStart();
+ protected abstract void onBufferEnd();
protected BroadcastReceiver notificationReceiver = new BroadcastReceiver() {
@@ -162,6 +164,12 @@ public abstract class MediaplayerActivity extends SherlockFragmentActivity imple
case PlaybackService.NOTIFICATION_TYPE_SLEEPTIMER_UPDATE:
invalidateOptionsMenu();
break;
+ case PlaybackService.NOTIFICATION_TYPE_BUFFER_START:
+ onBufferStart();
+ break;
+ case PlaybackService.NOTIFICATION_TYPE_BUFFER_END:
+ onBufferEnd();
+ break;
}
} else {
diff --git a/src/de/danoeh/antennapod/activity/VideoplayerActivity.java b/src/de/danoeh/antennapod/activity/VideoplayerActivity.java
index 7bf87448e..87d0b3a7b 100644
--- a/src/de/danoeh/antennapod/activity/VideoplayerActivity.java
+++ b/src/de/danoeh/antennapod/activity/VideoplayerActivity.java
@@ -16,6 +16,7 @@ import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
+import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.VideoView;
@@ -30,6 +31,7 @@ public class VideoplayerActivity extends MediaplayerActivity implements
private LinearLayout videoOverlay;
private VideoView videoview;
+ private ProgressBar progressIndicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -64,6 +66,7 @@ public class VideoplayerActivity extends MediaplayerActivity implements
super.setupGUI();
videoOverlay = (LinearLayout) findViewById(R.id.overlay);
videoview = (VideoView) findViewById(R.id.videoview);
+ progressIndicator = (ProgressBar) findViewById(R.id.progressIndicator);
videoview.getHolder().addCallback(this);
videoview.setOnClickListener(playbuttonListener);
videoview.setOnTouchListener(onVideoviewTouched);
@@ -85,14 +88,15 @@ public class VideoplayerActivity extends MediaplayerActivity implements
@Override
protected void postStatusMsg(int resId) {
- // TODO Auto-generated method stub
+ if (resId == R.string.player_preparing_msg) {
+ progressIndicator.setVisibility(View.VISIBLE);
+ }
}
@Override
protected void clearStatusMsg() {
- // TODO Auto-generated method stub
-
+ progressIndicator.setVisibility(View.INVISIBLE);
}
View.OnTouchListener onVideoviewTouched = new View.OnTouchListener() {
@@ -229,6 +233,16 @@ public class VideoplayerActivity extends MediaplayerActivity implements
super.onStopTrackingTouch(seekBar);
setupVideoControlsToggler();
}
+
+ @Override
+ protected void onBufferStart() {
+ progressIndicator.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ protected void onBufferEnd() {
+ progressIndicator.setVisibility(View.INVISIBLE);
+ }
diff --git a/src/de/danoeh/antennapod/service/PlaybackService.java b/src/de/danoeh/antennapod/service/PlaybackService.java
index 53bed27ca..d65b0257a 100644
--- a/src/de/danoeh/antennapod/service/PlaybackService.java
+++ b/src/de/danoeh/antennapod/service/PlaybackService.java
@@ -79,6 +79,8 @@ public class PlaybackService extends Service {
public static final int NOTIFICATION_TYPE_RELOAD = 3;
/** The state of the sleeptimer changed. */
public static final int NOTIFICATION_TYPE_SLEEPTIMER_UPDATE = 4;
+ public static final int NOTIFICATION_TYPE_BUFFER_START = 5;
+ public static final int NOTIFICATION_TYPE_BUFFER_END = 6;
/** Is true if service is running. */
public static boolean isRunning = false;
@@ -171,6 +173,7 @@ public class PlaybackService extends Service {
player.setOnSeekCompleteListener(onSeekCompleteListener);
player.setOnErrorListener(onErrorListener);
player.setOnBufferingUpdateListener(onBufferingUpdateListener);
+ player.setOnInfoListener(onInfoListener);
mediaButtonReceiver = new ComponentName(getPackageName(),
MediaButtonReceiver.class.getName());
audioManager.registerMediaButtonEventReceiver(mediaButtonReceiver);
@@ -356,6 +359,7 @@ public class PlaybackService extends Service {
player.setOnSeekCompleteListener(onSeekCompleteListener);
player.setOnErrorListener(onErrorListener);
player.setOnBufferingUpdateListener(onBufferingUpdateListener);
+ player.setOnInfoListener(onInfoListener);
status = PlayerStatus.STOPPED;
setupMediaplayer();
}
@@ -446,6 +450,23 @@ public class PlaybackService extends Service {
}
};
+ private MediaPlayer.OnInfoListener onInfoListener = new MediaPlayer.OnInfoListener() {
+
+ @Override
+ public boolean onInfo(MediaPlayer mp, int what, int extra) {
+ switch (what) {
+ case MediaPlayer.MEDIA_INFO_BUFFERING_START:
+ sendNotificationBroadcast(NOTIFICATION_TYPE_BUFFER_START, 0);
+ return true;
+ case MediaPlayer.MEDIA_INFO_BUFFERING_END:
+ sendNotificationBroadcast(NOTIFICATION_TYPE_BUFFER_END, 0);
+ return true;
+ default:
+ return false;
+ }
+ }
+ };
+
private MediaPlayer.OnErrorListener onErrorListener = new MediaPlayer.OnErrorListener() {
private static final String TAG = "PlaybackService.onErrorListener";