Проверьте, подключен ли пользователь к WI-Fi на Android

Я разрабатываю игровое приложение, которое требует от пользователей хорошего Wi-Fi-соединения. И мне также нужно, чтобы оба пользователя знали, подключен ли другой пользователь к Wi-Fi или нет. Для разработки этого игрового приложения будет использоваться платформа Android.


person Deepu    schedule 03.11.2014    source источник
comment
возможный дубликат Определить тип сетевого подключения на Android   -  person Alan B    schedule 03.11.2014


Ответы (1)


Просто создайте следующий класс, который проверяет подключение к Интернету:

public class ConnectionStatus {

    private Context _context;

    public ConnectionStatus(Context context) {
        this._context = context;
    }

    public boolean isConnectionAvailable() {
        ConnectivityManager connectivity = (ConnectivityManager) _context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
                for (int i = 0; i < info.length; i++)
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
        }
        return false;
    }
}

Этот класс просто содержит метод, который возвращает логическое значение статуса соединения. Поэтому, говоря простым языком, если метод находит действительное соединение с Интернетом, возвращаемое значение равно true, иначе false, если действительное соединение не найдено.

Затем следующий метод в MainActivity вызывает результат ранее описанного метода и предлагает пользователю действовать соответствующим образом:

public void addListenerOnWifiButton() {
        Button btnWifi = (Button)findViewById(R.id.btnWifi);

        iia = new ConnectionStatus(getApplicationContext());

        isConnected = iia.isConnectionAvailable();
        if (!isConnected) {
            btnWifi.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
                    Toast.makeText(getBaseContext(), "Please connect to a hotspot",
                            Toast.LENGTH_SHORT).show();
                }
            });
        }
        else {
            btnWifi.setVisibility(4);
            warning.setText("This app may use your mobile data to update events and get their details.");
        }
    }

В приведенном выше коде, если результат ложный (поэтому нет подключения к Интернету, пользователь попадает на панель Android wi-fi, где ему предлагается подключиться к точке доступа wi-fi.

person Michele La Ferla    schedule 03.11.2014
comment
И мне также нужно, чтобы оба пользователя знали, подключен ли другой пользователь к Wi-Fi или нет. Как один пользователь узнает, подключен ли другой к Wi-Fi или нет? - person Deepu; 03.11.2014
comment
Не уверен, что вы можете получить это легко. Просмотрел несколько сообщений на SO, которые могут вам помочь: stackoverflow.com/a/7599847/1116216. Но это дает вам только SSID (имя сети Wi-Fi) для сети, к которой подключено ваше устройство, а не для сети, против которой вы играете. - person Michele La Ferla; 03.11.2014