Я пробовал Juicedefender, и он делает именно то, что мне нужно, но, поскольку у меня уже постоянно работает Tasker, я ищу рецепт Tasker.
Я хотел бы выполнить следующее поведение:
Довольно близкий профиль описан на Tasker-Profile (английский вариант Google-Translate здесь ). Я постараюсь дать аннотацию здесь:
Для этого вам понадобятся две задачи:
Вы, вероятно, можете пропустить часть «Автосинхронизация» (особенно если в игру вступает Wi-Fi), я упомянул ее только для полноты картины. Кроме того, переменную Tasker -> PSAFE можно использовать для проверки того, находится ли устройство в энергосберегающем режиме ( ~ 1 ) или нет ( !~ 1 ).
Это самая сложная часть. Что касается включения/выключения экрана, то это просто: Событие -> Дисплей -> Дисплей разблокирован для активного дисплея, Событие -> Дисплей -> Выключение дисплея для выключенного дисплея. Сложнее проверить все еще выполняющиеся передачи — я не знаю, как это сделать явно , но, вероятно, это можно сделать неявно с помощью вышеупомянутой переменной Tasker %PSAFE : в энергосберегающем режиме. Вероятно, вам нужно поэкспериментировать с этим. Соедините эти условия с соответствующими задачами для создания профилей.
Для этого вам нужно добавить переменную к вышеуказанным задачам: %LCD , дающую нам состояние дисплея. Таким образом, в Variable -> Variable Set Name=%LCD -- в 1. установите значение 1 (вкл.), во 2. значение 0 (выкл.). Теперь создайте дополнительный профиль:
Таким образом, он работает все 15 минут, но только когда дисплей выключен и активен энергосберегающий режим. Также нам понадобится дополнительная задача:
Приспособьтесь к вашим потребностям.
Опять же, я не уверен, как проверить, есть ли текущая передача. Возможное решение можно найти в группах Google , но я не смог это проверить. Хотя, как вы, возможно, захотите попробовать, это основной отрывок:
Это профиль, который я создал на своем Droid, чтобы поэкспериментировать с концепцией отслеживания уровней трафика 3G.
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 будет содержать kb, полученное за последние 10 минут, и может использоваться в условии Context.
Если мой телефон просто лежит без дела, то фоновый сетевой трафик составляет менее 20 кб в минуту. Серфинг в Интернете, это 100 КБ или намного больше в минуту. Ваш пробег может отличаться.
Поскольку /sys на самом деле является виртуальной папкой, папка /sys/class/net/ppp0 существует только при включенном интерфейсе 3G. Когда я включаю Wi-Fi, вместо этого создается каталог /sys/class/net/tiwlan0.
(Поэтому, изменив путь к каталогу, я также могу отслеживать трафик Wi-Fi.)