Question

Je veux définir l'auditeur pour écouter sur un état sans fil, quelqu'un peut-il m'aider avec mon code

import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

...

 TelephonyManager wTelephonyManager;

...

     wTelephonyManager=(TelephonyManager)getSystemService(Context.WIFI_SERVICE);
    wTelephonyManager.listen(new PhoneL(),PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
    connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

// Voici l'événement que j'utilise que je veux écouter pour le changement WiFi, et le code ci-dessus est tout dans OnCreate {}

class PhoneL extends PhoneStateListener

{   






    public void onWifiStateChanged(int state, String nesto)
    {
         mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            //mWifi.isConnectedOrConnecting()
             if(mWifi.isConnectedOrConnecting())
             {
                 Toast.makeText(WifiActivity.this,"Ima WIFI",Toast.LENGTH_LONG).show();     
             }
             else
             {
                 Toast.makeText(WifiActivity.this,"! NEMA WIFI",Toast.LENGTH_LONG).show(); 
             }


    }

}

// Quelqu'un peut-il m'aider à créer un auditeur qui écoutera l'état WiFi et vérifiera si le wifi est connecté ou se connecte si je ne veux pas activer le trafic de paquets de données via 3G / 4G

Était-ce utile?

La solution

Le système Android demande à passer à Data Traffic lorsque WiFi n'est pas connecté mais il y a un problème.
Si vous éteignez le wifi lorsque l'écran est désactivé, il changera constamment entre le réseau WiFi et 3G et si vous avez sélectionné des applications pour envoyer des données en arrière-plan, il utilisera la connexion de données qui est plus coûteuse si vous n'avez pas de plan de données illimité .
Un autre problème est que lorsque vous êtes dans une zone avec un signal WiFi pas si fort, il changera constamment vers le trafic de données et vous aurez des problèmes de navigation ou autre.
Le troisième problème est la batterie car de ce que j'ai entendu, c'est mieux (sage de la batterie) d'utiliser la connexion WiFi que les données, avec un module complémentaire, ne désactivez pas le wifi lorsque l'écran est éteint. (Même, je le fais) Parce que l'éteindre et le wifi est le plus coûteux (batterie) qui est toujours allumé. Lais donc donc le système Android.

Autres conseils

J'ai également rencontré ce problème, voici comment je l'ai résolu.

Dans mon activité sur onCreate (..) J'ai fait

this.registerReceiver(mWifiStateChangedReceiver,new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));

Et en plus j'ai créé le membre «MwifistateChangeDreceiver» de cette façon

private BroadcastReceiver mWifiStateChangedReceiver = new BroadcastReceiver()
{

    @Override
    public void onReceive(Context context, Intent intent)
    {
        // TODO Auto-generated method stub

        int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);

        switch (extraWifiState)
        {
        case WifiManager.WIFI_STATE_DISABLED:
        case WifiManager.WIFI_STATE_DISABLING:
            enableUI(false);
            break;
        case WifiManager.WIFI_STATE_ENABLED:
            ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
            while(conMan.getActiveNetworkInfo() == null || conMan.getActiveNetworkInfo().getState() != NetworkInfo.State.CONNECTED)
            {
                try
                {
                    Thread.sleep(500);
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
            update();
            enableUI(true);
            break;
        case WifiManager.WIFI_STATE_ENABLING:
            break;
        case WifiManager.WIFI_STATE_UNKNOWN:
            break;
        }

    }
};

Comme vous pouvez le voir, quand je reçois WifiManager.WIFI_STATE_ENABLED Je teste également si le réseau est vraiment connecté, car un wifi activé ne signifie pas qu'il est connecté. Au moins, c'était ma supposition, c'est pourquoi j'attends que le réseau soit vraiment connecté.

Si vous voulez écouter la force du signal, vous pouvez également écouter:

WifiManager.RSSI_CHANGED_ACTION

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top