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);
}