Wie zur Verarbeitung von Netzwerk-Wechsel zwischen wifi und mobile Daten?

Baue ich eine VoIP-app.Bei einem VoIP-Anruf, wenn der Benutzer wechselt zwischen WLAN zu mobilen Daten habe ich ein problem bei der Verarbeitung das Szenario.

In meinem Anruf-Bildschirm Aktivität ich habe mich registriert für receiver, der mir hilft, benachrichtigt Sie das Netz ändern Szenarien.

Dies ist der code, die ich benutze für die Erkennung von änderung in die Netze der onRecieve Methode. conn_name ist private class level variable holding Vorherige Verbindung zu dem Namen.

ConnectivityManager connectivity_mgr = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
    NetworkInfo net_info = connectivity_mgr.getActiveNetworkInfo();

    if (net_info != null && net_info.isConnectedOrConnecting() && !conn_name.equalsIgnoreCase("")) {
        new_con = net_info.getExtraInfo();        
        if (new_con != null && !new_con.equalsIgnoreCase(conn_name))
            network_changed = true;
        conn_name = (new_con == null) ? "" : new_con;
        connectionStatus ="connected";        
    } else {
        if (net_info != null && conn_name.equalsIgnoreCase("")){
            conn_name = net_info.getExtraInfo();
            connectionStatus ="connected";
            network_changed = true;
        }else if(!new_con.equals(conn_name)) {    
            conn_name = "";
            connectionStatus ="disconnected";
            network_changed = true;          
        }        
    }

Also unter Verwendung der obigen Methode, die ich in der Lage zu erkennen, Veränderungen im Netzwerk. Aber eine eigenartige Sache passiert, wenn ich verbunden bin mit dem WLAN. Wenn meine app startet zunächst ist es mit mobilen Daten.wenn Benutzer in seiner bekannten WiFi-Bereich,bekommt er an seiner bekannten WiFi. Da WLAN ist immer ausgewählt und als Standard-route,android schaltet auf WLAN und ich bekomme das Netzwerk Benachrichtigung, dass das WLAN eingeschaltet ist.

So, ich update meine apps IP-Adresse WLAN IP Adresse, also keine Probleme hier. Aber immer noch mobile Daten verbunden ist, gleichzeitig aber getActiveNetworkInfo() sagt mir, dass ich verbunden bin mit dem WLAN klar auch wenn ich früh war verbunden mit mobilen Daten.

Also das problem ist, wenn der Benutzer schaltet die WiFi-Taste,und mobile Daten ist immer noch angeschlossen, aber ich bekomme noch immer die Meldung für das WiFi auszuschalten.
Es zeigt mir, dass die Netzwerkverbindung unterbrochen ist, selbst wenn mein Telefon ist immer noch verbunden mit mobilen Daten.

Aber nach einer Sekunde erhalte ich eine Benachrichtigung, mobile Daten verbunden ist.
Aber sobald ich den Sender empfangen getrennt, ich Schloss meine VoIP-Anruf.
Also, wenn ich eine Benachrichtigung erhalten, für WLAN ausgeschaltet, wie kann ich sicher stellen, ob mobile Daten verbunden ist.

Versuchte ich getActiveNetworkInfo (), aber es passiert null wenn ich eine Benachrichtigung erhalten, für WLAN ausgeschaltet.

Ich habe diese links:

Android API-Aufruf, um zu bestimmen, Benutzer-Einstellung "Daten Aktiviert"

Wie Sie sagen, wenn "Mobile Daten Netzwerk' aktiviert oder deaktiviert ist (auch bei Anschluss über WiFi)?

Über den obigen link bin ich in der Lage zu erkennen, dass die mobile Daten Taste aktiviert wurde, wenn der Benutzer die Verbindung mit mobiledata.es gibt mir true.
Aber das problem, geschieht wenn dieser spezielle Fall passiert.

Nun, wenn wifi deaktiviert ist bekomme ich die Benachrichtigung, aber es zeigt, dass mobile Daten deaktiviert, auch wenn meine mobilen Daten aktiviert sind. Ich bin nicht in der Lage, diese situation zu behandeln, wie ich trennen meine Anrufe, wenn ich meine Verbindung getrennt Meldung.

  • Sie können eine pause von 1-2 Sekunden, wenn das WLAN getrennt wird. Und dann nach 1-2 Sekunden versuchen Sie es erneut markieren, wenn die Mobile Daten verfügbar sind oder nicht.
  • ja, wenn es gibt keine Lösung im planen, gehen Sie für dieses
InformationsquelleAutor Jeeva | 2018-01-03
Schreibe einen Kommentar