public void getWiFiStats()

in android/sdk/src/main/java/org/jitsi/meet/sdk/WiFiStatsModule.java [116:202]


    public void getWiFiStats(final Promise promise) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    Context context
                        = getReactApplicationContext().getApplicationContext();
                    WifiManager wifiManager
                        = (WifiManager) context
                            .getSystemService(Context.WIFI_SERVICE);

                    if (!wifiManager.isWifiEnabled()) {
                        promise.reject(new Exception("Wifi not enabled"));
                        return;
                    }

                    WifiInfo wifiInfo = wifiManager.getConnectionInfo();

                    if (wifiInfo.getNetworkId() == -1) {
                        promise.reject(new Exception("Wifi not connected"));
                        return;
                    }

                    int rssi = wifiInfo.getRssi();
                    int signalLevel
                        = WifiManager.calculateSignalLevel(
                            rssi, SIGNAL_LEVEL_SCALE);

                    JSONObject result = new JSONObject();
                    result.put("rssi", rssi)
                        .put("signal", signalLevel)
                        .put("timestamp", System.currentTimeMillis());

                    JSONArray addresses = new JSONArray();

                    InetAddress wifiAddress
                        = toInetAddress(wifiInfo.getIpAddress());

                    try {
                        Enumeration<NetworkInterface> e
                            =  NetworkInterface.getNetworkInterfaces();
                        while (e.hasMoreElements()) {
                            NetworkInterface networkInterface = e.nextElement();
                            boolean found = false;

                            // first check whether this is the desired interface
                            Enumeration<InetAddress> as
                                = networkInterface.getInetAddresses();
                            while (as.hasMoreElements()) {
                                InetAddress a = as.nextElement();
                                if(a.equals(wifiAddress)) {
                                    found = true;
                                    break;
                                }
                            }

                            if (found) {
                                // interface found let's put addresses
                                // to the result object
                                as = networkInterface.getInetAddresses();
                                while (as.hasMoreElements()) {
                                    InetAddress a = as.nextElement();
                                    if (a.isLinkLocalAddress())
                                        continue;

                                    addresses.put(a.getHostAddress());
                                }
                            }

                        }
                    } catch (SocketException e) {
                        JitsiMeetLogger.e(e, TAG + " Unable to NetworkInterface.getNetworkInterfaces()");
                    }

                    result.put("addresses", addresses);
                    promise.resolve(result.toString());

                    JitsiMeetLogger.d(TAG + " WiFi stats: " + result.toString());
                } catch (Throwable e) {
                    JitsiMeetLogger.e(e, TAG + " Failed to obtain wifi stats");
                    promise.reject(
                        new Exception("Failed to obtain wifi stats"));
                }
            }
        };
        executor.execute(r);
    }