Domanda

Voglio impostare l'ascoltatore per ascoltare lo stato wireless, qualcuno può aiutarmi con il mio codice

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

// Ecco l'evento che uso che voglio ascoltare il cambio WiFi e il codice sopra riportato è tutto in 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(); 
             }


    }

}
.

// Può qualcuno per favore aiutarmi a creare un ascoltatore che ascolterà lo stato WiFi e controlla se WiFi è collegato o connesso se non è che voglio abilitare il traffico di pacchetti di dati tramite 3G / 4G

È stato utile?

Soluzione

Il sistema Android chiede di passare a Data Traffic quando WiFi non è collegato ma c'è un problema.
Se si spegne WiFi quando la schermata è disattivata, cambierà costantemente tra rete WiFi e 3G e se hai selezionato app per inviare dati sullo sfondo, utilizzerà la connessione dati che è più costiera se non si dispone di un piano dati illimitato.
. Un altro problema è quando ti trovi in un'area con un segnale wifi non così forte, cambierà costantemente al traffico dati e avrai problemi con la navigazione o qualsiasi altra cosa.

Il terzo problema è la batteria a partire da quello che ho sentito è meglio (batteria saggio) per utilizzare la connessione WiFi rispetto ai dati, con un componente aggiuntivo non spegnere WiFi quando lo schermo è spento. (Anche lo faccio)Perché spegnerlo e su WiFi è più costoso (batteria) per essere sempre acceso.Quindi, quindi lascialo al sistema Android.

Altri suggerimenti

Ho trovato anche quel problema, ecco come ho risolto.

nella mia attività oncreate (..) ho fatto

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

E in aggiunta ho creato il membro "MwifistateChangeDreceiver" in questo modo

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

    }
};
.

Come puoi vedere, quando ottengo WifiManager.WIFI_STATE_ENABLED, inoltre test se la rete è realmente connessa, poiché un wifi abilitato non significa che sia connesso.Almeno questa era la mia ipotesi, ecco perché sto aspettando fino a quando la rete è realmente connessa.

Se vuoi ascoltare la forza del segnale puoi anche ascoltare a:

WifiManager.RSSI_CHANGED_ACTION

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top