diff options
Diffstat (limited to 'src/de/danoeh/antennapod')
-rw-r--r-- | src/de/danoeh/antennapod/receiver/PlayerWidget.java | 14 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/service/PlaybackService.java | 7 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/service/PlayerWidgetService.java | 28 |
3 files changed, 33 insertions, 16 deletions
diff --git a/src/de/danoeh/antennapod/receiver/PlayerWidget.java b/src/de/danoeh/antennapod/receiver/PlayerWidget.java index 5eb1f8afe..b1029a239 100644 --- a/src/de/danoeh/antennapod/receiver/PlayerWidget.java +++ b/src/de/danoeh/antennapod/receiver/PlayerWidget.java @@ -11,25 +11,25 @@ import android.util.Log; public class PlayerWidget extends AppWidgetProvider { private static final String TAG = "PlayerWidget"; public static final String FORCE_WIDGET_UPDATE = "de.danoeh.antennapod.FORCE_WIDGET_UPDATE"; + public static final String STOP_WIDGET_UPDATE = "de.danoeh.antennapod.STOP_WIDGET_UPDATE"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(FORCE_WIDGET_UPDATE)) { startUpdate(context); + } else if (intent.getAction().equals(STOP_WIDGET_UPDATE)) { + stopUpdate(context); } } - - @Override public void onEnabled(Context context) { super.onEnabled(context); - if (AppConfig.DEBUG) Log.d(TAG, "Widget enabled"); + if (AppConfig.DEBUG) + Log.d(TAG, "Widget enabled"); } - - @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { @@ -40,4 +40,8 @@ public class PlayerWidget extends AppWidgetProvider { context.startService(new Intent(context, PlayerWidgetService.class)); } + private void stopUpdate(Context context) { + context.stopService(new Intent(context, PlayerWidgetService.class)); + } + } diff --git a/src/de/danoeh/antennapod/service/PlaybackService.java b/src/de/danoeh/antennapod/service/PlaybackService.java index b278012e5..e8b0f6d90 100644 --- a/src/de/danoeh/antennapod/service/PlaybackService.java +++ b/src/de/danoeh/antennapod/service/PlaybackService.java @@ -604,8 +604,8 @@ public class PlaybackService extends Service { positionSaver.cancel(true); } saveCurrentPosition(); - stopWidgetUpdater(); setStatus(PlayerStatus.PAUSED); + stopWidgetUpdater(); stopForeground(true); } } @@ -658,7 +658,7 @@ public class PlaybackService extends Service { updateWidget(); refreshRemoteControlClientState(); } - + /** Send ACTION_PLAYER_STATUS_CHANGED without changing the status attribute. */ private void postStatusUpdateIntent() { setStatus(status); @@ -728,6 +728,7 @@ public class PlaybackService extends Service { if (widgetUpdater != null) { widgetUpdater.cancel(true); } + sendBroadcast(new Intent(PlayerWidget.STOP_WIDGET_UPDATE)); } @SuppressLint("NewApi") @@ -1005,7 +1006,5 @@ public class PlaybackService extends Service { this.startWhenPrepared = startWhenPrepared; postStatusUpdateIntent(); } - - } diff --git a/src/de/danoeh/antennapod/service/PlayerWidgetService.java b/src/de/danoeh/antennapod/service/PlayerWidgetService.java index 424646074..2b2c6b590 100644 --- a/src/de/danoeh/antennapod/service/PlayerWidgetService.java +++ b/src/de/danoeh/antennapod/service/PlayerWidgetService.java @@ -34,11 +34,20 @@ public class PlayerWidgetService extends Service { @Override public void onCreate() { super.onCreate(); - if (AppConfig.DEBUG) Log.d(TAG, "Service created"); + if (AppConfig.DEBUG) + Log.d(TAG, "Service created"); isUpdating = false; } @Override + public void onDestroy() { + super.onDestroy(); + if (AppConfig.DEBUG) + Log.d(TAG, "Service is about to be destroyed"); + unbindService(mConnection); + } + + @Override public IBinder onBind(Intent intent) { return null; } @@ -55,14 +64,16 @@ public class PlayerWidgetService extends Service { isUpdating = false; } } else { - if (AppConfig.DEBUG) Log.d(TAG, - "Service was called while updating. Ignoring update request"); + if (AppConfig.DEBUG) + Log.d(TAG, + "Service was called while updating. Ignoring update request"); } return Service.START_NOT_STICKY; } private void updateViews() { - if (AppConfig.DEBUG) Log.d(TAG, "Updating widget views"); + if (AppConfig.DEBUG) + Log.d(TAG, "Updating widget views"); ComponentName playerWidget = new ComponentName(this, PlayerWidget.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); RemoteViews views = new RemoteViews(getPackageName(), @@ -88,7 +99,8 @@ public class PlayerWidgetService extends Service { views.setOnClickPendingIntent(R.id.butPlay, createMediaButtonIntent()); } else { - if (AppConfig.DEBUG) Log.d(TAG, "No media playing. Displaying defaultt views"); + if (AppConfig.DEBUG) + Log.d(TAG, "No media playing. Displaying defaultt views"); views.setViewVisibility(R.id.txtvProgress, View.INVISIBLE); views.setTextViewText(R.id.txtvTitle, this.getString(R.string.no_media_playing_label)); @@ -118,7 +130,8 @@ public class PlayerWidgetService extends Service { private ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { - if (AppConfig.DEBUG) Log.d(TAG, "Connection to service established"); + if (AppConfig.DEBUG) + Log.d(TAG, "Connection to service established"); playbackService = ((PlaybackService.LocalBinder) service) .getService(); updateViews(); @@ -128,7 +141,8 @@ public class PlayerWidgetService extends Service { @Override public void onServiceDisconnected(ComponentName name) { playbackService = null; - if (AppConfig.DEBUG) Log.d(TAG, "Disconnected from service"); + if (AppConfig.DEBUG) + Log.d(TAG, "Disconnected from service"); } }; |