ActivityControlWiFi.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. package com.epson.mobilephone.common.wifidirect;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.app.Dialog;
  5. import android.content.BroadcastReceiver;
  6. import android.content.Context;
  7. import android.content.DialogInterface;
  8. import android.content.Intent;
  9. import android.content.IntentFilter;
  10. import android.net.NetworkInfo;
  11. import android.net.wifi.SupplicantState;
  12. import android.net.wifi.WifiManager;
  13. import android.os.AsyncTask;
  14. import android.os.Bundle;
  15. public class ActivityControlWiFi extends Activity {
  16. public static final int SCANNING_TIMEOUT = 10000;
  17. public static final String SHOWPROGRESS = "com.epson.iprint.wifidirect.progress";
  18. public static final String SHOWWIFISETTINGS = "com.epson.iprint.wifidirect.wifisettings";
  19. public static final String TAG = "ActivityControlWiFi";
  20. final int IDD_NO_WIFI = 0;
  21. final int ID_SHOWWIFISETTINGS = 0;
  22. final int MAX_RETRY_SCANNING = 5;
  23. WifiManager mWifiManager = null;
  24. NetworkStateChangeReciever networkStateChangeReciever = null;
  25. int scancount = 0;
  26. ScanningObserver scannigObserver = new ScanningObserver();
  27. boolean showProgress = false;
  28. boolean showWifiSettings = false;
  29. protected void onCreate(Bundle bundle) {
  30. EPLog.m86d(TAG, "onCreate()");
  31. super.onCreate(bundle);
  32. mWifiManager = (WifiManager) getApplicationContext().getSystemService(Service.WIFI_SERVICE);
  33. requestWindowFeature(1);
  34. Bundle extras = getIntent().getExtras();
  35. if (extras != null) {
  36. showProgress = extras.getBoolean(SHOWPROGRESS, false);
  37. showWifiSettings = extras.getBoolean(SHOWWIFISETTINGS, false);
  38. }
  39. if (this.showProgress) {
  40. setContentView(C1113R.layout.progress);
  41. }
  42. if (this.showWifiSettings) {
  43. WiFiUtils.showOsWifiSettings(this, 0);
  44. } else if (!mWifiManager.isWifiEnabled()) {
  45. showDialog(0);
  46. } else {
  47. EPLog.m86d(TAG, "Already WiFi Enabled");
  48. onOK();
  49. }
  50. }
  51. protected void onResume() {
  52. EPLog.m86d(TAG, "onResume()");
  53. super.onResume();
  54. NfcDispatchUtils.enableForegroundDispatch(this, (IntentFilter[]) null, (String[][]) null);
  55. }
  56. protected void onPause() {
  57. super.onPause();
  58. NfcDispatchUtils.disableForegroundDispatch(this);
  59. }
  60. protected void onActivityResult(int i, int i2, Intent intent) {
  61. EPLog.m86d(TAG, "onActivityResult()");
  62. super.onActivityResult(i, i2, intent);
  63. if (i == 0) {
  64. switch (mWifiManager.getWifiState()) {
  65. case 2:
  66. case 3:
  67. registerReciever();
  68. mWifiManager.startScan();
  69. return;
  70. default:
  71. onCancel();
  72. return;
  73. }
  74. }
  75. }
  76. protected void onDestroy() {
  77. EPLog.m86d(TAG, "onDestroy()");
  78. super.onDestroy();
  79. if (this.networkStateChangeReciever != null) {
  80. EPLog.m86d(TAG, "unregisterReceiver()");
  81. unregisterReceiver(this.networkStateChangeReciever);
  82. networkStateChangeReciever = null;
  83. }
  84. scannigObserver.interrunpt();
  85. }
  86. protected Dialog onCreateDialog(int i) {
  87. return i != 0 ? super.onCreateDialog(i) : new AlertDialog.Builder(this).setPositiveButton(getString(17039370), new DialogInterface.OnClickListener() {
  88. public void onClick(DialogInterface dialogInterface, int i) {
  89. ActivityControlWiFi.this.registerReciever();
  90. boolean wifiEnabled = ActivityControlWiFi.mWifiManager.setWifiEnabled(true);
  91. EPLog.m86d(ActivityControlWiFi.TAG, "setWifiEnabled return " + wifiEnabled);
  92. if (!wifiEnabled) {
  93. WiFiUtils.showOsWifiSettings(ActivityControlWiFi.this, 0);
  94. }
  95. }
  96. }).setNegativeButton(getString(17039360), new DialogInterface.OnClickListener() {
  97. public void onClick(DialogInterface dialogInterface, int i) {
  98. ActivityControlWiFi.this.onCancel();
  99. }
  100. }).setMessage(getString(C1113R.string.str_no_wifi)).setCancelable(false).create();
  101. }
  102. private void onOK() {
  103. EPLog.m86d(TAG, "finish():RESULT_OK");
  104. setResult(-1);
  105. finish();
  106. }
  107. private void onCancel() {
  108. EPLog.m86d(TAG, "finish():RESULT_CANCELED");
  109. setResult(0);
  110. finish();
  111. }
  112. private void registerReciever() {
  113. if (this.networkStateChangeReciever == null) {
  114. EPLog.m86d(TAG, "registerReceiver()");
  115. networkStateChangeReciever = new NetworkStateChangeReciever();
  116. registerReceiver(this.networkStateChangeReciever, new IntentFilter("android.net.wifi.STATE_CHANGE"));
  117. registerReceiver(this.networkStateChangeReciever, new IntentFilter("android.net.wifi.WIFI_STATE_CHANGED"));
  118. registerReceiver(this.networkStateChangeReciever, new IntentFilter("android.net.wifi.supplicant.STATE_CHANGE"));
  119. }
  120. }
  121. class NetworkStateChangeReciever extends BroadcastReceiver {
  122. NetworkStateChangeReciever() {
  123. }
  124. public void onReceive(Context context, Intent intent) {
  125. String action = intent.getAction();
  126. if (action.equals("android.net.wifi.WIFI_STATE_CHANGED")) {
  127. EPLog.m86d(ActivityControlWiFi.TAG, String.format("WiFi State Change : wifiState = %d", new Object[]{Integer.valueOf(intent.getIntExtra("wifi_state", 4))}));
  128. } else if (action.equals("android.net.wifi.STATE_CHANGE")) {
  129. NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra("networkInfo");
  130. EPLog.m86d(ActivityControlWiFi.TAG, "Network State Changed:" + networkInfo.toString());
  131. if (ActivityControlWiFi.mWifiManager.isWifiEnabled()) {
  132. switch (C10903.$SwitchMap$android$net$NetworkInfo$State[networkInfo.getState().ordinal()]) {
  133. case 1:
  134. ActivityControlWiFi.this.scannigObserver.interrunpt();
  135. ActivityControlWiFi.this.onOK();
  136. return;
  137. case 2:
  138. ActivityControlWiFi.this.scannigObserver.interrunpt();
  139. return;
  140. default:
  141. return;
  142. }
  143. }
  144. } else if (action.equals("android.net.wifi.supplicant.STATE_CHANGE")) {
  145. SupplicantState supplicantState = (SupplicantState) intent.getParcelableExtra("newState");
  146. EPLog.m86d(ActivityControlWiFi.TAG, "Supplicant State Changed: State = " + supplicantState.toString());
  147. switch (C10903.$SwitchMap$android$net$wifi$SupplicantState[supplicantState.ordinal()]) {
  148. case 1:
  149. ActivityControlWiFi.this.scancount++;
  150. if (ActivityControlWiFi.this.scancount > 5) {
  151. ActivityControlWiFi.this.onOK();
  152. return;
  153. } else {
  154. ActivityControlWiFi.this.scannigObserver.start();
  155. return;
  156. }
  157. case 2:
  158. ActivityControlWiFi.this.scannigObserver.interrunpt();
  159. return;
  160. case 3:
  161. case 4:
  162. ActivityControlWiFi.this.onOK();
  163. return;
  164. case 5:
  165. ActivityControlWiFi.this.scannigObserver.start();
  166. return;
  167. default:
  168. return;
  169. }
  170. }
  171. }
  172. }
  173. /* renamed from: com.epson.mobilephone.common.wifidirect.ActivityControlWiFi$3 */
  174. static /* synthetic */ class C10903 {
  175. static final /* synthetic */ int[] $SwitchMap$android$net$NetworkInfo$State = new int[NetworkInfo.State.values().length];
  176. static final /* synthetic */ int[] $SwitchMap$android$net$wifi$SupplicantState = new int[SupplicantState.values().length];
  177. /* JADX WARNING: Can't wrap try/catch for region: R(17:0|(2:1|2)|3|5|6|7|8|9|10|11|12|13|15|16|17|18|20) */
  178. /* JADX WARNING: Can't wrap try/catch for region: R(18:0|1|2|3|5|6|7|8|9|10|11|12|13|15|16|17|18|20) */
  179. /* JADX WARNING: Code restructure failed: missing block: B:21:?, code lost:
  180. return;
  181. */
  182. /* JADX WARNING: Failed to process nested try/catch */
  183. /* JADX WARNING: Missing exception handler attribute for start block: B:11:0x0035 */
  184. /* JADX WARNING: Missing exception handler attribute for start block: B:17:0x0053 */
  185. /* JADX WARNING: Missing exception handler attribute for start block: B:7:0x001f */
  186. /* JADX WARNING: Missing exception handler attribute for start block: B:9:0x002a */
  187. static {
  188. /*
  189. android.net.wifi.SupplicantState[] r0 = android.net.wifi.SupplicantState.values()
  190. int r0 = r0.length
  191. int[] r0 = new int[r0]
  192. $SwitchMap$android$net$wifi$SupplicantState = r0
  193. r0 = 1
  194. int[] r1 = $SwitchMap$android$net$wifi$SupplicantState // Catch:{ NoSuchFieldError -> 0x0014 }
  195. android.net.wifi.SupplicantState r2 = android.net.wifi.SupplicantState.SCANNING // Catch:{ NoSuchFieldError -> 0x0014 }
  196. int r2 = r2.ordinal() // Catch:{ NoSuchFieldError -> 0x0014 }
  197. r1[r2] = r0 // Catch:{ NoSuchFieldError -> 0x0014 }
  198. L_0x0014:
  199. r1 = 2
  200. int[] r2 = $SwitchMap$android$net$wifi$SupplicantState // Catch:{ NoSuchFieldError -> 0x001f }
  201. android.net.wifi.SupplicantState r3 = android.net.wifi.SupplicantState.ASSOCIATING // Catch:{ NoSuchFieldError -> 0x001f }
  202. int r3 = r3.ordinal() // Catch:{ NoSuchFieldError -> 0x001f }
  203. r2[r3] = r1 // Catch:{ NoSuchFieldError -> 0x001f }
  204. L_0x001f:
  205. int[] r2 = $SwitchMap$android$net$wifi$SupplicantState // Catch:{ NoSuchFieldError -> 0x002a }
  206. android.net.wifi.SupplicantState r3 = android.net.wifi.SupplicantState.INACTIVE // Catch:{ NoSuchFieldError -> 0x002a }
  207. int r3 = r3.ordinal() // Catch:{ NoSuchFieldError -> 0x002a }
  208. r4 = 3
  209. r2[r3] = r4 // Catch:{ NoSuchFieldError -> 0x002a }
  210. L_0x002a:
  211. int[] r2 = $SwitchMap$android$net$wifi$SupplicantState // Catch:{ NoSuchFieldError -> 0x0035 }
  212. android.net.wifi.SupplicantState r3 = android.net.wifi.SupplicantState.DORMANT // Catch:{ NoSuchFieldError -> 0x0035 }
  213. int r3 = r3.ordinal() // Catch:{ NoSuchFieldError -> 0x0035 }
  214. r4 = 4
  215. r2[r3] = r4 // Catch:{ NoSuchFieldError -> 0x0035 }
  216. L_0x0035:
  217. int[] r2 = $SwitchMap$android$net$wifi$SupplicantState // Catch:{ NoSuchFieldError -> 0x0040 }
  218. android.net.wifi.SupplicantState r3 = android.net.wifi.SupplicantState.DISCONNECTED // Catch:{ NoSuchFieldError -> 0x0040 }
  219. int r3 = r3.ordinal() // Catch:{ NoSuchFieldError -> 0x0040 }
  220. r4 = 5
  221. r2[r3] = r4 // Catch:{ NoSuchFieldError -> 0x0040 }
  222. L_0x0040:
  223. android.net.NetworkInfo$State[] r2 = android.net.NetworkInfo.State.values()
  224. int r2 = r2.length
  225. int[] r2 = new int[r2]
  226. $SwitchMap$android$net$NetworkInfo$State = r2
  227. int[] r2 = $SwitchMap$android$net$NetworkInfo$State // Catch:{ NoSuchFieldError -> 0x0053 }
  228. android.net.NetworkInfo$State r3 = android.net.NetworkInfo.State.CONNECTED // Catch:{ NoSuchFieldError -> 0x0053 }
  229. int r3 = r3.ordinal() // Catch:{ NoSuchFieldError -> 0x0053 }
  230. r2[r3] = r0 // Catch:{ NoSuchFieldError -> 0x0053 }
  231. L_0x0053:
  232. int[] r0 = $SwitchMap$android$net$NetworkInfo$State // Catch:{ NoSuchFieldError -> 0x005d }
  233. android.net.NetworkInfo$State r2 = android.net.NetworkInfo.State.CONNECTING // Catch:{ NoSuchFieldError -> 0x005d }
  234. int r2 = r2.ordinal() // Catch:{ NoSuchFieldError -> 0x005d }
  235. r0[r2] = r1 // Catch:{ NoSuchFieldError -> 0x005d }
  236. L_0x005d:
  237. return
  238. */
  239. throw new UnsupportedOperationException("Method not decompiled: com.epson.mobilephone.common.wifidirect.ActivityControlWiFi.C10903.<clinit>():void");
  240. }
  241. }
  242. class ScanningObserver {
  243. AsyncTask<Void, Void, Void> observerTask = null;
  244. ScanningObserver() {
  245. }
  246. private void start() {
  247. interrunpt();
  248. EPLog.m86d(ActivityControlWiFi.TAG, "Start ScanningObserver");
  249. observerTask = new AsyncTask<Void, Void, Void>() {
  250. protected Void doInBackground(Void... voidArr) {
  251. int i = 0;
  252. while (i < 10000) {
  253. try {
  254. Thread.sleep(100);
  255. i += 100;
  256. if (isCancelled()) {
  257. return null;
  258. }
  259. } catch (InterruptedException e) {
  260. e.printStackTrace();
  261. return null;
  262. }
  263. }
  264. return null;
  265. }
  266. protected void onPostExecute(Void voidR) {
  267. EPLog.m88i(ActivityControlWiFi.TAG, "Timeout ScanningObserver");
  268. ActivityControlWiFi.this.onOK();
  269. }
  270. }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  271. }
  272. private void interrunpt() {
  273. AsyncTask<Void, Void, Void> asyncTask = observerTask;
  274. if (asyncTask != null && asyncTask.getStatus() == AsyncTask.Status.RUNNING && !this.observerTask.isCancelled()) {
  275. EPLog.m86d(ActivityControlWiFi.TAG, "Stop ScanningObserver");
  276. observerTask.cancel(false);
  277. }
  278. }
  279. }
  280. }