package com.amoad; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.AsyncTask; import android.os.Handler; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; import android.view.Display; import android.view.WindowManager; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.RelativeLayout; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.LinkedHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.StatusLine; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.util.EntityUtils; import org.json.JSONException; import org.json.JSONObject; public class AMoAdView extends RelativeLayout { public static final int AlphaAnimation = 1; public static final int AnimationNone = 0; public static final int ContentSizeIdentifierAuto = 2; public static final int ContentSizeIdentifierLandscape = 1; public static final int ContentSizeIdentifierPortrait = 0; private static final String ID_SERVICE_HTML = "<html><head></head><body><script type='text/javascript'>var amoad_enable_ids=true;var amoad_uid='%s';var amoad_enable_android=true;</script><script src='%s' ></script></body></html>"; private static final String JSON_FQ = "fq"; private static final String JSON_ROTATION = "rotation"; private static final String MARKING_JS_URL = "http://j.amoad.com/js/r.js"; public static final int RotateAnimation = 2; public static final int ScaleAnimation = 3; public static final int TranslateAnimation = 4; private static Object lock = new Object(); private static ConfigFile mConfigFile = null; private int ROTATE_DISABLE = 0; private int ROTATE_ENABLE = 1; private final String TYPE_GIFTEXT = "giftext"; private final String TYPE_HTML = "html"; private final String TYPE_IMG = "img"; private Handler handler = new Handler(); private boolean hasDspName = false; private Boolean isPostedtoHandler = Boolean.valueOf(false); private AdBaseView mAdBaseView = null; private String mAdUrl = "http://d.amoad.com/ad/json/"; private String mAid = ""; private String mAppdomain = null; private String mAppname = null; private BannerView mBannerView = null; private AdCallback mCallback = null; private int mCallbackCnt = 0; private boolean mClickAnimation = false; private final int mConTimeout = 1000; private LinkedHashMap<String, String> mConfig = null; private Context mContext = null; final Boolean mDebugging = Boolean.valueOf(false); private String mDomainName = "amoad"; private int mEnableRotate = this.ROTATE_ENABLE; private String mEncoding = "UTF-8"; private ErrorReport mErrorReport = null; private String mFq = ""; private GiftextView mGiftextView = null; private HtmlView mHtmlView = null; private Thread mIdTread = null; private String mImpUrl = ""; private long mInterval = 0L; private final long mInterval_DEFAULT = 10000L; private String mJsonp = ""; private Runnable mLooper = null; final Boolean mMessage = Boolean.valueOf(false); private String mModelName = ""; private String mOrientation = "portrait"; private int mRotationAnimation = 0; private RtbView mRtbView = null; private final String mSdkVersion = "2.5.0"; private Settings mSettings; private String mSid = ""; private String mType = ""; private String mUid = ""; private String mUrl = ""; private String mUserAgent = ""; private String mUserAgentRaw = ""; private int mVisibility = 8; public AMoAdView(Context paramContext) { super(paramContext); initilize(paramContext); } public AMoAdView(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); initilize(paramContext); } public AMoAdView(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); initilize(paramContext); } private void doCrash() { null.toString(); } private void doUrlLoad() { try { if (this.mIdTread != null) { this.mIdTread.join(); this.mIdTread = null; } Object[] arrayOfObject = new Object[6]; arrayOfObject[0] = URLEncoder.encode(this.mSid, "UTF-8"); arrayOfObject[1] = URLEncoder.encode(this.mUid, "UTF-8"); arrayOfObject[2] = URLEncoder.encode(this.mOrientation, "UTF-8"); arrayOfObject[3] = URLEncoder.encode("2.5.0", "UTF-8"); arrayOfObject[4] = URLEncoder.encode(this.mAppdomain, "UTF-8"); arrayOfObject[5] = URLEncoder.encode(this.mAppname, "UTF-8"); String str1 = String.format("sid=%s&uid=%s&orientation=%s&app=1&version=%s&appdomain=%s&appname=%s", arrayOfObject); String str2 = str1 + "&aid=" + URLEncoder.encode(this.mAid, "UTF-8"); if (!this.mFq.equals("")) { str2 = str2 + "&fq=" + URLEncoder.encode(this.mFq, "UTF-8"); } this.mUrl = (this.mAdUrl + '?' + str2); logCat("mUrl :" + this.mUrl); GetAdTask localGetAdTask = new GetAdTask(null); String[] arrayOfString = new String[1]; arrayOfString[0] = this.mUrl; localGetAdTask.execute(arrayOfString); return; } catch (UnsupportedEncodingException localUnsupportedEncodingException) { for (;;) { logCat(localUnsupportedEncodingException.getMessage()); setVisibility(8); } } catch (NullPointerException localNullPointerException) { for (;;) { logCat(localNullPointerException.getMessage()); outputMessage(localNullPointerException); setVisibility(8); } } catch (InterruptedException localInterruptedException) { for (;;) { logCat(localInterruptedException.getMessage()); outputMessage(localInterruptedException); setVisibility(8); } } catch (Exception localException) { for (;;) { logCat(localException.getMessage()); outputMessage(localException); setVisibility(8); } } } private boolean executeHttpGet(String paramString) { DefaultHttpClient localDefaultHttpClient = new DefaultHttpClient(); boolean bool = false; try { HttpResponse localHttpResponse = localDefaultHttpClient.execute(new HttpGet(paramString)); if (localHttpResponse.getStatusLine().getStatusCode() == 200) { bool = true; } else { logCat("[I] status is " + localHttpResponse.getStatusLine().getStatusCode()); } } catch (ClientProtocolException localClientProtocolException) { logCat(localClientProtocolException.getMessage()); } catch (ParseException localParseException) { logCat(localParseException.getMessage()); } catch (IOException localIOException) { logCat(localIOException.getMessage()); } catch (Exception localException) { logCat(localException.getMessage()); } return bool; } private boolean getAdContent(String paramString) { boolean bool = false; int i = -1; try { DefaultHttpClient localDefaultHttpClient = new DefaultHttpClient(); HttpParams localHttpParams = localDefaultHttpClient.getParams(); HttpConnectionParams.setConnectionTimeout(localHttpParams, 1000); localHttpParams.setParameter("http.useragent", this.mUserAgentRaw); outputMessage("sid = " + this.mSid); outputMessage("IMEI = " + this.mUid); HttpResponse localHttpResponse = localDefaultHttpClient.execute(new HttpGet(paramString)); i = localHttpResponse.getStatusLine().getStatusCode(); if (i == 200) { String str = localHttpResponse.getEntity().getContentType().toString(); Matcher localMatcher = Pattern.compile("charset=\\s*+([a-zA-Z0-9_-]*)").matcher(str); if (localMatcher.find()) { this.mEncoding = localMatcher.group(1); } this.mJsonp = EntityUtils.toString(localHttpResponse.getEntity()); bool = parseJsonData(this.mJsonp); } for (;;) { localDefaultHttpClient.getConnectionManager().shutdown(); outputMessage("http status code = " + String.valueOf(i)); return bool; logCat("status is " + i); } } catch (ClientProtocolException localClientProtocolException) { for (;;) { logCat(localClientProtocolException.getMessage()); } } catch (ParseException localParseException) { for (;;) { logCat(localParseException.getMessage()); } } catch (IOException localIOException) { for (;;) { logCat(localIOException.getMessage()); } } } private float getDensity() { WindowManager localWindowManager = (WindowManager)this.mContext.getSystemService("window"); DisplayMetrics localDisplayMetrics = new DisplayMetrics(); localWindowManager.getDefaultDisplay().getMetrics(localDisplayMetrics); return localDisplayMetrics.density; } private String getUuid() { synchronized (lock) { if (mConfigFile == null) { mConfigFile = new ConfigFile(this.mContext); mConfigFile.generateFileName(this.mDomainName, this.mModelName); mConfigFile.generateConfigFile(); } this.mConfig = mConfigFile.getConfig(); return (String)this.mConfig.get("id"); } } private void initilize(Context paramContext) { this.mContext = paramContext; WebSettings localWebSettings = new WebView(this.mContext).getSettings(); String str; if (localWebSettings.getUserAgentString() != null) { str = localWebSettings.getUserAgentString(); } for (;;) { this.mUserAgent = str; this.mUserAgentRaw = str; try { this.mUserAgent = URLEncoder.encode(this.mUserAgent, "UTF-8"); Matcher localMatcher = Pattern.compile(".*;(.*?)Build").matcher(this.mUserAgentRaw); if (localMatcher.find()) { this.mModelName = localMatcher.group(1).trim(); } this.mIdTread = new Thread(new Runnable() { public void run() { AMoAdView.access$002(AMoAdView.this, AMoAdView.this.getUuid()); AMoAdView.access$202(AMoAdView.this, new Settings(AMoAdView.this.mContext, AMoAdView.this.mDomainName, AMoAdView.this.mModelName)); AMoAdView.access$602(AMoAdView.this, AMoAdView.this.mSettings.getFrequency()); } }); if (this.mIdTread != null) { this.mIdTread.start(); } float f = getDensity(); this.mBannerView = new BannerView(this.mContext); this.mBannerView.setDensity(f); this.mHtmlView = new HtmlView(this.mContext); this.mHtmlView.setDensity(f); this.mGiftextView = new GiftextView(this.mContext); this.mGiftextView.setDensity(f); this.mRtbView = new RtbView(this.mContext); this.mRtbView.setDensity(f); this.mAppdomain = this.mContext.getPackageName(); } catch (UnsupportedEncodingException localUnsupportedEncodingException) { try { PackageManager localPackageManager = this.mContext.getPackageManager(); this.mAppname = this.mContext.getApplicationInfo().loadLabel(localPackageManager).toString(); logCat("appdomain:" + this.mAppdomain + " appname:" + this.mAppname); this.mLooper = new Runnable() { public void run() { AMoAdView.access$702(AMoAdView.this, Boolean.valueOf(false)); AMoAdView.this.doUrlLoad(); AMoAdView.this.postHandlerForUrlLoad(Boolean.valueOf(true), this); } }; sendPayload(); return; str = ""; continue; localUnsupportedEncodingException = localUnsupportedEncodingException; logCat(localUnsupportedEncodingException.getMessage()); } catch (Exception localException) { for (;;) { logCat(localException.getMessage()); } } } } } private boolean isEmptyAd() { if ((this.mJsonp.length() == 0) || (this.mJsonp.equals("{}"))) {} for (boolean bool = true;; bool = false) { return bool; } } private void logCat(String paramString) { if (this.mDebugging.booleanValue()) { if (paramString == null) { break label23; } Log.e("AMoAdView", paramString); } for (;;) { return; label23: Log.e("AMoAdView", "NO MESSAGE"); } } private void outputMessage(Exception paramException) { if (this.mMessage.booleanValue()) { for (StackTraceElement localStackTraceElement : paramException.getStackTrace()) { Log.i("AMoAdView", localStackTraceElement.getClassName() + "#" + localStackTraceElement.getMethodName() + ":" + localStackTraceElement.getLineNumber()); } } } private void outputMessage(String paramString) { if (this.mMessage.booleanValue()) { if (paramString == null) { break label23; } Log.i("AMoAdView", paramString); } for (;;) { return; label23: Log.i("AMoAdView", "NO MESSAGE"); } } private boolean parseJsonData(String paramString) { boolean bool1 = true; logCat(paramString); if (isEmptyAd()) {} for (;;) { return bool1; try { this.hasDspName = false; JSONObject localJSONObject = new JSONObject(paramString); this.mType = localJSONObject.getString("type"); if (localJSONObject.has("imp")) { this.mImpUrl = localJSONObject.getString("imp"); } if (localJSONObject.has("rotation")) { long l = 1000L * localJSONObject.getLong("rotation"); if (this.mInterval != l) { this.mInterval = l; postHandlerForUrlLoad(Boolean.valueOf(false), this.mLooper); postHandlerForUrlLoad(Boolean.valueOf(true), this.mLooper); } } if (localJSONObject.has("fq")) { String str = localJSONObject.getString("fq"); if ((!str.equals("")) && (!str.equals(this.mFq))) { this.mFq = str; if (this.mSettings != null) { this.mSettings.setFrequency(this.mFq); } } } this.hasDspName = localJSONObject.has("dsp_name"); if (this.mType.equals("img")) { this.mAdBaseView = this.mBannerView; } for (;;) { this.mAdBaseView.setOrientation(this.mOrientation); this.mAdBaseView.setModleName(this.mModelName); this.mAdBaseView.parseJson(paramString); this.mAdBaseView.loadAdData(); this.mAid = localJSONObject.getString("aid"); bool2 = true; break label422; if (!this.mType.equals("html")) { break label388; } if (!this.hasDspName) { break; } this.mAdBaseView = this.mRtbView; this.mRtbView.setEncode(this.mEncoding); } } catch (JSONException localJSONException) { for (;;) { if (this.mDebugging.booleanValue()) { localJSONException.printStackTrace(); } bool2 = false; break; this.mAdBaseView = this.mHtmlView; this.mHtmlView.setEncode(this.mEncoding); } } catch (Exception localException) { boolean bool2; for (;;) { if (this.mDebugging.booleanValue()) { localException.printStackTrace(); } bool2 = false; break; label388: if (this.mType.equals("giftext")) { this.mAdBaseView = this.mGiftextView; this.mGiftextView.setEncode(this.mEncoding); } } label422: bool1 = bool2; } } } private void postHandlerForUrlLoad(Boolean paramBoolean, Runnable paramRunnable) { long l; if (paramBoolean.booleanValue()) { if ((this.mEnableRotate == this.ROTATE_ENABLE) && (!this.isPostedtoHandler.booleanValue()) && (this.mVisibility == 0)) { Handler localHandler = this.handler; if (this.mInterval != 0L) { break label71; } l = 10000L; localHandler.postDelayed(paramRunnable, l); } } for (this.isPostedtoHandler = Boolean.valueOf(true);; this.isPostedtoHandler = Boolean.valueOf(false)) { return; label71: l = this.mInterval; break; this.handler.removeCallbacks(paramRunnable); } } private void refresh() { try { removeAllViews(); if (!isEmptyAd()) { this.mAdBaseView.loadView(); addView(this.mAdBaseView); sendImpApi(); this.mAdBaseView.doAnimation(this.mRotationAnimation); this.mAdBaseView.setClickAnimation(this.mClickAnimation); } return; } catch (Exception localException) { for (;;) { if (this.mDebugging.booleanValue()) { localException.printStackTrace(); } } } } private void sendImpApi() { AsyncTask local3 = new AsyncTask() { protected Boolean doInBackground(String... paramAnonymousVarArgs) { boolean bool = false; if ((paramAnonymousVarArgs[0] != null) && (paramAnonymousVarArgs[0].length() != 0) && (AMoAdView.this.executeHttpGet(paramAnonymousVarArgs[0]))) { bool = true; } return Boolean.valueOf(bool); } protected void onPostExecute(Boolean paramAnonymousBoolean) { if (!paramAnonymousBoolean.booleanValue()) { AMoAdView.this.logCat("Failed calling imp api."); } } }; String[] arrayOfString = new String[1]; arrayOfString[0] = this.mImpUrl; local3.execute(arrayOfString); } private void sendPayload() { if ((this.mUid == null) || (this.mUid.length() == 0)) {} for (;;) { return; WebView localWebView = new WebView(this.mContext); localWebView.getSettings().setJavaScriptEnabled(true); Object[] arrayOfObject = new Object[2]; arrayOfObject[0] = this.mUid; arrayOfObject[1] = "http://j.amoad.com/js/r.js"; localWebView.loadData(String.format("<html><head></head><body><script type='text/javascript'>var amoad_enable_ids=true;var amoad_uid='%s';var amoad_enable_android=true;</script><script src='%s' ></script></body></html>", arrayOfObject), "text/html", "utf-8"); } } protected void onWindowVisibilityChanged(int paramInt) { logCat("onWindowVisibilityChanged :" + String.valueOf(paramInt)); this.mVisibility = paramInt; if (paramInt == 0) { postHandlerForUrlLoad(Boolean.valueOf(true), this.mLooper); } for (;;) { return; postHandlerForUrlLoad(Boolean.valueOf(false), this.mLooper); } } public void requestFreshAd() { doUrlLoad(); } public void setCallback(AdCallback paramAdCallback) { this.mCallback = paramAdCallback; } public void setClickAanimation(boolean paramBoolean) { this.mClickAnimation = paramBoolean; } public void setContentSizeIdentifier(int paramInt) {} public void setRotationAnimation(int paramInt) { this.mRotationAnimation = paramInt; } public void setSid(String paramString) { this.mSid = paramString; } public void startRotation() { this.mEnableRotate = this.ROTATE_ENABLE; postHandlerForUrlLoad(Boolean.valueOf(true), this.mLooper); } public void stopRotation() { this.mEnableRotate = this.ROTATE_DISABLE; postHandlerForUrlLoad(Boolean.valueOf(false), this.mLooper); } private class GetAdTask extends AsyncTask<String, Void, Boolean> { private GetAdTask() {} protected Boolean doInBackground(String... paramVarArgs) { AMoAdView.access$1002(AMoAdView.this, 0); return Boolean.valueOf(AMoAdView.this.getAdContent(AMoAdView.this.mUrl)); } protected void onPostExecute(Boolean paramBoolean) { if (paramBoolean.booleanValue()) { AMoAdView.this.refresh(); if ((AMoAdView.this.mCallback != null) && (AMoAdView.this.mCallbackCnt == 0)) { if (!AMoAdView.this.isEmptyAd()) { break label65; } AMoAdView.this.mCallback.didReceiveEmptyAd(); AMoAdView.access$1008(AMoAdView.this); } } for (;;) { return; label65: AMoAdView.this.mCallback.didReceiveAd(); break; if ((AMoAdView.this.mCallback != null) && (AMoAdView.this.mCallbackCnt == 0)) { AMoAdView.this.mCallback.didFailToReceiveAdWithError(); AMoAdView.access$1008(AMoAdView.this); } } } } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: com.amoad.AMoAdView * JD-Core Version: 0.7.0.1 */