ActivityControlWiFi.java 14 KB

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