/* Downloader.java - download database from WWW to SD card.
*
* Copyright (c) 2012 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com>
* Distributed under EPL/LGPL/GPL/AL/BSD multi-license.
*/
package wikokit.base.wikt.db;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Environment;
public class Downloader {
/** Checks wheather inet is available.
* Problem: return true if there is Wi-Fi, but VPN is not connected :(
*/
public static boolean isOnline(Context c) {
boolean connected = false;
try {
ConnectivityManager cman = (ConnectivityManager) c
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo network_info = cman.getActiveNetworkInfo();
connected = network_info != null
&& network_info.isAvailable() && network_info.isConnected();
} catch (Exception e) {
System.out.println("CheckConnectivity Exception: " + e.getMessage());
//Log.v("connectivity", e.toString());
}
return connected;
}
/** Downloads file from the str_url location to the /sd_card/dir/filename.
* @param str_url URL, e.g. "http://www/ruwikt20110521_android_sqlite.zip"
* @dir file path at SD card, e.g. "kiwidict" folder
* @filename file will be saved to
*/
public static void downloadToExternalStorage(String str_url, String dir, String filename) {
StringBuilder absolute_file_path = new StringBuilder();
absolute_file_path.append( Environment.getExternalStorageDirectory().getAbsolutePath() );
absolute_file_path.append( File.separator);
absolute_file_path.append( dir );
absolute_file_path.append( File.separator);
absolute_file_path.append( filename );
download(str_url, absolute_file_path.toString());
}
/** Downloads file from the str_url location to the destination file_path.
* str_url = "http://localhost/tempos/ruwikt20110521_android_sqlite_LZMA_dict8MB_word64.zip"
* file_path = "/mnt/sdcard/kiwidict/file.zip"
*/
public static void download(String str_url, String file_path) {
try {
URL url = new URL(str_url);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
try {
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
File file = new File(file_path);
FileOutputStream file_out = new FileOutputStream(file);
// read data from WWW
InputStream in = c.getInputStream();
int totalSize = c.getContentLength(); // this is the total size of the file
int downloadedSize = 0; // variable to store total downloaded bytes
byte[] buffer = new byte[4*1024]; // create a buffer...
int buf_len = 0;
while ( (buf_len = in.read(buffer)) > 0 ) {
file_out.write(buffer, 0, buf_len);
downloadedSize += buf_len;
if(0 == downloadedSize % 4096) {
System.out.println("downloadedSize="+ downloadedSize +
"; totalSize=" + totalSize);
}
}
file_out.close();
} finally {
c.disconnect();
}
// catch some possible errors...
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}