summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorLee Yeong Khang <sindrosa.24@gmail.com>2014-12-11 19:54:58 +0900
committerLee Yeong Khang <sindrosa.24@gmail.com>2014-12-11 19:54:58 +0900
commite9ed796fd432f8bcd9b41f52c2777b00cadcbed8 (patch)
tree6ce9ef303eb846cf0a4c7d10259717a70be2a607 /core
parent9659c18d899349d9be1573fb9520defc7d3a19cd (diff)
downloadAntennaPod-e9ed796fd432f8bcd9b41f52c2777b00cadcbed8.zip
Combine play and pause button into 1
detailed in https://github.com/danieloeh/AntennaPod/issues/574
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java52
1 files changed, 22 insertions, 30 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index a5560e3fb..7df4af504 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -284,18 +284,13 @@ public class PlaybackService extends Service {
private void handleKeycode(int keycode) {
if (BuildConfig.DEBUG)
Log.d(TAG, "Handling keycode: " + keycode);
-
final PlaybackServiceMediaPlayer.PSMPInfo info = mediaPlayer.getPSMPInfo();
final PlayerStatus status = info.playerStatus;
switch (keycode) {
case KeyEvent.KEYCODE_HEADSETHOOK:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
if (status == PlayerStatus.PLAYING) {
- if (UserPreferences.isPersistNotify()) {
- mediaPlayer.pause(false, true);
- } else {
- mediaPlayer.pause(true, true);
- }
+ mediaPlayer.pause(false, true);
} else if (status == PlayerStatus.PAUSED || status == PlayerStatus.PREPARED) {
mediaPlayer.resume();
} else if (status == PlayerStatus.PREPARING) {
@@ -315,11 +310,7 @@ public class PlaybackService extends Service {
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
if (status == PlayerStatus.PLAYING) {
- if (UserPreferences.isPersistNotify()) {
- mediaPlayer.pause(false, true);
- } else {
- mediaPlayer.pause(true, true);
- }
+ mediaPlayer.pause(false, true);
}
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
@@ -333,7 +324,9 @@ public class PlaybackService extends Service {
case KeyEvent.KEYCODE_MEDIA_STOP:
if (status == PlayerStatus.PLAYING) {
mediaPlayer.pause(true, true);
+ started = false;
}
+
stopForeground(true); // gets rid of persistent notification
break;
default:
@@ -409,12 +402,8 @@ public class PlaybackService extends Service {
taskManager.cancelPositionSaver();
saveCurrentPosition(false, 0);
taskManager.cancelWidgetUpdater();
- if (UserPreferences.isPersistNotify() && android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- // do not remove notification on pause based on user pref and whether android version supports expanded notifications
- } else {
- // remove notifcation on pause
- stopForeground(true);
- }
+ setupNotification(newInfo);
+
break;
case STOPPED:
@@ -431,6 +420,7 @@ public class PlaybackService extends Service {
taskManager.startPositionSaver();
taskManager.startWidgetUpdater();
setupNotification(newInfo);
+ started = true;
break;
case ERROR:
writePlaybackPreferencesNoMediaPlaying();
@@ -734,8 +724,9 @@ public class PlaybackService extends Service {
PlaybackServiceMediaPlayer.PSMPInfo newInfo = mediaPlayer.getPSMPInfo();
final int smallIcon = ClientConfig.playbackServiceCallbacks.getNotificationIconResource(getApplicationContext());
- if (!isCancelled() && info.playerStatus == PlayerStatus.PLAYING
- && info.playable != null) {
+ if (!isCancelled() &&
+ started == true &&
+ info.playable != null) {
String contentText = info.playable.getFeedTitle();
String contentTitle = info.playable.getEpisodeTitle();
Notification notification = null;
@@ -775,14 +766,17 @@ public class PlaybackService extends Service {
.setContentIntent(pIntent)
.setLargeIcon(icon)
.setSmallIcon(smallIcon)
- .setPriority(UserPreferences.getNotifyPriority()) // set notification priority
- .addAction(android.R.drawable.ic_media_play, //play action
- getString(R.string.play_label),
- playButtonPendingIntent)
- .addAction(android.R.drawable.ic_media_pause, //pause action
- getString(R.string.pause_label),
- pauseButtonPendingIntent)
- .addAction(android.R.drawable.ic_menu_close_clear_cancel, // stop action
+ .setPriority(UserPreferences.getNotifyPriority()); // set notification priority
+ if(newInfo.playerStatus==PlayerStatus.PLAYING){
+ notificationBuilder.addAction(android.R.drawable.ic_media_pause, //pause action
+ getString(R.string.pause_label),
+ pauseButtonPendingIntent);
+ } else {
+ notificationBuilder.addAction(android.R.drawable.ic_media_play, //play action
+ getString(R.string.play_label),
+ playButtonPendingIntent);
+ }
+ notificationBuilder.addAction(android.R.drawable.ic_menu_close_clear_cancel, // stop action
getString(R.string.stop_label),
stopButtonPendingIntent);
notification = notificationBuilder.build();
@@ -795,9 +789,7 @@ public class PlaybackService extends Service {
.setSmallIcon(smallIcon);
notification = notificationBuilder.getNotification();
}
- if (newInfo.playerStatus == PlayerStatus.PLAYING) {
- startForeground(NOTIFICATION_ID, notification);
- }
+ startForeground(NOTIFICATION_ID, notification);
if (BuildConfig.DEBUG)
Log.d(TAG, "Notification set up");
}