ActivityiPrintConnectStart.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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.wifi.ScanResult;
  7. import android.net.wifi.WifiManager;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.widget.Button;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. public class ActivityiPrintConnectStart extends ActivityWiFiDirectBase {
  15. private static final int ID_ENABLED_LOCATION_SETTINGS = 1;
  16. public static final String TAG = "ActivityiPrintConnectStart";
  17. boolean bFirstScanResultAvailable = true;
  18. Button btnNext;
  19. escprLib mEscprLib = new escprLib();
  20. WifiManager mWifiManager;
  21. NetworkStateChangeReciever networkStateChangeReciever = null;
  22. escprLib.ConnectStrings settingsTempAp = new escprLib.ConnectStrings();
  23. protected void onCreate(Bundle bundle) {
  24. super.onCreate(bundle);
  25. mWifiManager = (WifiManager) getApplicationContext().getSystemService(Service.WIFI_SERVICE);
  26. ViewGroup viewGroup = (ViewGroup) getLayoutInflater().inflate(R.layout.iprintconnect_start, (ViewGroup) null);
  27. setContentView((View) viewGroup);
  28. setupCommonHeaderControl(true, true);
  29. btnNext = (Button) viewGroup.findViewById(R.id.btn_next);
  30. btnNext.setOnClickListener(new View.OnClickListener() {
  31. public void onClick(View view) {
  32. startActivityForResult(new Intent(ActivityiPrintConnectStart.this, ActivityiPrintConnect.class), 10);
  33. }
  34. });
  35. mEscprLib.epsWrapperGetSetupConnectStrings(settingsTempAp);
  36. if (!ActivityRequestLocationPermission.canAccessWiFiInfo(this, 1)) {
  37. ActivityRequestLocationPermission.requestLocationPermissionForce(this, 1);
  38. } else {
  39. StartScan();
  40. }
  41. }
  42. private void StartScan() {
  43. if (WiFiUtils.getInstance(this).getCurSSID() != null) {
  44. startActivityForResult(new Intent(this, ActivityWiFiDirectError.class), 10);
  45. finish();
  46. return;
  47. }
  48. bFirstScanResultAvailable = true;
  49. mWifiManager.startScan();
  50. }
  51. protected void onResume() {
  52. super.onResume();
  53. networkStateChangeReciever = new NetworkStateChangeReciever();
  54. registerReceiver(networkStateChangeReciever, new IntentFilter("android.net.wifi.SCAN_RESULTS"));
  55. getWindow().addFlags(128);
  56. }
  57. protected void onPause() {
  58. super.onPause();
  59. NetworkStateChangeReciever networkStateChangeReciever2 = networkStateChangeReciever;
  60. if (networkStateChangeReciever2 != null) {
  61. unregisterReceiver(networkStateChangeReciever2);
  62. networkStateChangeReciever = null;
  63. }
  64. getWindow().clearFlags(128);
  65. }
  66. protected void onActivityResult(int i, int i2, Intent intent) {
  67. super.onActivityResult(i, i2, intent);
  68. if (i == 1) {
  69. if (i2 != -1) {
  70. onBackPressed();
  71. } else {
  72. StartScan();
  73. }
  74. }
  75. }
  76. private void onScanResultAvailable() {
  77. if (bFirstScanResultAvailable) {
  78. EPLog.w(TAG, "First onScanResultAvailable, ignore this");
  79. bFirstScanResultAvailable = false;
  80. } else {
  81. List<ScanResult> arrayList = new ArrayList<>();
  82. try {
  83. arrayList = mWifiManager.getScanResults();
  84. } catch (SecurityException e) {
  85. e.printStackTrace();
  86. }
  87. if (arrayList.size() != 0) {
  88. for (ScanResult scanResult : arrayList) {
  89. if (settingsTempAp.ssid.equals(WiFiUtils.removeQuotationsInSSID(scanResult.SSID))) {
  90. EPLog.d(TAG, "Found TempAP");
  91. btnNext.performClick();
  92. return;
  93. }
  94. }
  95. }
  96. }
  97. new WiFiScanner().startScan(mWifiManager);
  98. }
  99. class NetworkStateChangeReciever extends BroadcastReceiver {
  100. NetworkStateChangeReciever() {
  101. }
  102. public void onReceive(Context context, Intent intent) {
  103. if (intent.getAction().equals("android.net.wifi.SCAN_RESULTS")) {
  104. EPLog.d(ActivityiPrintConnectStart.TAG, "Scan Results Available");
  105. onScanResultAvailable();
  106. }
  107. }
  108. }
  109. }