diff options
-rw-r--r-- | AndroidManifest.xml | 1 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/service/download/Downloader.java | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6d2eebf1b..815a95ef5 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -6,6 +6,7 @@ <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-sdk android:minSdkVersion="10" diff --git a/src/de/danoeh/antennapod/service/download/Downloader.java b/src/de/danoeh/antennapod/service/download/Downloader.java index 84731fe9f..80cc5b3f8 100644 --- a/src/de/danoeh/antennapod/service/download/Downloader.java +++ b/src/de/danoeh/antennapod/service/download/Downloader.java @@ -1,5 +1,8 @@ package de.danoeh.antennapod.service.download; +import android.content.Context; +import android.net.wifi.WifiManager; +import de.danoeh.antennapod.PodcastApp; import de.danoeh.antennapod.R; import java.util.concurrent.Callable; @@ -26,7 +29,19 @@ public abstract class Downloader implements Callable<Downloader> { protected abstract void download(); public final Downloader call() { + WifiManager wifiManager = (WifiManager) PodcastApp.getInstance().getSystemService(Context.WIFI_SERVICE); + WifiManager.WifiLock wifiLock = null; + if (wifiManager != null) { + wifiLock = wifiManager.createWifiLock(TAG); + wifiLock.acquire(); + } + download(); + + if (wifiLock != null) { + wifiLock.release(); + } + if (result == null) { throw new IllegalStateException( "Downloader hasn't created DownloadStatus object"); |