package com.mbridge.msdk.playercommon.exoplayer2.offline; import android.app.Notification; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.util.Log; import com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadManager; import com.mbridge.msdk.playercommon.exoplayer2.scheduler.Requirements; import com.mbridge.msdk.playercommon.exoplayer2.scheduler.RequirementsWatcher; import com.mbridge.msdk.playercommon.exoplayer2.scheduler.Scheduler; import com.mbridge.msdk.playercommon.exoplayer2.util.NotificationUtil; import com.mbridge.msdk.playercommon.exoplayer2.util.Util; import java.io.IOException; import java.util.HashMap; public abstract class DownloadService extends Service { public static final String ACTION_ADD = "com.google.android.exoplayer.downloadService.action.ADD"; public static final String ACTION_INIT = "com.google.android.exoplayer.downloadService.action.INIT"; private static final String ACTION_RESTART = "com.google.android.exoplayer.downloadService.action.RESTART"; private static final String ACTION_START_DOWNLOADS = "com.google.android.exoplayer.downloadService.action.START_DOWNLOADS"; private static final String ACTION_STOP_DOWNLOADS = "com.google.android.exoplayer.downloadService.action.STOP_DOWNLOADS"; private static final boolean DEBUG = false; public static final long DEFAULT_FOREGROUND_NOTIFICATION_UPDATE_INTERVAL = 1000; public static final String KEY_DOWNLOAD_ACTION = "download_action"; public static final String KEY_FOREGROUND = "foreground"; private static final String TAG = "DownloadService"; private static final HashMap<Class<? extends DownloadService>, RequirementsHelper> requirementsHelpers = new HashMap<>(); private final String channelId; private final int channelName; private DownloadManager downloadManager; private DownloadManagerListener downloadManagerListener; private final ForegroundNotificationUpdater foregroundNotificationUpdater; private int lastStartId; private boolean startedInForeground; private boolean taskRemoved; private void logd(String str) { } /* access modifiers changed from: protected */ public abstract DownloadManager getDownloadManager(); /* access modifiers changed from: protected */ public abstract Notification getForegroundNotification(DownloadManager.TaskState[] taskStateArr); /* access modifiers changed from: protected */ public abstract Scheduler getScheduler(); public IBinder onBind(Intent intent) { return null; } /* access modifiers changed from: protected */ public void onTaskStateChanged(DownloadManager.TaskState taskState) { } protected DownloadService(int i) { this(i, 1000); } protected DownloadService(int i, long j) { this(i, j, null, 0); } protected DownloadService(int i, long j, String str, int i2) { this.foregroundNotificationUpdater = new ForegroundNotificationUpdater(i, j); this.channelId = str; this.channelName = i2; } public static Intent buildAddActionIntent(Context context, Class<? extends DownloadService> cls, DownloadAction downloadAction, boolean z) { return new Intent(context, cls).setAction(ACTION_ADD).putExtra(KEY_DOWNLOAD_ACTION, downloadAction.toByteArray()).putExtra(KEY_FOREGROUND, z); } public static void startWithAction(Context context, Class<? extends DownloadService> cls, DownloadAction downloadAction, boolean z) { Intent buildAddActionIntent = buildAddActionIntent(context, cls, downloadAction, z); if (z) { Util.startForegroundService(context, buildAddActionIntent); } else { context.startService(buildAddActionIntent); } } public static void start(Context context, Class<? extends DownloadService> cls) { context.startService(new Intent(context, cls).setAction(ACTION_INIT)); } public static void startForeground(Context context, Class<? extends DownloadService> cls) { Util.startForegroundService(context, new Intent(context, cls).setAction(ACTION_INIT).putExtra(KEY_FOREGROUND, true)); } public void onCreate() { logd("onCreate"); String str = this.channelId; if (str != null) { NotificationUtil.createNotificationChannel(this, str, this.channelName, 2); } this.downloadManager = getDownloadManager(); DownloadManagerListener downloadManagerListener2 = new DownloadManagerListener(); this.downloadManagerListener = downloadManagerListener2; this.downloadManager.addListener(downloadManagerListener2); } /* JADX INFO: Can't fix incorrect switch cases order, some code will duplicate */ /* JADX WARNING: Code restructure failed: missing block: B:29:0x0083, code lost: if (r2.equals(com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadService.ACTION_RESTART) == false) goto L_0x0053; */ public int onStartCommand(Intent intent, int i, int i2) { String str; this.lastStartId = i2; char c = 0; this.taskRemoved = false; if (intent != null) { str = intent.getAction(); this.startedInForeground |= intent.getBooleanExtra(KEY_FOREGROUND, false) || ACTION_RESTART.equals(str); } else { str = null; } if (str == null) { str = ACTION_INIT; } logd("onStartCommand action: " + str + " startId: " + i2); str.hashCode(); switch (str.hashCode()) { case -871181424: break; case -382886238: if (str.equals(ACTION_ADD)) { c = 1; break; } c = 65535; break; case -337334865: if (str.equals(ACTION_START_DOWNLOADS)) { c = 2; break; } c = 65535; break; case 1015676687: if (str.equals(ACTION_INIT)) { c = 3; break; } c = 65535; break; case 1286088717: if (str.equals(ACTION_STOP_DOWNLOADS)) { c = 4; break; } c = 65535; break; default: c = 65535; break; } switch (c) { case 0: case 3: break; case 1: byte[] byteArrayExtra = intent.getByteArrayExtra(KEY_DOWNLOAD_ACTION); if (byteArrayExtra != null) { try { this.downloadManager.handleAction(byteArrayExtra); break; } catch (IOException e) { Log.e("DownloadService", "Failed to handle ADD action", e); break; } } else { Log.e("DownloadService", "Ignoring ADD action with no action data"); break; } case 2: this.downloadManager.startDownloads(); break; case 4: this.downloadManager.stopDownloads(); break; default: Log.e("DownloadService", "Ignoring unrecognized action: " + str); break; } maybeStartWatchingRequirements(); if (this.downloadManager.isIdle()) { stop(); } return 1; } public void onTaskRemoved(Intent intent) { logd("onTaskRemoved rootIntent: " + intent); this.taskRemoved = true; } public void onDestroy() { logd("onDestroy"); this.foregroundNotificationUpdater.stopPeriodicUpdates(); this.downloadManager.removeListener(this.downloadManagerListener); maybeStopWatchingRequirements(); } /* access modifiers changed from: protected */ public Requirements getRequirements() { return new Requirements(1, false, false); } /* JADX DEBUG: Multi-variable search result rejected for r7v0, resolved type: java.util.HashMap<java.lang.Class<? extends com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadService>, com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadService$RequirementsHelper> */ /* JADX WARN: Multi-variable type inference failed */ /* access modifiers changed from: private */ /* access modifiers changed from: public */ private void maybeStartWatchingRequirements() { if (this.downloadManager.getDownloadCount() != 0) { Class<?> cls = getClass(); HashMap<Class<? extends DownloadService>, RequirementsHelper> hashMap = requirementsHelpers; if (((RequirementsHelper) hashMap.get(cls)) == null) { RequirementsHelper requirementsHelper = new RequirementsHelper(this, getRequirements(), getScheduler(), cls); hashMap.put(cls, requirementsHelper); requirementsHelper.start(); logd("started watching requirements"); } } } private void maybeStopWatchingRequirements() { RequirementsHelper remove; if (this.downloadManager.getDownloadCount() <= 0 && (remove = requirementsHelpers.remove(getClass())) != null) { remove.stop(); logd("stopped watching requirements"); } } /* access modifiers changed from: private */ /* access modifiers changed from: public */ private void stop() { this.foregroundNotificationUpdater.stopPeriodicUpdates(); if (this.startedInForeground && Util.SDK_INT >= 26) { this.foregroundNotificationUpdater.showNotificationIfNotAlready(); } if (Util.SDK_INT >= 28 || !this.taskRemoved) { boolean stopSelfResult = stopSelfResult(this.lastStartId); logd("stopSelf(" + this.lastStartId + ") result: " + stopSelfResult); return; } stopSelf(); logd("stopSelf()"); } private final class DownloadManagerListener implements DownloadManager.Listener { private DownloadManagerListener() { } @Override // com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadManager.Listener public final void onInitialized(DownloadManager downloadManager) { DownloadService.this.maybeStartWatchingRequirements(); } @Override // com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadManager.Listener public final void onTaskStateChanged(DownloadManager downloadManager, DownloadManager.TaskState taskState) { DownloadService.this.onTaskStateChanged(taskState); if (taskState.state == 1) { DownloadService.this.foregroundNotificationUpdater.startPeriodicUpdates(); } else { DownloadService.this.foregroundNotificationUpdater.update(); } } @Override // com.mbridge.msdk.playercommon.exoplayer2.offline.DownloadManager.Listener public final void onIdle(DownloadManager downloadManager) { DownloadService.this.stop(); } } /* access modifiers changed from: private */ public final class ForegroundNotificationUpdater implements Runnable { private final Handler handler = new Handler(Looper.getMainLooper()); private boolean notificationDisplayed; private final int notificationId; private boolean periodicUpdatesStarted; private final long updateInterval; public ForegroundNotificationUpdater(int i, long j) { this.notificationId = i; this.updateInterval = j; } public final void startPeriodicUpdates() { this.periodicUpdatesStarted = true; update(); } public final void stopPeriodicUpdates() { this.periodicUpdatesStarted = false; this.handler.removeCallbacks(this); } public final void update() { DownloadManager.TaskState[] allTaskStates = DownloadService.this.downloadManager.getAllTaskStates(); DownloadService downloadService = DownloadService.this; downloadService.startForeground(this.notificationId, downloadService.getForegroundNotification(allTaskStates)); this.notificationDisplayed = true; if (this.periodicUpdatesStarted) { this.handler.removeCallbacks(this); this.handler.postDelayed(this, this.updateInterval); } } public final void showNotificationIfNotAlready() { if (!this.notificationDisplayed) { update(); } } public final void run() { update(); } } /* access modifiers changed from: private */ public static final class RequirementsHelper implements RequirementsWatcher.Listener { private final Context context; private final Requirements requirements; private final RequirementsWatcher requirementsWatcher; private final Scheduler scheduler; private final Class<? extends DownloadService> serviceClass; private RequirementsHelper(Context context2, Requirements requirements2, Scheduler scheduler2, Class<? extends DownloadService> cls) { this.context = context2; this.requirements = requirements2; this.scheduler = scheduler2; this.serviceClass = cls; this.requirementsWatcher = new RequirementsWatcher(context2, this, requirements2); } public final void start() { this.requirementsWatcher.start(); } public final void stop() { this.requirementsWatcher.stop(); Scheduler scheduler2 = this.scheduler; if (scheduler2 != null) { scheduler2.cancel(); } } @Override // com.mbridge.msdk.playercommon.exoplayer2.scheduler.RequirementsWatcher.Listener public final void requirementsMet(RequirementsWatcher requirementsWatcher2) { startServiceWithAction(DownloadService.ACTION_START_DOWNLOADS); Scheduler scheduler2 = this.scheduler; if (scheduler2 != null) { scheduler2.cancel(); } } @Override // com.mbridge.msdk.playercommon.exoplayer2.scheduler.RequirementsWatcher.Listener public final void requirementsNotMet(RequirementsWatcher requirementsWatcher2) { startServiceWithAction(DownloadService.ACTION_STOP_DOWNLOADS); if (this.scheduler != null) { if (!this.scheduler.schedule(this.requirements, this.context.getPackageName(), DownloadService.ACTION_RESTART)) { Log.e("DownloadService", "Scheduling downloads failed."); } } } private void startServiceWithAction(String str) { Util.startForegroundService(this.context, new Intent(this.context, this.serviceClass).setAction(str).putExtra(DownloadService.KEY_FOREGROUND, true)); } } }