суббота, 4 мая 2013 г.

Делаем виджеты используя “tasker” и “zoom”


+
В данной статье речь пойдет о создании виджетов при помощи таскер. В этом нам поможет «zoom». Если вам лень читать всю статью внизу даны ссылки на готовые задачи и виджет.


Что же нам для этого понадобится:
Инструменты:
Постановка задачи
Для создания виджетов мы будем использовать программу zoom. Управление ими осуществлять будем из таскера. В меню выбора действий есть соответствующий пункт, зайдя в который мы можем посмотреть список действий, которые нам доступны при работе с виджетом.  В качестве примера будем работать с АПИ нашего любимого сайта - ДВ.

Рис.1. Вот так примерно выглядит наш виджет
В качестве примера рассмотрим работу с апи нашего любимого сайта ДВ. Возьмем проверку статуса пользователя - находится ли юзер на сайте или нет. Работа разделяется на две части: 1.создание виджета 2. Написание функции запроса статуса пользователя с сайта и вывод информации в виджете.
Виджет будет состоять из текста, картинки и одной кнопки. В тексте будем выводить инфу - онлайн юзер или нет, на кнопке будет висеть обращение к задаче таскера (в ней мы будем обрабатывать результаты общения с сайтом) ну и картинка для наглядного отображения.  В функции мы будем: вводим, ник пользователя (того чей статус мы хотим проверить), делаем пост запрос (вернет 1 если на сайте и 0 если офлайн). Пишем результат в файл, читаем файл, проверяем, если онлайн - выводим текст "онлайн" зеленым цветом ставим соответствующую картинку. Если офлайн выводим слово "офлайн" красным цветом и соответствующую картинку.
Ход работы:
1.Виджет

Рис. Действия zoom доступные в tasker
Сначала создадим виджет: запускаем zoom , в правом нижнем углу нажимаем на "+". Задаем параметры виджета. Нам интересны первые два пункта это название виджета (я назвал статус) и размер (3 х 1). Далее добавим элементы button , text , image. Расположим элементы как вам по вкусу. Как это сделал я показано на скриншоте.

Рис. Задаем название виджета, размер и цвет.
Нажмем на кнопку и зададим ее параметры. Пока нас интересует только название кнопки - я написал "проверить ".  Картинку можно выбрать любую пока что.

Рис.2 меню редактора виджета. Расположение элементов на виджете.
2.Задача

Рис. 3. Используемые действия в задаче.
Виджет почти готов. Приступим к созданию функции. Общаться с сервером мы будем при помощи Get запросов. В Таскер нам предоставляется такая функция в разделе «сеть». Зайдем в таскер, создадим задачу, назовем ее "статус юзера".  Логику работы задачи я описал выше.
1.Ввод значения переменной. Эту функцию можно найти в меню «категории действий» >> «переменные» >> «ввод значения переменной». В ней параметры: название – надпись отображаемая вверху окошка ввода, переменная – в какую переменную мы поместим введенную нами информацию, тип вводимых данных – числа/текст и т.д. , layout – как будет выглядеть окошко ввода( я перенастроил на свой вкус), задержка – через какое время скрывать окно автоматически.(у меня полученные данные хранятся в переменной %user_name
2.,3., установить переменную. Найти такую штуку можно все там же в разделе «переменные». Задаем имя переменной (в моем случае она называется %user_status_api). Поскольку тут нам ничего вводить не нужно а просто поместить в переменную часть апи(все ее содержание кроме ника в конце) то во втором параметре «до», пишем строку: api.dimonvideo.ru/smart/gapi.php?op=6&user= . Затем установим переменную %user_status_api  до %user_name с параметром «добавить». Таким образом к части ссылки из апи мы добавляем в самый конец введенный нами ник пользователя.
4. Делаем get запрос, используя апи сайта и записываем результат в файл. Сеть>>get запрос. Параметры: server:port -  данные берем из переменной %user_status_api.  Остальные параметры можно не трогать, вот только зададим куда записывать результат – output file (у меня test.txt то есть в тестовый файл в корень флэш карты.)

Рис. Действия с сетью доступные в tasker
5. Читаем файл в переменную . Нам нужно прочитать что находится в нашем файле test. Для этого в «категории действий» выбираем пункт «файл» >> «read file». Параметры: файл – где находится наш файл. Переменная – в какую переменную запишем результат. (у меня переменная называется %status_user)
6-9. Если результат = 0 пишем офлайн и делаем цвет шрифта красным. Логическая операция «если» находится в «категории действий» >> task. В ней мы сравним переменную %status_user = 0. Под операцией сравнения находится ряд действий которые будут выполняться если переменная равна нулю. Переход к следующему действию если не равно нулю.
10-13. Если результат = 1 пишем онлайн зеленым цветом. Для этой операции нам понадобится логическое «else если». Опать же сравним переменную  %status_user , равна ли она 1. Если равна то выполняем ряд действий.

Рис. Структура задачи
Вернемся к виджету. Настроем параметры кнопки , последний параметр - функция выполняемая при нажатии. Выбираем последний пункт : "tasker task" и нашу созданную функцию. Все готово . Теперь можем расположить наш виджет на рабочем столе и проверить его работу. При нажатии на кнопку появляется окно ввода ника пользователя, после чего статус будет отображен в виджете. Так же можно настроить  автоматическое обновление данных в виджете . Напомню что таскер должен быть включенным .

Рис. Выбираем действие по нажатию на кнопке

Рис. В качестве выполняемого действия используем задачу tasker
Автор материала: Zaterehniy
Дата написания: 4.05.2013
Мой угол: тут
Версия ПО: tasker 1.6u1(лиценpия), zoom 1.0.4 (маркет). Так же использовались бесплатные пакеты иконок к такскер- Holo light MD, holo dark md.
Ссылки: задача для tasker , готовый виджет.

6 комментариев:

  1. Женя здравствуйте. Спасибо за подробные, "пошаговые" объяснения и розьяснения!!! У меня к Вам большая просьба. Увидел на форуме одну публикацию и рекомендации к ней, суть: "Установить автоответчик на Андроид". Сделал все как и было рекомендовано, установил сам автответчик+программу которая записывает разговоры а вот дальше....., было указано установить программу "Tasker" и ВСЕ.......больше ничего. Мучаюсь уже 4день, никак не могу понять как в "Tasker" установить (записать) голос и как вообще все вместе связать воедино? Просьба. Не могли ли Вы мне также доступно (пошагово) показать (рассказать), куда "пальчиком тыкать". Мой адрес: don.keleberda@gmail.com Заранее благодарен, Владимир.

    ОтветитьУдалить
  2. Здравствуйте Евгений !
    А существует ли у “tasker” возможность осуществить включение смартфона по правильно набранному паролю ? То есть если пароль не правильный то смартфон выключить .Есть ли у “tasker” для этого соответствующие средства ?
    Спасибо , Саня .

    ОтветитьУдалить
    Ответы
    1. Здравствуйте Александр . насколько мне известно в андроид нет такой возможности ( включения смартфона) по соображениям безопастности. Если всё таки и возможно то думается это некий костыль . что то подобное делали давным давно на симбиан ( я про включение ). Там было завязано на будильнике , только он мог включить аппарат. Не совсем понятно какая задача стоит , т.е. как должна происходить проверка пароля если смартфон выключен.

      Удалить
    2. Спасибо за быстрый ответ.
      Нажатием кнопки ВКЛ включаем аппарат , происходит старт "андроида" , как только стало возможно система блокируется , на экране появляется простенькая клавиатура (только цифры) и требование ввести пароль (пин код) , вводим , если правильно - снятие блокировки и обычная работа .
      Если не правильно - запуск процедуры выключения аппарата .
      Примерно то же самое при попытке войти в аппарат с ЮСБ порта .
      Но , если аппарат уже включен и просто заснул - то пробуждение должно происходить как обычно . Именно по этому не подходят , широко предлагаемые блокировщики экрана .
      Вот как то так я вижу эту задачу , вот только реализовать не умею .

      Удалить
  3. Спасибо за быстрый ответ.
    Нажатием кнопки ВКЛ включаем аппарат , происходит старт "андроида" , как только стало возможно система блокируется , на экране появляется простенькая клавиатура (только цифры) и требование ввести пароль (пин код) , вводим , если правильно - снятие блокировки и обычная работа .
    Если не правильно - запуск процедуры выключения аппарата .
    Примерно то же самое при попытке войти в аппарат с ЮСБ порта .
    Но , если аппарат уже включен и просто заснул - то пробуждение должно происходить как обычно . Именно по этому не подходят , широко предлагаемые блокировщики экрана .
    Вот как то так я вижу эту задачу , вот только реализовать не умею .

    ОтветитьУдалить
  4. Пытаюсь оставить комментарий в третий раз , первые 2 раза вчера они почему то исчезали .

    Спасибо за быстрый ответ.
    Нажатием кнопки ВКЛ включаем аппарат , происходит старт "андроида" ,
    как только стало возможно система блокируется , на экране появляется простенькая
    клавиатура (только цифры) и требование ввести пароль (пин код) , вводим ,
    если правильно - снятие блокировки и обычная работа .
    Если не правильно - запуск процедуры выключения аппарата .
    Примерно то же самое при попытке войти в аппарат с ЮСБ порта .
    Но , если аппарат уже включен и просто заснул - то пробуждение должно происходить как обычно .
    Именно по этому не подходят , широко предлагаемые блокировщики экрана .
    Вот как то так я вижу эту задачу , вот только реализовать не умею .

    ОтветитьУдалить