update tiles if outdated (use lastModified tag and only update on wifi)
This commit is contained in:
parent
8f5072dda5
commit
c624a789d5
@ -12,6 +12,7 @@ import java.io.FileOutputStream;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
public class IITC_TileManager {
|
public class IITC_TileManager {
|
||||||
|
|
||||||
@ -24,7 +25,6 @@ public class IITC_TileManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public WebResourceResponse getTile(String url) throws Exception {
|
public WebResourceResponse getTile(String url) throws Exception {
|
||||||
Log.d("iitcm", "checking for tile: " + url);
|
|
||||||
String path = mIitc.getApplication().getFilesDir().toString() + "/" + url;
|
String path = mIitc.getApplication().getFilesDir().toString() + "/" + url;
|
||||||
path = path.replace("http://", "");
|
path = path.replace("http://", "");
|
||||||
path = path.replace("https://", "");
|
path = path.replace("https://", "");
|
||||||
@ -33,6 +33,9 @@ public class IITC_TileManager {
|
|||||||
path = path.replace(fileName, "");
|
path = path.replace(fileName, "");
|
||||||
File file = new File(path, fileName);
|
File file = new File(path, fileName);
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
|
// asynchronously download tile if outdated, ignore date if not connected to wifi
|
||||||
|
if (mIitc.getWebView().isConnectedToWifi()) new DownloadTile(path, fileName).execute(url);
|
||||||
|
// return tile from storage
|
||||||
InputStream in = new BufferedInputStream(new FileInputStream(file));
|
InputStream in = new BufferedInputStream(new FileInputStream(file));
|
||||||
return new WebResourceResponse(TYPE, ENCODING, in);
|
return new WebResourceResponse(TYPE, ENCODING, in);
|
||||||
} else {
|
} else {
|
||||||
|
@ -237,7 +237,7 @@ public class IITC_WebView extends WebView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
|
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
|
||||||
private boolean isConnectedToWifi() {
|
public boolean isConnectedToWifi() {
|
||||||
ConnectivityManager conMan = (ConnectivityManager) getContext()
|
ConnectivityManager conMan = (ConnectivityManager) getContext()
|
||||||
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
|
NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
|
||||||
|
@ -37,9 +37,11 @@ public class DownloadTile extends AsyncTask<String, Void, Boolean> {
|
|||||||
try {
|
try {
|
||||||
tileUrl = new URL(urls[0]);
|
tileUrl = new URL(urls[0]);
|
||||||
conn = tileUrl.openConnection();
|
conn = tileUrl.openConnection();
|
||||||
|
File file = new File(mFilePath, mFileName);
|
||||||
|
// update tile if needed, else return
|
||||||
|
if (conn.getLastModified() < file.lastModified()) return true;
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
is = conn.getInputStream();
|
is = conn.getInputStream();
|
||||||
File file = new File(mFilePath, mFileName);
|
|
||||||
Log.d("iitcm", "writing to file: " + file.toString());
|
Log.d("iitcm", "writing to file: " + file.toString());
|
||||||
File output = writeTileToFile(is, file, mFilePath);
|
File output = writeTileToFile(is, file, mFilePath);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user