Включение/выключение Wi-Fi с помощью кнопки-переключателя Android

Я знаю, что для переключения состояния Wi-Fi я должен сделать это:

wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true);
wifiManager.setWifiEnabled(false);

и пропишите следующие разрешения:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

Я сделал две радиокнопки (вкл/выкл), и они работают, но это не лучшее решение, поэтому я хочу создать кнопку-переключатель. Как я могу поместить код внутри кнопки-переключателя?


person Atlas91    schedule 14.06.2013    source источник


Ответы (2)


Вы можете сделать это в своей деятельности:

public class MyActivity extends Activity {

    private ToggleButton btn;
    private WifiManager wifiManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wifiManager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);

        btn = (ToggleButton) findViewById(R.id.btn_id);
        btn.setChecked(wifiManager.isWifiEnabled());

        btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                wifiManager.setWifiEnabled(isChecked);
            }

        });
    }
}

Ознакомьтесь с документацией по ToggleButton.

person Laurent Dezitter    schedule 14.06.2013
comment
Это кнопка да? Потому что я ищу решение для переключения - person Atlas91; 14.06.2013
comment
Приятно, спасибо .. Этот пример предназначен только для включения Wi-Fi? сделать такой же но вместо btn.setChecked(enabled); будет btn.setChecked(disabled); или нет? - person Atlas91; 14.06.2013
comment
isChecked будет иметь значение true, если состояние проверено, и false в противном случае. См. раздел CompoundButton.OnCheckedChangeListener. - person Laurent Dezitter; 14.06.2013
comment
Так это все в порядке? Когда тумблер проверяет Wi-Fi, а когда тумблер останавливается, верно? - person Atlas91; 14.06.2013

Чтобы на самом деле переключить, то есть переключить состояние, используйте:

WifiManager wm = ((WifiManager) activity.getSystemService(Context.WIFI_SERVICE));
wm.setWifiEnabled(!wm.isWifiEnabled());
person Oded Breiner    schedule 11.11.2013