Pregunta

Quiero establecer oyente a escuchar en el estado inalámbrico,alguien me puede ayudar con mi código

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

//aquí está el caso de que yo el uso que quiero escuchar el wifi, cambio, y el código de arriba es todo en 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(); 
             }


    }

}

//¿Puede alguien por favor me ayude a crear un oyente que escucha la wifi del estado y comprobar si el wifi está conectado o conectar si no quiero habilitar el tráfico de paquetes de datos a través de 3g/4g

¿Fue útil?

Solución

El sistema android pide a cambiar a Data Traffic cuando WiFi no está conectado pero hay un problema.
Si desactiva el WiFi cuando la pantalla está apagada, va a cambiar constantemente entre WiFi y 3G y si se han seleccionado las aplicaciones para enviar los datos en el fondo, va a utilizar la conexión de datos que es más costoso si usted no tiene un plan de datos ilimitado.
Otro problema es cuando estás en un área con no tan fuerte la señal de WiFi, va a cambiar constantemente para Tráfico de Datos, y usted tendrá problemas con la exploración o lo que sea.
Tercer tema es el de la batería por lo que he oído que es mejor(batería sabio) para utilizar la conexión WiFi de los datos, con un Add-on no se apague el WiFi cuando la pantalla está apagada.(aún lo hago)debido a apagar y a encender el WiFi es más costoso(batería) que ser siempre.por lo tanto, dejar que el sistema android.

Otros consejos

También encontré ese problema, aquí es cómo lo resolví.

en mi actividad onecreate (..) lo hice

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

y, además, creé el miembro 'mwifistatechangedreiver' de esta manera

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

    }
};

Como puede ver, cuando obtenga WifiManager.WIFI_STATE_ENABLED. Pruebe adicionalmente si la red está realmente conectada, porque un WiFi habilitado no significa que esté conectado.Al menos esto fue mi conjetura, por eso estoy esperando hasta que la red esté realmente conectada.

Si desea escuchar la fuerza de la señal, también puede escuchar en:

WifiManager.RSSI_CHANGED_ACTION

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top