Also eigentlich haben Sie vier Zustände als (+ fünfte wenn Internet ist oder nicht)
, wenn das Netzwerk verfügbar ist, müssen Sie für den Internet-Provider überprüfen, indem die Zustände von Wifi und Mobilfunknetz überwacht, Ihre vier Staaten sind
Wifi Änderungszustände und
1. Mobilfunknetz
2. Mobilfunknetz aktiviert ist deaktiviert
Mobilfunknetz Änderungszustände und
1. Wifi ist
aktiviert 2.Wifi ist deaktiviert
zunächst müssen Sie überwachen, ob das Internet verfügbar ist oder nicht, danach müssen Sie ähnliche zwei Hörer hinzufügen (Broadcast Recievers) für Wifi Zustand ändern und Mobile State ändern und für die erforderliche Prüfung Zustand, ich habe
Reciever Implementierung
in einem Empfänger für Änderungen prüfen und dann unten, Zustand Prüfmethode hinzugefügt Überprüfung Zustand
public class Internet_State extends BroadcastReceiver {
//checked with new state changed when event occurs
public boolean oldInternetState;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
Bundle b = intent.getExtras();
// if Internet available
boolean isConnected = !b
.getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY);
// ignore if no state change
if (oldInternetState == isConnected)
return;
// set new oldInternetState
oldInternetState = isConnected;
boolean isMobile = activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE;
boolean isWifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isAvailable();
//you can save these states to be monitored in wifi and mobile change change listners
//No internet is 0 state
int state = isConnected?1:0;
if(state)
state = checkState(context)
intent.putExtra("state", state);
// and then send this intent to your required method which will
// check the state and perform function
}
@Override
public void initialize(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
//save the current internet state at start of the receiver registration
oldInternetState = false;
if (activeNetwork != null)
oldInternetState = activeNetwork.isConnectedOrConnecting();
}
}
Implementieren zwei, mobile und WiFi-Zustandswechsel Sendung recievers und besser einen Zustand Prüfmethode wie diese
Prüfzustand
Überwachung des Zustands von vier Staaten
hinzufügen
public int checkState(Context context){
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isMobile = activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE;
boolean isWifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.isAvailable();
//No internet is 0 state
int state = isConnected?1:0;
if(isWifi && isMobile)
state = 1;
else if(isWifi && !isMobile)
state = 2;
if(isMobile && isWifi)
state = 3;
else if(isMobile && !isWifi)
state = 4;
return state;
}
und rufen Sie diese Methode von 3 Wifi, Internet und Mobile Datenänderungsempfänger, vergessen Sie nicht, nach oldState zu suchen und diesen mit dem geänderten Status abzugleichen.
Mobile alter Zustand von
NetworkInfo allNetInfo = cm
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
oldDataState = allNetInfo.getState();
für Wifi Zustand
int state = intent.getExtras().getInt(WifiManager.EXTRA_WIFI_STATE);
if (state == WifiManager.WIFI_STATE_ENABLED)
state = 1;
else if (state == WifiManager.WIFI_STATE_DISABLED)
state = 0;
else
return;
if (state == oldWifiState)
return;
oldWifiState = state;
Problem ich WiFi-fähigen 2 bis 3 mal
Mehr als ein Anruf auf Wifi Änderung tritt auf, weil Wifi Zustände ändert, wie TurningOn und TurningOf ausgelöst durch OS, müssen Sie sie auszulöschen, wie ich oben tat wie
if (state == WifiManager.WIFI_STATE_ENABLED)
state = 1;
else if (state == WifiManager.WIFI_STATE_DISABLED)
state = 0;
else
return;
nur aktiviert und deaktiviert werden jetzt überwacht.
Das ist, was meine Frage ist. Wie erkenne ich die Änderungen mit nur einem Auslöser? Diese Technik ermöglicht auch die Aktivierung von Mobile Network und WiFi, wenn beide aktiviert sind. Tatsächlich wird WiFi aktiv sein. Wir müssen dynamisch entscheiden, dass das Mobilfunknetz ausgeschaltet ist, wenn WiFi eingeschaltet ist. – madhu