package com.adsdk.sdk.video;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.net.URL;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class NavIcon extends AspectRatioImageViewWidth implements OnClickListener {
private Context mContext;
private Handler mHandler;
private NavIconData mIcon;
public NavIcon(Context context, NavIconData icon) {
super(context);
int padding = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
mContext = context;
this.mIcon = icon;
this.setPadding(padding, 0, padding, 0);
mHandler = new Handler();
setVisibility(View.GONE);
setImageDrawable(icon.iconUrl);
this.setOnClickListener(this);
}
private void setImageDrawable(final String url) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
final Drawable image = fetchImage(url);
if (image != null) {
mHandler.post(new Runnable() {
@Override
public void run() {
setImageDrawable(image);
setVisibility(View.VISIBLE);
requestLayout();
}
});
}
}
});
t.start();
}
private Drawable fetchImage(String urlString) {
InputStream in = null;
try {
URL url = new URL(urlString);
in = (InputStream) url.getContent();
Bitmap b = BitmapFactory.decodeStream(in);
if (b != null) {
DisplayMetrics m = mContext.getResources().getDisplayMetrics();
int w = b.getWidth();
int h = b.getHeight();
int imageWidth = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, w, m);
int imageHeight = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, h, m);
if ((imageWidth != w) || (imageHeight != h)) {
b = Bitmap.createScaledBitmap(b, imageWidth, imageHeight,
false);
}
return new BitmapDrawable(mContext.getResources(), b);
}
} catch (Exception e) {
} finally {
if (in != null) {
try {
in.close();
in = null;
} catch (Exception e) {
}
}
}
try {
URL url = new URL(urlString);
InputStream is = (InputStream) url.getContent();
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (Exception e) {
return null;
}
}
@Override
public void onClick(View v) {
try {
if (mContext instanceof RichMediaActivity) {
RichMediaActivity activity = (RichMediaActivity) mContext;
if (mIcon.openType == NavIconData.TYPE_EXTERNAL) {
Intent intent = new Intent("android.intent.action.VIEW",
Uri.parse(mIcon.clickUrl));
activity.startActivity(intent);
} else {
String url = mIcon.clickUrl;
if (url.startsWith("market:")
|| url.startsWith("http://market.android.com")
|| url.startsWith("sms:") || url.startsWith("tel:")
|| url.startsWith("mailto:")
|| url.startsWith("voicemail:")
|| url.startsWith("geo:")
|| url.startsWith("google.streetview:")) {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
activity.startActivity(intent);
return;
}
if (url.startsWith("mfox:external:")) {
url = url.substring(16);
Intent intent = new Intent(
"android.intent.action.VIEW", Uri.parse(url));
activity.startActivity(intent);
return;
}
if (url.startsWith("mfox:replayvideo")) {
try {
Class<? extends Activity> c = activity.getClass();
Method method = c.getMethod("replayVideo");
method.invoke(activity);
} catch (NoSuchMethodException e) {
} catch (Exception e) {
}
return;
}
if (url.startsWith("mfox:playvideo")) {
try {
Class<? extends Activity> c = activity.getClass();
Method method = c.getMethod("playVideo");
method.invoke(activity);
} catch (NoSuchMethodException e) {
} catch (Exception e) {
}
return;
}
if (url.startsWith("mfox:skip")) {
activity.finish();
return;
}
activity.navigate(mIcon.clickUrl);
}
}
} catch (Exception e) {
}
}
}