Как я могу периодически включать мобильные данные с помощью Tasker?

Я пробовал Juicedefender, и он делает именно то, что мне нужно, но, поскольку у меня уже постоянно работает Tasker, я ищу рецепт Tasker.

Я хотел бы выполнить следующее поведение:

  • Отключить мобильные данные, когда экран заблокирован и нет передачи. Если есть текущая передача, дождитесь ее завершения, прежде чем отключать мобильные данные. Включайте мобильные данные только периодически с интервалом в 15 минут.

Ответы (1)

Довольно близкий профиль описан на Tasker-Profile (английский вариант Google-Translate здесь ). Я постараюсь дать аннотацию здесь:

Основные данные вкл./выкл.

Задания

Для этого вам понадобятся две задачи:

  1. включить мобильные данные:
    • Сеть -> Автосинхронизация (включить)
    • Сеть -> Мобильные данные (включено)
  2. отключить мобильные данные:
    • Сеть -> Автосинхронизация (включить)
    • Сеть -> Мобильные данные (включено)

Вы, вероятно, можете пропустить часть «Автосинхронизация» (особенно если в игру вступает Wi-Fi), я упомянул ее только для полноты картины. Кроме того, переменную Tasker -> PSAFE можно использовать для проверки того, находится ли устройство в энергосберегающем режиме ( ~ 1 ) или нет ( !~ 1 ).

Условия

Это самая сложная часть. Что касается включения/выключения экрана, то это просто: Событие -> Дисплей -> Дисплей разблокирован для активного дисплея, Событие -> Дисплей -> Выключение дисплея для выключенного дисплея. Сложнее проверить все еще выполняющиеся передачи — я не знаю, как это сделать явно , но, вероятно, это можно сделать неявно с помощью вышеупомянутой переменной Tasker %PSAFE : в энергосберегающем режиме. Вероятно, вам нужно поэкспериментировать с этим. Соедините эти условия с соответствующими задачами для создания профилей.

Периодические проверки

Для этого вам нужно добавить переменную к вышеуказанным задачам: %LCD , дающую нам состояние дисплея. Таким образом, в Variable -> Variable Set Name=%LCD -- в 1. установите значение 1 (вкл.), во 2. значение 0 (выкл.). Теперь создайте дополнительный профиль:

  • Время: повтор 15 минут
  • Состояние -> Значение переменной %LCD ~ 0
  • Состояние -> Значение переменной %PSAFE ~ 1

Таким образом, он работает все 15 минут, но только когда дисплей выключен и активен энергосберегающий режим. Также нам понадобится дополнительная задача:

  • Сеть -> Мобильные данные: ВКЛ.
  • Сеть -> Автосинхронизация: ВКЛ.
  • Tasker -> Подождите: 1 мин.
  • Сеть -> Автосинхронизация: ВЫКЛ.
  • Сеть -> Мобильные данные: ВЫКЛ.

Приспособьтесь к вашим потребностям.

Выполняется проверка возможных переводов

Опять же, я не уверен, как проверить, есть ли текущая передача. Возможное решение можно найти в группах 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.)