ActivityConnectSimpleAP.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. package com.epson.mobilephone.common.wifidirect;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.IntentFilter;
  6. import android.net.NetworkInfo;
  7. import android.net.wifi.SupplicantState;
  8. import android.os.AsyncTask;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.os.Handler;
  12. import android.os.Message;
  13. import android.widget.Toast;
  14. import androidx.annotation.Nullable;
  15. import androidx.fragment.app.DialogFragment;
  16. import androidx.lifecycle.Observer;
  17. import androidx.lifecycle.ViewModelProviders;
  18. import java.util.Deque;
  19. import epson.print.R;
  20. import epson.print.Util.EPLog;
  21. public class ActivityConnectSimpleAP extends ActivityConnectBase implements DialogProgressWiFiDirect.DialogButtonClick {
  22. private static final int DELAY_CONNECTED_WIFI = 1000;
  23. private static final String IDD_WIFI_ERROR = "idd_wifi_error";
  24. private static final String IDD_WIFI_PROFILE_FAILED = "idd_wifi_profile_failed";
  25. private static final String IDD_WIFI_SIMPLEAP = "idd_wifi_simpleap";
  26. private static final String IDD_WIFI_WAITING = "idd_wifi_waiting";
  27. private static final int ID_CHECK_WIIFISTATE = 11;
  28. private static final int ID_CONNECTED_WIFI = 10;
  29. private static final int ID_FOUND = 1;
  30. private static final int ID_NOT_FOUND = 2;
  31. private static final int ID_RESULT = 0;
  32. private static final int MAX_RETRY_CONNECTING = 5;
  33. private static final String TAG = "ActivityConnectSimpleAP";
  34. private int connectingNetworkId = -1;
  35. boolean createSimpleAP = false;
  36. Handler mHandler = new Handler() {
  37. public void handleMessage(Message message) {
  38. super.handleMessage(message);
  39. switch (C10874.f150x55760faf[status.ordinal()]) {
  40. case 1:
  41. if (message.what == 11) {
  42. if (Build.VERSION.SDK_INT > 25 && !createSimpleAP) {
  43. mModelDialog.doShow(IDD_WIFI_SIMPLEAP);
  44. return;
  45. } else if (!mWifiManager.isWifiEnabled()) {
  46. startActivityForResult(new Intent(ActivityConnectSimpleAP.this, ActivityControlWiFi.class), 1);
  47. return;
  48. } else {
  49. onEnabledWifi();
  50. return;
  51. }
  52. } else {
  53. return;
  54. }
  55. case 2:
  56. if (message.what == 0) {
  57. Bundle data = message.getData();
  58. if (data != null && !data.isEmpty()) {
  59. String removeSSIDPrefix = WiFiControl.removeSSIDPrefix(data.getString("ssid"));
  60. if (targetSsid.equals(removeSSIDPrefix)) {
  61. if (searchWiFiDirectPrinter != null) {
  62. searchWiFiDirectPrinter.interrupt();
  63. searchWiFiDirectPrinter = null;
  64. }
  65. int unused = connectingNetworkId = data.getInt("id");
  66. if (WiFiUtils.getInstance(ActivityConnectSimpleAP.this).enableSimpleAP(connectingNetworkId, removeSSIDPrefix)) {
  67. status = ActivityConnectBase.Status.WIFI_CONNECTING;
  68. setupObserver();
  69. break;
  70. } else {
  71. onError();
  72. break;
  73. }
  74. }
  75. } else {
  76. EPLog.e(TAG, "Not Found Network");
  77. status = ActivityConnectBase.Status.IDLE;
  78. onError();
  79. break;
  80. }
  81. }
  82. break;
  83. case 3:
  84. break;
  85. case 4:
  86. switch (message.what) {
  87. case 1:
  88. Bundle data2 = message.getData();
  89. if (data2 != null) {
  90. String string = data2.getString("name");
  91. String string2 = data2.getString(escprLib.PRINTER_IP);
  92. String string3 = data2.getString("id");
  93. if (string != null && string2 != null && string3 != null) {
  94. EPLog.i(TAG, "epsWrapperFindPrinter Success");
  95. if (!expectedPrtMacAddr.equals(MacAddrUtils.getMacAddressFromPrinterId(string3))) {
  96. EPLog.i(TAG, "This Printer is not expected " + string);
  97. return;
  98. }
  99. interruptFindingPrinter();
  100. Intent intent = new Intent();
  101. intent.putExtras(data2);
  102. onConnectedPrinter(intent);
  103. return;
  104. }
  105. return;
  106. }
  107. return;
  108. case 2:
  109. onError();
  110. return;
  111. default:
  112. return;
  113. }
  114. default:
  115. return;
  116. }
  117. if (message.what == 10) {
  118. status = ActivityConnectBase.Status.WIFI_CONNECTED;
  119. onConnectedWiFi();
  120. }
  121. }
  122. };
  123. private DialogProgressWiFiDirectViewModel mModelDialog;
  124. NetworkStateChangeReciever networkStateChangeReciever = null;
  125. private int retryConnecting = 0;
  126. String targetPass = "";
  127. public void onCancelDialog(String str) {
  128. }
  129. public void onNeutralClick(String str) {
  130. }
  131. static /* synthetic */ int access(ActivityConnectSimpleAP activityConnectSimpleAP) {
  132. int i = retryConnecting;
  133. retryConnecting = i + 1;
  134. return i;
  135. }
  136. protected void onCreate(Bundle bundle) {
  137. super.onCreate(bundle);
  138. mModelDialog = (DialogProgressWiFiDirectViewModel) ViewModelProviders.of(ActivityConnectSimpleAP.this).get(DialogProgressWiFiDirectViewModel.class);
  139. mModelDialog.getDialogJob().observe(this, new Observer<Deque<String[]>>() {
  140. public void onChanged(@Nullable Deque<String[]> deque) {
  141. String[] checkQueue = mModelDialog.checkQueue();
  142. if (checkQueue != null) {
  143. String str = checkQueue[0];
  144. String str2 = checkQueue[1];
  145. if (str2.equals("do_show")) {
  146. showDialog(str);
  147. }
  148. if (str2.equals("do_dismiss")) {
  149. dismissDialog(str);
  150. }
  151. }
  152. }
  153. });
  154. mModelDialog.doShow(IDD_WIFI_WAITING);
  155. Bundle extras = getIntent().getExtras();
  156. if (extras != null) {
  157. targetSsid = extras.getString(ActivityConnectBase.APNAME);
  158. targetPass = extras.getString(ActivityConnectBase.APPASS);
  159. showErrorDlg = extras.getBoolean(ActivityConnectBase.SHOWERROR, false);
  160. showConnectedTip = extras.getBoolean(ActivityConnectBase.SHOWTIP, true);
  161. createSimpleAP = extras.getBoolean(ActivityConnectBase.CREATE, false);
  162. needInfo = extras.getBoolean(ActivityConnectBase.NEEDINFO, false);
  163. timeout = extras.getInt(ActivityConnectBase.TIMEOUT, 30);
  164. }
  165. EPLog.i(TAG, "Starting connect :" + targetSsid + " timeout = " + timeout);
  166. mHandler.sendEmptyMessage(11);
  167. }
  168. protected void onActivityResult(int i, int i2, Intent intent) {
  169. super.onActivityResult(i, i2, intent);
  170. if (i != 2) {
  171. switch (i) {
  172. case 4:
  173. if (targetSsid.equals(WiFiUtils.getInstance(this).getCurSSID())) {
  174. onConnectedWiFi();
  175. return;
  176. }
  177. setResult(0);
  178. setLastDetailResult(2);
  179. finish();
  180. return;
  181. case 5:
  182. onEnabledWifi();
  183. return;
  184. default:
  185. return;
  186. }
  187. } else if (i2 != -1) {
  188. closeWaitingDialog();
  189. setResult(0);
  190. setLastDetailResult(1);
  191. finish();
  192. } else if (!searchWiFiDirectPrinter.start(1, mHandler, 0, timeout)) {
  193. onError();
  194. } else {
  195. status = ActivityConnectBase.Status.WIFI_SCANNING;
  196. }
  197. }
  198. protected void onEnabledWifi() {
  199. if (targetSsid.equals(WiFiUtils.getInstance(this).getCurSSID())) {
  200. EPLog.d(TAG, "Already Connected!!");
  201. status = ActivityConnectBase.Status.WIFI_CONNECTING;
  202. mHandler.sendEmptyMessage(10);
  203. return;
  204. }
  205. if (WifiP2pUtils.getInstance(this).isConnectedWiFiP2P()) {
  206. WifiP2pUtils.getInstance(this).disconnect();
  207. }
  208. if (createSimpleAP) {
  209. connectingNetworkId = WiFiUtils.getInstance(this).createSimpleAP(targetSsid, targetPass);
  210. if (connectingNetworkId == -1) {
  211. mModelDialog.doShow(IDD_WIFI_PROFILE_FAILED);
  212. return;
  213. }
  214. status = ActivityConnectBase.Status.WIFI_CONNECTING;
  215. setupObserver();
  216. return;
  217. }
  218. ActivityRequestLocationPermission.requestLocationPermissionForce(this, 2);
  219. }
  220. public void showDialog(java.lang.String r11) {
  221. throw new UnsupportedOperationException("Method not decompiled: com.epson.mobilephone.common.wifidirect.showDialog(java.lang.String):void");
  222. }
  223. private void dismissDialog(String str) {
  224. DialogFragment dialogFragment = (DialogFragment) getSupportFragmentManager().findFragmentByTag(str);
  225. if (dialogFragment != null) {
  226. dialogFragment.dismiss();
  227. }
  228. }
  229. protected void interruptConnecting() {
  230. super.interruptConnecting();
  231. NetworkStateChangeReciever networkStateChangeReciever2 = networkStateChangeReciever;
  232. if (networkStateChangeReciever2 != null) {
  233. try {
  234. unregisterReceiver(networkStateChangeReciever2);
  235. } catch (IllegalArgumentException e) {
  236. e.printStackTrace();
  237. }
  238. networkStateChangeReciever = null;
  239. }
  240. }
  241. private void onConnectedWiFi() {
  242. EPLog.d(TAG, "onConnect()");
  243. interruptConnecting();
  244. new AsyncTask<Void, Void, Void>() {
  245. protected Void doInBackground(Void... voidArr) {
  246. WiFiUtils.getInstance(ActivityConnectSimpleAP.this).waitConnected();
  247. return null;
  248. }
  249. protected void onPostExecute(Void voidR) {
  250. ManageDefaultNetwork.getInstance(ActivityConnectSimpleAP.this).setDefaultNetworkSimpleAp();
  251. if (showConnectedTip) {
  252. ActivityConnectSimpleAP activityConnectSimpleAP = ActivityConnectSimpleAP.this;
  253. Toast.makeText(activityConnectSimpleAP, getString(R.string.str_notice_wifi_connected), 0).show();
  254. }
  255. if (!needInfo) {
  256. closeWaitingDialog();
  257. status = ActivityConnectBase.Status.IDLE;
  258. setResult(-1);
  259. ActivityConnectBase.setLastDetailResult(-1);
  260. finish();
  261. return;
  262. }
  263. if (taskFindPrinter != null) {
  264. EPLog.w(TAG, "Already called onConnect()");
  265. }
  266. String curP2PMacAdder = WiFiUtils.getInstance(ActivityConnectSimpleAP.this).getCurP2PMacAdder();
  267. expectedPrtMacAddr = WiFiControl.p2pAddr2PtrAddrP2P(curP2PMacAdder, (String) null);
  268. status = ActivityConnectBase.Status.PRINTER_FINDING;
  269. ActivityConnectSimpleAP activityConnectSimpleAP2 = ActivityConnectSimpleAP.this;
  270. activityConnectSimpleAP2.taskFindPrinter = new FindPrinterTask(activityConnectSimpleAP2.mHandler, timeout, 1, 2);
  271. taskFindPrinter.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  272. }
  273. }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  274. }
  275. private void onError() {
  276. closeWaitingDialog();
  277. Toast.makeText(this, getString(R.string.str_error_connecting_printer_short), 1).show();
  278. if (searchWiFiDirectPrinter != null) {
  279. searchWiFiDirectPrinter.interrupt();
  280. searchWiFiDirectPrinter = null;
  281. }
  282. if (status == ActivityConnectBase.Status.WIFI_CONNECTING && connectingNetworkId != -1) {
  283. interruptConnecting();
  284. WiFiUtils.getInstance(this).removeNetwork(connectingNetworkId);
  285. connectingNetworkId = -1;
  286. WiFiUtils.getInstance(this).reConnectNetwork();
  287. if (showErrorDlg) {
  288. mModelDialog.doShow(IDD_WIFI_ERROR);
  289. return;
  290. }
  291. }
  292. EPLog.d(TAG, "finish():RESULT_CANCELED");
  293. setResult(0);
  294. setLastDetailResult(2);
  295. finish();
  296. }
  297. private void closeWaitingDialog() {
  298. EPLog.d(TAG, "Called closeWaitingDialog()");
  299. try {
  300. mModelDialog.doDismiss(IDD_WIFI_WAITING);
  301. } catch (IllegalArgumentException unused) {
  302. EPLog.d(TAG, "IDD_WIFI_WATING already closed");
  303. }
  304. }
  305. /* renamed from: com.epson.mobilephone.common.wifidirect.ActivityConnectSimpleAP$4 */
  306. static /* synthetic */ class C10874 {
  307. /* renamed from: $SwitchMap$com$epson$mobilephone$common$wifidirect$ActivityConnectBase$Status */
  308. static final /* synthetic */ int[] f150x55760faf = new int[ActivityConnectBase.Status.values().length];
  309. }
  310. public void setupObserver() {
  311. super.setupObserver();
  312. networkStateChangeReciever = new NetworkStateChangeReciever();
  313. registerReceiver(networkStateChangeReciever, new IntentFilter("android.net.wifi.STATE_CHANGE"));
  314. registerReceiver(networkStateChangeReciever, new IntentFilter("android.net.wifi.WIFI_STATE_CHANGED"));
  315. registerReceiver(networkStateChangeReciever, new IntentFilter("android.net.wifi.supplicant.STATE_CHANGE"));
  316. }
  317. public void onPositiveClick(java.lang.String r5) {
  318. throw new UnsupportedOperationException("Method not decompiled: com.epson.mobilephone.common.wifidirect.onPositiveClick(java.lang.String):void");
  319. }
  320. public void onNegativeClick(java.lang.String r5) {
  321. throw new UnsupportedOperationException("Method not decompiled: com.epson.mobilephone.common.wifidirect.onNegativeClick(java.lang.String):void");
  322. }
  323. class NetworkStateChangeReciever extends BroadcastReceiver {
  324. NetworkStateChangeReciever() {
  325. }
  326. public void onReceive(Context context, Intent intent) {
  327. String action = intent.getAction();
  328. if (action.equals("android.net.wifi.WIFI_STATE_CHANGED")) {
  329. EPLog.d(TAG, String.format("WiFi State Change : wifiState = %d", new Object[]{Integer.valueOf(intent.getIntExtra("wifi_state", 4))}));
  330. } else if (action.equals("android.net.wifi.STATE_CHANGE")) {
  331. NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra("networkInfo");
  332. EPLog.d(TAG, "Network State Changed:" + networkInfo.toString());
  333. if (networkInfo.isConnected() && targetSsid.equals(WiFiUtils.getInstance(this).getCurSSID())) {
  334. EPLog.i(TAG, "Wi-Fi connected.");
  335. mHandler.sendEmptyMessageDelayed(10, 1000);
  336. }
  337. } else if (action.equals("android.net.wifi.supplicant.STATE_CHANGE")) {
  338. SupplicantState supplicantState = (SupplicantState) intent.getParcelableExtra("newState");
  339. EPLog.d(TAG, "Supplicant State Changed: State = " + supplicantState.toString());
  340. if (intent.hasExtra("supplicantError")) {
  341. Integer valueOf = Integer.valueOf(intent.getIntExtra("supplicantError", 0));
  342. EPLog.d(TAG, "Supplicant State Changed: ErrorCode = " + valueOf.toString());
  343. if (status == ActivityConnectBase.Status.WIFI_CONNECTING) {
  344. EPLog.d(TAG, "EXTRA_SUPPLICANT_ERROR");
  345. onError();
  346. return;
  347. }
  348. }
  349. if (supplicantState == SupplicantState.ASSOCIATING && status == ActivityConnectBase.Status.WIFI_CONNECTING) {
  350. access(ActivityConnectSimpleAP.this);
  351. if (retryConnecting > 5) {
  352. EPLog.d(TAG, "Connecting Retry timeout");
  353. onError();
  354. }
  355. }
  356. }
  357. }
  358. }
  359. }