public void getNetworkScanResults()

in packages/@fbcmobile-signalscan/android/src/main/java/com/fbc/signalscan/WiFiScanResultsModule.java [87:136]


  public void getNetworkScanResults(Promise promise) {
    Context context = reactContext.getApplicationContext();

    // Prepare Writable Map for ScanResults
    WritableMap map = Arguments.createMap();

    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
        != PackageManager.PERMISSION_GRANTED) {
      map.putString(ERROR_KEY, ERROR_CODE_PERMISSION);
      promise.resolve(map);
      Log.d(TAG, ERROR_PERMISSION);
      return;
    }

    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    if (wifiManager == null) {
      map.putString(ERROR_KEY, ERROR_CODE_WIFI_MANAGER);
      promise.resolve(map);
      Log.d(TAG, ERROR_WIFI_MANAGER);
      return;
    }

    if (!wifiManager.isWifiEnabled()) {
      map.putString(ERROR_KEY, ERROR_CODE_WIFI_DISABLED);
      promise.resolve(map);
      Log.d(TAG, ERROR_WIFI_DISABLED);
      return;
    }

    // Level of a Scan Result
    List<ScanResult> wifiList = wifiManager.getScanResults();
    for (ScanResult scanResult : wifiList) {
      WritableMap fields = Arguments.createMap();
      int level = WifiManager.calculateSignalLevel(scanResult.level, 5);
      fields.putString("ssid", scanResult.SSID);
      fields.putInt("strength", level);
      fields.putString("bssid", scanResult.BSSID);
      fields.putString("capabilities", scanResult.capabilities);
      fields.putInt("frequency", scanResult.frequency);
      fields.putInt("channel", getChannelFromFrequency(scanResult.frequency));
      fields.putString("band", getBandFromFrequency(scanResult.frequency));
      // Need API 23 for channelWidth
      if (android.os.Build.VERSION.SDK_INT >= 23) {
        fields.putInt("channelWidth", scanResult.channelWidth);
      }
      fields.putDouble("timestamp", scanResult.timestamp);
      map.putMap(scanResult.BSSID, fields);
    }
    promise.resolve(map);
  }