package com.mobmonkey.mobmonkeysdk.asynctasks;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.SocketException;
import java.net.URL;
import org.apache.http.conn.ConnectTimeoutException;
import com.mobmonkey.mobmonkeysdk.utils.MMCallback;
import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.view.Display;
/**
* @author Dezapp, LLC
*
*/
public class MMLoadImageAsyncTask extends AsyncTask<String, Void, Object> {
private MMCallback callback;
private Display display;
public MMLoadImageAsyncTask(MMCallback callback, Display display) {
this.callback = callback;
this.display = display;
}
@Override
protected Object doInBackground(String... params) {
Bitmap image = null;
try {
URL imageUrl = new URL(params[0]);
HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
conn.setConnectTimeout(MMSDKConstants.TIMEOUT_CONNECTION);
conn.setReadTimeout(MMSDKConstants.TIMEOUT_SOCKET);
conn.setDoInput(true);
conn.connect();
if(conn.getContentLength() > 0) {
InputStream is = conn.getInputStream();
image = BitmapFactory.decodeStream(is);
is.close();
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ConnectTimeoutException e) {
e.printStackTrace();
return MMSDKConstants.CONNECTION_TIMED_OUT;
} catch (SocketException e) {
e.printStackTrace();
if(e.getMessage().equals(MMSDKConstants.OPERATION_TIMED_OUT)) {
return MMSDKConstants.CONNECTION_TIMED_OUT;
}
} catch (IOException e) {
e.printStackTrace();
}
return Bitmap.createScaledBitmap(image, display.getWidth(), display.getHeight(), true);
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
callback.processCallback(result);
}
}