package com.drcom.Android.DrCOMWS.Tool; import android.content.Context; import android.content.SharedPreferences; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Handler; import android.os.Message; import android.util.Log; import com.brady.jlulife.R; import com.drcom.Android.DrCOMWS.Jni; import com.drcom.Android.DrCOMWS.listener.OnclientLoginListener; import com.drcom.Android.DrCOMWS.listener.OnclientLogoutListener; import com.drcom.Android.DrCOMWS.listener.OnclientStatusRefreshListener; public class DrCOMWSManagement { private static int CALLBACK_FAIL = 0; private static int CALLBACK_NOWIFI = 2; private static int CALLBACK_SUCCEED = 1; private static int NOWIFI_CODE = -101; private Jni auth = new Jni(); private Context mContext; private Handler mHandlerLogin = new Handler() { public void handleMessage(Message paramAnonymousMessage) { super.handleMessage(paramAnonymousMessage); if (paramAnonymousMessage.what == DrCOMWSManagement.CALLBACK_SUCCEED) { DrCOMWSManagement.this.mLoginListener.clientLoginSuccess(DrCOMWSManagement.this.auth.getLoginStatus()); }else { if (paramAnonymousMessage.what == DrCOMWSManagement.CALLBACK_NOWIFI) { Log.i(getClass().getSimpleName(), "reason 1"); DrCOMWSManagement.this.mLoginListener.clientLoginFail(paramAnonymousMessage.arg1); } else { Log.i(getClass().getSimpleName(), "reason 2" + paramAnonymousMessage.what); DrCOMWSManagement.this.mLoginListener.clientLoginFail(paramAnonymousMessage.arg1); } } } }; private Handler mHandlerLogout = new Handler() { public void handleMessage(Message paramAnonymousMessage) { super.handleMessage(paramAnonymousMessage); if (paramAnonymousMessage.what == DrCOMWSManagement.CALLBACK_SUCCEED) { DrCOMWSManagement.this.mLogoutListener.clientLogoutSuccess(DrCOMWSManagement.this.auth.getLoginStatus()); }else { DrCOMWSManagement.this.mLogoutListener.clientLogoutFail(paramAnonymousMessage.arg1); } } }; private Handler mHandlerStatusRefresh = new Handler() { public void handleMessage(Message paramAnonymousMessage) { super.handleMessage(paramAnonymousMessage); if (paramAnonymousMessage.what == DrCOMWSManagement.CALLBACK_SUCCEED) { String[] arrayOfString = (String[]) paramAnonymousMessage.obj; DrCOMWSManagement.this.mStatusRefreshListener.clientStatusUpdated(arrayOfString[0], arrayOfString[1]); }else { DrCOMWSManagement.this.mStatusRefreshListener.clientOffLine(); } } }; private OnclientLoginListener mLoginListener; private OnclientLogoutListener mLogoutListener; private OnclientStatusRefreshListener mStatusRefreshListener; private SharedPreferences m_spfConf = null; private String m_strGWAddress = ""; public DrCOMWSManagement(Context paramContext) { this.mContext = paramContext; this.m_spfConf = this.mContext.getSharedPreferences("DrCOMClientWS", 0); this.m_strGWAddress = getPreferences("DrCOMUrl"); if (!this.m_strGWAddress.equals("")) { this.auth.setGatwatAddress(this.m_strGWAddress); } } private String getPreferences(String paramString) { Object localObject = this.m_spfConf.getString(paramString, ""); if (((String) localObject).length() > 0) try { Log.e("Localobj", "length" + localObject.toString().length()); Log.e("LocalObj", localObject.toString()); String str = AES128.decrypt("DrCOMClientWS", (String) localObject); localObject = str; } catch (Exception localException) { localException.printStackTrace(); } if (localObject == null) { Log.e(getClass().getSimpleName(), "local object is null"); return ""; } return (String) localObject; } private boolean putPreferences(String paramString1, String paramString2) { Object localObject = ""; try { String str = AES128.encrypt("DrCOMClientWS", paramString2); localObject = str; } catch (Exception localException) { localException.printStackTrace(); } SharedPreferences.Editor localEditor; localEditor = this.m_spfConf.edit(); localEditor.putString(paramString1, (String) localObject); return localEditor.commit(); } public void clientLogin(final String paramString1, final String paramString2, OnclientLoginListener paramOnclientLoginListener) { Log.e(getClass().getSimpleName(), "start login"); this.mLoginListener = paramOnclientLoginListener; new Thread(new Runnable() { public void run() { WifiManager localWifiManager = (WifiManager) DrCOMWSManagement.this.mContext.getSystemService(Context.WIFI_SERVICE); int i; if (localWifiManager.isWifiEnabled()) { WifiInfo localWifiInfo = localWifiManager.getConnectionInfo(); if (localWifiInfo != null) { DrCOMWSManagement.this.auth.setSSID(localWifiInfo.getSSID()); } i = DrCOMWSManagement.this.auth.httpLogin(DrCOMWSManagement.this.m_strGWAddress, paramString1, paramString2); Log.e(getClass().getSimpleName(), "i=" + i); if (i == 1) { DrCOMWSManagement.this.m_strGWAddress = DrCOMWSManagement.this.auth.getGatewayAddress(); DrCOMWSManagement.this.putPreferences("DrCOMUrl", DrCOMWSManagement.this.m_strGWAddress); DrCOMWSManagement.this.mHandlerLogin.sendEmptyMessage(DrCOMWSManagement.CALLBACK_SUCCEED); } else { Message localMessage2 = new Message(); localMessage2.what = DrCOMWSManagement.CALLBACK_FAIL; localMessage2.arg1 = i; DrCOMWSManagement.this.mHandlerLogin.sendMessage(localMessage2); } } else { Message localMessage1 = new Message(); localMessage1.what = DrCOMWSManagement.CALLBACK_NOWIFI; localMessage1.arg1 = DrCOMWSManagement.NOWIFI_CODE; DrCOMWSManagement.this.mHandlerLogin.sendMessage(localMessage1); } } }).start(); } public void clientLogout(OnclientLogoutListener paramOnclientLogoutListener) { this.mLogoutListener = paramOnclientLogoutListener; new Thread(new Runnable() { public void run() { int i = DrCOMWSManagement.this.auth.httpLogout(); if (i == 1) { DrCOMWSManagement.this.m_strGWAddress = ""; DrCOMWSManagement.this.mHandlerLogout.sendEmptyMessage(DrCOMWSManagement.CALLBACK_SUCCEED); } else { Message localMessage = new Message(); localMessage.what = DrCOMWSManagement.CALLBACK_FAIL; localMessage.arg1 = i; DrCOMWSManagement.this.mHandlerLogout.sendMessage(localMessage); } } }).start(); } public void clientStatusRefresh(OnclientStatusRefreshListener paramOnclientStatusRefreshListener) { this.mStatusRefreshListener = paramOnclientStatusRefreshListener; new Thread(new Runnable() { public void run() { boolean bool = DrCOMWSManagement.this.auth.httpStatus(); if (bool) { String str1 = DrCOMWSManagement.this.auth.getTimeStatus(); String str2 = DrCOMWSManagement.this.auth.getFluxStatus(); Message localMessage = new Message(); localMessage.what = DrCOMWSManagement.CALLBACK_SUCCEED; String[] arrayOfString = new String[2]; arrayOfString[0] = str1; arrayOfString[1] = str2; localMessage.obj = arrayOfString; DrCOMWSManagement.this.mHandlerStatusRefresh.sendMessage(localMessage); } DrCOMWSManagement.this.mHandlerStatusRefresh.sendEmptyMessage(DrCOMWSManagement.CALLBACK_FAIL); } }).start(); } public int getErrorStringByCode(int paramInt) { switch (paramInt){ case -130: return R.string.err_wrong_pwd; case -108: return R.string.err_wrong_uname; case -102: return R.string.err_use_nat; case -104: return R.string.err_is_login; case -101: return R.string.err_network_unavailable; default: return R.string.err_default; } } public String getPortalIP() { return this.m_strGWAddress; } public String getTimeStatus() { return auth.getTimeStatus(); } public String getFlowStatus() { return auth.getFluxStatus(); } public boolean getLoginStatus() { return auth.getLoginStatus(); } }