diff options
author | Martin Fietz <Martin.Fietz@gmail.com> | 2016-01-08 00:16:32 +0100 |
---|---|---|
committer | Martin Fietz <Martin.Fietz@gmail.com> | 2016-01-08 00:16:32 +0100 |
commit | a6a7310a387db39c44bd0db53f639c9f843c31df (patch) | |
tree | 3727465902d3776086c569bfc63e5c3bf955a87a /core/src | |
parent | 0c973e3ea79d0891cbc1d1ba102878996797205f (diff) | |
parent | 754ff931b1c92cf5721503bb9ec107b28df1524f (diff) | |
download | AntennaPod-a6a7310a387db39c44bd0db53f639c9f843c31df.zip |
Merge pull request #1498 from mfietz/v23
Support libraries v23
Diffstat (limited to 'core/src')
13 files changed, 40 insertions, 101 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java index d2a13f768..a24e3a485 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java @@ -10,8 +10,6 @@ import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseBody; -import org.apache.http.HttpStatus; -import org.apache.http.client.ClientProtocolException; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -19,6 +17,7 @@ import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; @@ -602,10 +601,7 @@ public class GpodnetService { checkStatusCode(response); body = response.body(); result = getStringFromResponseBody(body); - } catch (ClientProtocolException e) { - e.printStackTrace(); - throw new GpodnetServiceException(e); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); throw new GpodnetServiceException(e); } finally { @@ -652,12 +648,12 @@ public class GpodnetService { private void checkStatusCode(@NonNull Response response) throws GpodnetServiceException { int responseCode = response.code(); - if (responseCode != HttpStatus.SC_OK) { - if (responseCode == HttpStatus.SC_UNAUTHORIZED) { + if (responseCode != HttpURLConnection.HTTP_OK) { + if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) { throw new GpodnetServiceAuthenticationException("Wrong username or password"); } else { - throw new GpodnetServiceBadStatusCodeException( - "Bad response code: " + responseCode, responseCode); + throw new GpodnetServiceBadStatusCodeException("Bad response code: " + + responseCode, responseCode); } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java index e06a88d5c..5f096db14 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java @@ -1,12 +1,13 @@ package de.danoeh.antennapod.core.gpoddernet.model; +import android.support.v4.util.ArrayMap; + import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import java.util.HashMap; import java.util.Map; public class GpodnetEpisodeActionPostResponse { @@ -36,8 +37,8 @@ public class GpodnetEpisodeActionPostResponse { public static GpodnetEpisodeActionPostResponse fromJSONObject(String objectString) throws JSONException { final JSONObject object = new JSONObject(objectString); final long timestamp = object.getLong("timestamp"); - Map<String, String> updatedUrls = new HashMap<String, String>(); JSONArray urls = object.getJSONArray("update_urls"); + Map<String, String> updatedUrls = new ArrayMap<String, String>(urls.length()); for (int i = 0; i < urls.length(); i++) { JSONArray urlPair = urls.getJSONArray(i); updatedUrls.put(urlPair.getString(0), urlPair.getString(1)); diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java index 5a37efa5e..9bd1881e4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java @@ -1,10 +1,11 @@ package de.danoeh.antennapod.core.gpoddernet.model; +import android.support.v4.util.ArrayMap; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import java.util.HashMap; import java.util.Map; /** @@ -37,7 +38,7 @@ public class GpodnetUploadChangesResponse { public static GpodnetUploadChangesResponse fromJSONObject(String objectString) throws JSONException { final JSONObject object = new JSONObject(objectString); final long timestamp = object.getLong("timestamp"); - Map<String, String> updatedUrls = new HashMap<String, String>(); + Map<String, String> updatedUrls = new ArrayMap<>(); JSONArray urls = object.getJSONArray("update_urls"); for (int i = 0; i < urls.length(); i++) { JSONArray urlPair = urls.getJSONArray(i); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java index d5660f67e..0b90cef6c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java @@ -8,12 +8,12 @@ import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.support.v4.app.NotificationCompat; +import android.support.v4.util.ArrayMap; import android.util.Log; import android.util.Pair; import java.util.Collection; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -226,7 +226,7 @@ public class GpodnetSyncService extends Service { if(remoteActions.size() == 0) { return; } - Map<Pair<String, String>, GpodnetEpisodeAction> localMostRecentPlayAction = new HashMap<Pair<String, String>, GpodnetEpisodeAction>(); + Map<Pair<String, String>, GpodnetEpisodeAction> localMostRecentPlayAction = new ArrayMap<>(); for(GpodnetEpisodeAction action : localActions) { Pair key = new Pair(action.getPodcast(), action.getEpisode()); GpodnetEpisodeAction mostRecent = localMostRecentPlayAction.get(key); @@ -238,7 +238,7 @@ public class GpodnetSyncService extends Service { } // make sure more recent local actions are not overwritten by older remote actions - Map<Pair<String, String>, GpodnetEpisodeAction> mostRecentPlayAction = new HashMap<Pair<String, String>, GpodnetEpisodeAction>(); + Map<Pair<String, String>, GpodnetEpisodeAction> mostRecentPlayAction = new ArrayMap<>(); for (GpodnetEpisodeAction action : remoteActions) { switch (action.getAction()) { case NEW: diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/APRedirectHandler.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/APRedirectHandler.java deleted file mode 100644 index 3efcf4da8..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/APRedirectHandler.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.danoeh.antennapod.core.service.download; - -import android.util.Log; -import de.danoeh.antennapod.core.BuildConfig; -import org.apache.http.Header; -import org.apache.http.HttpResponse; -import org.apache.http.impl.client.DefaultRedirectHandler; -import org.apache.http.protocol.HttpContext; - -import java.net.URI; - -public class APRedirectHandler extends DefaultRedirectHandler { - // Identifier for logger - private static final String TAG = "APRedirectHandler"; - // Header field, which has to be potentially fixed - private static final String LOC = "Location"; - // Regular expressions for character strings, which should not appear in URLs - private static final String CHi[] = { "\\{", "\\}", "\\|", "\\\\", "\\^", "~", "\\[", "\\]", "\\`"}; - private static final String CHo[] = { "%7B", "%7D", "%7C", "%5C", "%5E", "%7E", "%5B", "%5D", "%60"}; - - /** - * Workaround for broken URLs in redirection. - * Proper solution involves LaxRedirectStrategy() which is not available in - * current API yet. - */ - @Override - public URI getLocationURI(HttpResponse response, HttpContext context) - throws org.apache.http.ProtocolException { - - Header h[] = response.getHeaders(LOC); - if (h.length>0) { - String s = h[0].getValue(); - - // Fix broken URL - for(int i=0; i<CHi.length;i++) - s = s.replaceAll(CHi[i], CHo[i]); - - // If anything had to be fixed, then replace the header - if (!s.equals(h[0].getValue())) - { - if (BuildConfig.DEBUG) - Log.d(TAG, "Original URL: " + h[0].getValue()); - - response.setHeader(LOC, s); - - if (BuildConfig.DEBUG) - Log.d(TAG, "Fixed URL: " + s); - } - } - - // call DefaultRedirectHandler with fixed URL - return super.getLocationURI(response, context); - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index 9768bd5de..29c44207d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -22,7 +22,6 @@ import android.util.Log; import android.webkit.URLUtil; import org.apache.commons.io.FileUtils; -import org.apache.http.HttpStatus; import org.xml.sax.SAXException; import java.io.File; @@ -187,7 +186,7 @@ public class DownloadService extends Service { if (status.getReason() == DownloadError.ERROR_UNAUTHORIZED) { postAuthenticationNotification(downloader.getDownloadRequest()); } else if (status.getReason() == DownloadError.ERROR_HTTP_DATA_ERROR - && Integer.valueOf(status.getReasonDetailed()) == HttpStatus.SC_REQUESTED_RANGE_NOT_SATISFIABLE) { + && Integer.valueOf(status.getReasonDetailed()) == 416) { Log.d(TAG, "Requested invalid range, restarting download from the beginning"); FileUtils.deleteQuietly(new File(downloader.getDownloadRequest().getDestination())); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java index 9f54db477..0b9fba6f7 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java @@ -11,7 +11,6 @@ import com.squareup.okhttp.ResponseBody; import com.squareup.okhttp.internal.http.HttpDate; import org.apache.commons.io.IOUtils; -import org.apache.http.HttpStatus; import java.io.BufferedInputStream; import java.io.File; @@ -162,7 +161,7 @@ public class HttpDownloader extends Downloader { return; } - if (!StorageUtils.storageAvailable(ClientConfig.applicationCallbacks.getApplicationInstance())) { + if (!StorageUtils.storageAvailable()) { onFail(DownloadError.ERROR_DEVICE_NOT_FOUND, null); return; } @@ -171,7 +170,7 @@ public class HttpDownloader extends Downloader { String contentRangeHeader = (fileExists) ? response.header("Content-Range") : null; - if (fileExists && response.code() == HttpStatus.SC_PARTIAL_CONTENT + if (fileExists && response.code() == HttpURLConnection.HTTP_PARTIAL && !TextUtils.isEmpty(contentRangeHeader)) { String start = contentRangeHeader.substring("bytes ".length(), contentRangeHeader.indexOf("-")); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java index 446061ea6..fcd96826b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java @@ -5,7 +5,6 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; -import android.util.FloatMath; import android.util.Log; public class ShakeListener implements SensorEventListener @@ -50,8 +49,8 @@ public class ShakeListener implements SensorEventListener float gY = event.values[1] / SensorManager.GRAVITY_EARTH; float gZ = event.values[2] / SensorManager.GRAVITY_EARTH; - float gForce = FloatMath.sqrt(gX*gX + gY*gY + gZ*gZ); - if (gForce > 2.25f) { + double gForce = Math.sqrt(gX*gX + gY*gY + gZ*gZ); + if (gForce > 2.25) { Log.d(TAG, "Detected shake " + gForce); mSleepTimer.onShake(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index c34515118..fe5b177ab 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -1,13 +1,13 @@ package de.danoeh.antennapod.core.storage; import android.database.Cursor; +import android.support.v4.util.ArrayMap; import android.util.Log; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -229,7 +229,7 @@ public final class DBReader { for(int i=0, len=itemIds.length; i < len; i++) { ids[i] = String.valueOf(itemIds[i]); } - Map<Long,FeedMedia> result = new HashMap<>(itemIds.length); + Map<Long,FeedMedia> result = new ArrayMap<>(itemIds.length); Cursor cursor = adapter.getFeedMediaCursor(ids); try { if (cursor.moveToFirst()) { @@ -871,7 +871,7 @@ public final class DBReader { ids[i] = String.valueOf(imageIds[i]); } Cursor cursor = adapter.getImageCursor(ids); - Map<Long, FeedImage> result = new HashMap<>(cursor.getCount()); + Map<Long, FeedImage> result = new ArrayMap<>(cursor.getCount()); try { if ((cursor.getCount() == 0) || !cursor.moveToFirst()) { return Collections.emptyMap(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java index 413a11f8e..9280db8a3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java @@ -1,8 +1,8 @@ package de.danoeh.antennapod.core.syndication.handler; +import android.support.v4.util.ArrayMap; + import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.Map; import java.util.Stack; @@ -32,7 +32,7 @@ public class HandlerState { /** * Namespaces that have been defined so far. */ - protected HashMap<String, Namespace> namespaces; + protected Map<String, Namespace> namespaces; protected Stack<Namespace> defaultNamespaces; /** * Buffer for saving characters. @@ -42,16 +42,16 @@ public class HandlerState { /** * Temporarily saved objects. */ - protected HashMap<String, Object> tempObjects; + protected Map<String, Object> tempObjects; public HandlerState(Feed feed) { this.feed = feed; - alternateUrls = new LinkedHashMap<String, String>(); + alternateUrls = new ArrayMap<>(); items = new ArrayList<FeedItem>(); tagstack = new Stack<SyndElement>(); - namespaces = new HashMap<String, Namespace>(); + namespaces = new ArrayMap<>(); defaultNamespaces = new Stack<Namespace>(); - tempObjects = new HashMap<String, Object>(); + tempObjects = new ArrayMap<>(); } public Feed getFeed() { @@ -105,7 +105,7 @@ public class HandlerState { alternateUrls.put(url, title); } - public HashMap<String, Object> getTempObjects() { + public Map<String, Object> getTempObjects() { return tempObjects; } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java index 07432d28a..287ec4d0c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java @@ -1,14 +1,15 @@ package de.danoeh.antennapod.core.util; +import android.support.v4.util.ArrayMap; + import java.nio.charset.Charset; -import java.util.HashMap; public class LangUtils { public static final Charset UTF_8 = Charset.forName("UTF-8"); - private static HashMap<String, String> languages; + private static ArrayMap<String, String> languages; static { - languages = new HashMap<String, String>(); + languages = new ArrayMap<>(); languages.put("af", "Afrikaans"); languages.put("sq", "Albanian"); languages.put("sq", "Albanian"); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java index d64148715..1ef81bf64 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java @@ -1,14 +1,12 @@ package de.danoeh.antennapod.core.util; import android.app.Activity; -import android.content.Context; import android.os.Build; import android.os.StatFs; import android.util.Log; import java.io.File; -import de.danoeh.antennapod.core.BuildConfig; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -18,13 +16,12 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; public class StorageUtils { private static final String TAG = "StorageUtils"; - public static boolean storageAvailable(Context context) { + public static boolean storageAvailable() { File dir = UserPreferences.getDataFolder(null); if (dir != null) { return dir.exists() && dir.canRead() && dir.canWrite(); } else { - if (BuildConfig.DEBUG) - Log.d(TAG, "Storage not available: data folder is null"); + Log.d(TAG, "Storage not available: data folder is null"); return false; } } @@ -39,7 +36,7 @@ public class StorageUtils { * @return true if external storage is available */ public static boolean checkStorageAvailability(Activity activity) { - boolean storageAvailable = storageAvailable(activity); + boolean storageAvailable = storageAvailable(); if (!storageAvailable) { activity.finish(); activity.startActivity(ClientConfig.applicationCallbacks.getStorageErrorActivity(activity)); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java index d148419fd..13cb9f002 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.core.util.syndication; import android.net.Uri; +import android.support.v4.util.ArrayMap; import android.text.TextUtils; import org.jsoup.Jsoup; @@ -10,7 +11,6 @@ import org.jsoup.select.Elements; import java.io.File; import java.io.IOException; -import java.util.LinkedHashMap; import java.util.Map; /** @@ -46,7 +46,7 @@ public class FeedDiscoverer { } private Map<String, String> findLinks(Document document, String baseUrl) { - Map<String, String> res = new LinkedHashMap<String, String>(); + Map<String, String> res = new ArrayMap<>(); Elements links = document.head().getElementsByTag("link"); for (Element link : links) { String rel = link.attr("rel"); |