Ich habe Juicedefender ausprobiert und es macht genau das, was ich will, aber da ich Tasker bereits die ganze Zeit laufen habe, suche ich nach einem Tasker-Rezept.
Ich möchte folgendes Verhalten erreichen:
Ein ziemlich enges Profil ist bei Tasker-Profile (Google-Translate englische Variante hier ) beschrieben. Ich versuche hier mal ein Abstract zu geben:
Dazu benötigen Sie zwei Aufgaben:
Sie können den Teil "Automatische Synchronisierung" wahrscheinlich überspringen (insbesondere wenn WLAN ins Spiel kommt), ich habe es nur der Vollständigkeit halber erwähnt. Außerdem kann die Variable Tasker -> PSAFE verwendet werden, um zu prüfen, ob sich das Gerät im Energiesparmodus befindet ( ~ 1 ) oder nicht ( !~ 1 ).
Diese sind der schwierigere Teil. Das Ein- und Ausschalten des Bildschirms ist einfach: Ereignis -> Anzeige -> Anzeige entsperrt für aktive Anzeige, Ereignis -> Anzeige -> Anzeige aus für ausgeschaltete Anzeige. Der schwierigere Teil ist, nach noch laufenden Übertragungen zu suchen – ich weiß nicht, wie man das explizit macht , aber es kann wahrscheinlich implizit über die oben erwähnte %PSAFE- Tasker-Variable erfolgen: Bei einer laufenden Übertragung ist das Gerät weniger wahrscheinlich im Energiesparmodus. Wahrscheinlich müssen Sie damit experimentieren. Verbinden Sie diese Bedingungen mit den entsprechenden Aufgaben, um Profile zu erstellen.
Für diese müssen Sie den obigen Aufgaben eine Variable hinzufügen: %LCD , die uns den Status der Anzeige gibt. Also in Variable -> Variable Set Name=%LCD -- in 1. auf 1 (ein), in 2. auf 0 (aus). Erstellen Sie nun ein zusätzliches Profil:
Es läuft also alle 15min, aber nur wenn das Display ausgeschaltet und Power-Safe aktiv ist. Wir brauchen auch eine zusätzliche Aufgabe:
Passen Sie sich Ihren Bedürfnissen an.
Auch hier bin ich mir nicht sicher, wie ich überprüfen kann, ob eine laufende Übertragung vorliegt. Eine mögliche Lösung kann in Google Groups gefunden werden , aber ich konnte dies nicht überprüfen. Obwohl Sie es vielleicht ausprobieren möchten, ist dies der grundlegende Extrakt:
Es ist ein Profil, das ich auf meinem Droid erstellt habe, um mit dem Konzept der Beobachtung von 3G-Verkehrspegeln zu experimentieren.
Profile: Net Traf 3G (62)
Priority: 2 CoolDown: 0
Time: Every 10m
State: Mobile Network [ 2G:On 3G:On 3G - HSPA:On 4G:On ]
Enter: Read3gTraf (63)
A1: Test [Type:File Name Data:/sys/class/net/ppp0 Store Result In:%tg_exists Continue Task After Error:On]
A2: Read Line [File:/sys/class/net/ppp0/statistics/rx_bytes Line:1 To Var:%TG_RX] Read Line [ %tg_exists Is Set ]
A3: Variable Set [Name:%TG_RX_CHG To:%TG_RX-%TG_RX_OLD Do Maths:On Append:Off]
A4: Variable Set [Name:%TG_RX_OLD To:%TG_RX Do Maths:Off Append:Off]
A5: Stop [With Error:Off] Stop [ %SCREEN ~ off ]
A6: Variable Set [Name:%TG_RX_RATE To:ceil(%TG_RX_CHG/1024) Do Maths:On Append:Off]
A7: Notify [Title:3g traffic active Text:%TG_RX_RATE kb since last check Icon:<icon> Number:0 Permanent:Off]
%TG_RX_RATE enthält die in den letzten 10 Minuten empfangenen KB und kann in einer Kontextbedingung verwendet werden.
Wenn mein Telefon nur herumliegt, beträgt der Netzwerkverkehr im Hintergrund weniger als 20 KB pro Minute. Beim Surfen im Internet sind es 100 kb oder mehr pro Minute. Ihr Kilometerstand kann variieren.
Da /sys eigentlich ein virtueller Ordner ist, existiert der Ordner /sys/class/net/ppp0 nur, wenn die 3G-Schnittstelle eingeschaltet ist. Wenn ich WLAN einschalte, wird stattdessen das Verzeichnis /sys/class/net/tiwlan0 erstellt.
(Wenn ich also den Verzeichnispfad ändere, kann ich auch den WLAN-Verkehr beobachten.)