WLAN automatisch aktivieren, wenn Sie sich in der Nähe eines gespeicherten Netzwerks befinden

Es sieht so aus, als ob eine Funktion, die in 8.0 Android O herauskommt, die Fähigkeit ist, WiFi automatisch zu aktivieren, wenn Sie sich in der Nähe eines gespeicherten Netzwerks befinden

Android O - WLAN automatisch aktivieren

Kann dies heute über Tasker erreicht werden?

  1. Profil hinzufügen > Staat > Netz > Wifi in der Nähe (wie in diesen Fragen hier und hier )

    Profil > Staat > Netz > WLAN in der Nähe

  2. SSID-Netzwerkname(n) eingeben / Netzwerke derzeit in Reichweite auswählen

    SSID-Netzwerknamen

  3. Dies funktioniert einzeln, aber idealerweise könnten Sie aus der aktuellen Liste der gespeicherten/konfigurierten WLAN-Netzwerke ziehen. Android führt eine Liste zuvor gespeicherter Netzwerke:

    Gespeicherte Netzwerke

F : Aber gibt es eine Möglichkeit, alle gespeicherten Netzwerknamen programmgesteuert abzurufen und als Variable festzulegen?

Hinweis : Es gibt einige Apps wie SmartWifiToggler , die auf GPS basieren, aber ich würde es nach Möglichkeit lieber über den Tasker erreichen.

Wenn ich mich nicht irre, müssen Sie den Wireless AP nicht unbedingt angeben. Auf diese Weise werden alle nahen Wireless APs berücksichtigt (wobei einer mit dem stärksten Signal ausgewählt wird), da diese in den Android-Systemeinstellungen gespeichert sind
Wie unterscheidet sich die Verwendung von WLAN-Signalen, um zu bestimmen, ob Sie „WLAN aktivieren“ sollten, von anfänglich aktiviertem WLAN? Sie verwenden gespeicherte WLAN-Netzwerke, wenn sie verfügbar sind, und scannen im Hintergrund, wenn Sie sich nicht in der Nähe eines gespeicherten Netzwerks befinden.
@xavier_fakerat, das Ziel ist es, WLAN zu aktivieren, wenn ich in der Nähe eines Netzwerks bin, das ich gespeichert habe, und es überall sonst zu deaktivieren.
@mattm, das Problem ist, wenn ich WLAN eingeschaltet habe, während ich herumlaufe, bleibt es oft auf einem Anmeldebildschirm hängen und unterbricht den drahtlosen Zugriff, bis ich mich entweder angemeldet oder WLAN ausgeschaltet habe. Ich finde es im Allgemeinen einfacher, es einfach auszuschalten, es sei denn, ich bin zu Hause (oder eine Liste ähnlicher Orte, an denen ich dem WLAN vertraue).
@mattm, aber mir ist jetzt klar, dass es nur eine Verbindung zu diesen von der Anmeldung blockierten Netzwerken herstellt, da sie selbst Teil meiner Liste gespeicherter Netzwerke sind. Ich müsste sie entweder vergessen oder die Netzwerke, die ich immer aktivieren möchte, einzeln benennen
Ja, ich verstehe, worauf Sie hinauswollen, Sie möchten also eine Problemumgehung, bei der Sie bevorzugte drahtlose Zugriffspunkte als eine Art Variable speichern, oder? Andernfalls würde es sich mit einem verbinden, für das eine Anmeldung erforderlich ist. Lassen Sie mich überprüfen, ob ich es hier herausfinden kann.
Tasker wäre schwer, aber ich würde den Code nach Möglichkeit finden, aber Sie könnten sich immer für eine Drittanbieter-App entscheiden
Ich bin zufällig auf ein ähnliches Szenario gestoßen, das Sie haben möchten: Tasker doppelte WiFi-Aktivierung mit 'oder'-Anweisung , es scheint, dass es viele Möglichkeiten gibt, dies zu erreichen .... werde Sie aktualisieren, sobald ich mein Profil darauf getestet habe
Ich möchte diese Antwort nicht wiederholen, aber ich weiß, dass sie definitiv Ihren Bedürfnissen entspricht. Lesen Sie einfach etwas über den Musterabgleich und verwenden Sie das für das Whitelisting/Blacklisting von SSIDs. Beifall!

Antworten (2)

Ich hatte das gleiche Problem und fand endlich einen Link zu diesem Projekt: https://www.reddit.com/r/tasker/comments/8p0ywt/project_share_switching_to_saved_wifi/ Das Projekt selbst macht ein bisschen mehr, zeigt aber einen Weg, um die gespeicherten WLANs zu erhalten mit standardmäßigen Tasker-Funktionen.

Zu Ihrer Frage: Aber gibt es überhaupt eine Möglichkeit, alle gespeicherten Netzwerknamen programmgesteuert abzurufen und als Variable festzulegen?

A: Ja, mit Tasker-Aktion vom Typ Code -> Java-Funktion (siehe auch Funktion $getConfiguredNetworks im verlinkten Projekt):

1.) Verwenden Sie die Code-Java-Funktion, um WifiManager von CONTEXT zu erhalten

2.) Verwenden Sie die Code-Java-Funktion, um konfigurierte Netzwerke von WifiManager abzurufen

3.-6.) Verwenden Sie Variable Search Replace, um SSIDs aus den konfigurierten Netzwerken mit regulären Ausdrücken zu erhalten

7.-8.) Setzen Sie die Variable, die vom Tasker Wifi Near State überprüft werden soll

9.) (Optional) Schritte 1-8 automatisch auslösen

Detaillierte Tasker-Aktionen:

1.) Java-Funktion:

a) Klasse oder Objekt=KONTEXT

b) Function=getSystemService{Object}(String) <wählen Sie mit dem Lupensymbol aus und scrollen Sie entweder nach unten oder verwenden Sie den Filter am unteren Rand des Bildschirms, achten Sie darauf, nicht die (Klassen-)Version auszuwählen>

c) Parameter=WLAN

d) Return{Object}=(WifiManager) wifiman

--> Das Ergebnis in der Tasker-Ansicht sollte so aussehen: (WifiManager) wifiman = CONTEXT.getSystemService(wifi)

2.) Java-Funktion:

a) Klasse oder Objekt=wifiman

b) Funktion=getConfiguredNetworks{Liste}()

c) Return{List}=%get_configured_networks

--> Das Ergebnis in der Tasker-Ansicht sollte so aussehen: %get_configured_networks = wifiman.getConfiguredNetworks()

SSIDs extrahieren, es gibt viele Möglichkeiten, ich habe es geschafft, die Liste zu durchlaufen

3.) Für: Variable %get_configured_networks Items %configured_network

Löschen Sie mithilfe eines regulären Ausdrucks alles aus der Variablen, das nicht die SSID ist

4.) Variablensuche Ersetzen:

a) Variable=%configured_network

b) Search=(?:.|\n)*SSID:\s*"(.*)"(?:.|\n)* <dieser reguläre Ausdruck erfasst den SSID-Namen in Erfassungsgruppe 1>

c) Ersetzen Sie Matches=true

d) Ersetzen durch =$1

SSID zum Array hinzufügen

5.) Array Push: Variable Array %ssids Position 1 Wert %configured_network

Schleife beenden

6.) Ende für

Verbinden Sie SSIDs mit / als Trennzeichen, um Taskers WLAN in die Nähe der Syntax SSID1/SSID2/.../SSIDn zu bringen

7.) Variable Join %ssids Joiner /

Legen Sie die globale Variable fest, die von Taskers Wifi Near State überprüft werden soll

8.) Variablensatzname %SavedWifis To %ssids

Sobald dies erledigt ist, kann ein Wifi Near %SavedWifis verwendet werden. Aber nachdem Sie ein neues WLAN hinzugefügt oder ein altes entfernt haben, müssen Sie den Wert erneut aktualisieren.

9.) Führen Sie Tasks aus, um %SavedWifis regelmäßig zu aktualisieren (z. B. basierend auf Zeitereignissen oder wann immer das WLAN verbunden ist). Wenn jemand eine Möglichkeit kennt, auf ein 'savedWifisUpdated'-Ereignis zu reagieren, lassen Sie es mich bitte wissen.Geben Sie hier die Bildbeschreibung ein

Schauen Sie sich die App namens IFTTT an, ich glaube, sie haben so etwas, wo Sie das einrichten können.

Obwohl diese Antwort hilfreich sein könnte, ist sie leider immer noch zu kurz im Detail. Was sollten die Leser nach der Installation von IFTTT tun? Anstatt "so etwas" zu finden, wie kann man die App richtig einrichten, um das zu tun, was der Fragesteller will?