summaryrefslogtreecommitdiff
path: root/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java
blob: 598544a0c52ca62977bfd0ae4e26f5da9ef0ae0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package de.danoeh.antennapod.core.widget;

import android.content.Context;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.core.app.SafeJobIntentService;
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
import de.danoeh.antennapod.model.playback.Playable;
import de.danoeh.antennapod.core.util.playback.PlayableUtils;
import de.danoeh.antennapod.playback.base.PlayerStatus;

public class WidgetUpdaterJobService extends SafeJobIntentService {
    private static final int JOB_ID = -17001;

    /**
     * Loads the current media from the database and updates the widget in a background job.
     */
    public static void performBackgroundUpdate(Context context) {
        enqueueWork(context, WidgetUpdaterJobService.class,
                WidgetUpdaterJobService.JOB_ID, new Intent(context, WidgetUpdaterJobService.class));
    }

    @Override
    protected void onHandleWork(@NonNull Intent intent) {
        Playable media = PlayableUtils.createInstanceFromPreferences(getApplicationContext());
        if (media != null) {
            WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(media, PlayerStatus.STOPPED,
                    media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media)));
        } else {
            WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(PlayerStatus.STOPPED));
        }
    }
}