Страница 1 из 91

[Приложение] MajorDroid

Добавлено: Ср фев 20, 2013 12:13 pm
sergejey
Обсуждение Android приложение

Приложение представляет собой браузер, настроенный на открытие домашней страницы (меню) системы + приложение для Android Wear, совместимое с модулем WatchesMenu.

Установщик в GooglePlay

Быстрый доступ к основной странице веб-интерфейса

Отправка голосовой команды в систему
Для работы нужно поставить "Синтезатор речи Google"
  • Активация распознания голоса по ключевой фразе
Сканер штрих-кодов
Для работы сканера необходимо, чтобы на компьютере было установлено бесплатное приложение ZXing Barcode scanner Настраиваемая "быстрая" команда

Сервис на порту 7999
  • Команда "hi", по которой автоматически запускается распознание речи
  • "voice" -- работает аналогично "hi"
  • "home" -- переход на домашнюю страницу
  • "settings" -- вызов экрана настроек
  • "url:ССЫЛКА" -- переход по указанной ссылке
  • "play:URL" -- проигрывание медиа-файла
  • "pause" -- останавливает проигрывание
  • "tts:текст" -- произнести фразу
  • "ask:текст" -- произнести фразу и перейти в режим ожидания голосовой команды
  • "rtsp://ссылка" -- открыть RTSP-поток в отдельном плеере
  • "run://приложение" -- открыть приложение на телефоне/планшете (пример приложения: com.google.android.calendar)
  • "nvolume:уровень" -- установить громкость уведомлений на заданный уровень (0-100)
  • "mvolume:уровень" -- установить громкость медиа на заданный уровень (0-100)
  • "volume:уровень" -- установить громкость медиа и уведомлений на заданный уровень (0-100)
Примеры вызова командыПоказать
Команды можно вызывать из веб-интерфейса

Код: Выделить всё

<a href="app://voice">КНОПКА</a> 
Либо удалённо при помощи следующего скрипта:

Код: Выделить всё

$address='192.168.0.170'; // ip-адрес планшета
$service_port='7999';
$in='tts:проверка'; // команда для отправки

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br/>\n";
    return 0;
}
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
    return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket); 
Videomessage
Модуль Videomessage

Детектор лиц
Если через настройки включить сервис детектора лица, то программа будет отправлять количество найденных лиц по адресу
http://majordomo.smartliving.ru/forum/v ... 160#p18630

Работа с IP-камерами
Приложение позволяет просматривать поток с IP-камер по протоколу RTSP. Любая ссылка на странице вида "rtsp://..." перехватывается приложением для открытия просмотра в отдельном окне.

Пример HTML кода:

Код: Выделить всё

<a href="rtsp://user:password@192.168.0.22:554/Streaming/Channels/102?transportmode=unicast&profile=Profile_2">My camera1</a>
Кроме того, есть возможность передавать плееру дополнительные параметры, а именно:
* Ссылку на действие по кнопке на плеере (если не указана, то кнопка действия не отображается)
* Заголовок кнопки действия (если не указан, то используется по-умолчанию)
* Тайм-аут автоматического закрытия окна плеера (по-умолчанию 60 секунд)

Действие по кнопке может быть полезно, когда, к примеру, вы просматриваете камеру, направленную на ворота и хотите сразу по кнопке их открыть или закрыть.

Пример HTML-кода с расширенными настройками:

Код: Выделить всё

<a href="rtsp://admin:password@192.168.0.22:554/Streaming/Channels/102?transportmode=unicast&profile=Profile_2|/api/method/EntryGates.switch;Ворота;45">cam1</a>
В этом примере задана ссылка действия /api/method/EntryGates.switch, заголовок действия "Ворота" и таймер закрытия окна 45 секунд. В качестве разделителя между основной ссылкой и параметрами используется символ "|", а отдельные параметры между собой разделяются через ";"

Ссылку действия можно указывать полностью, начиная с http:// -- в таком случае она будет задействована как есть, иначе же используются общие настройки приложения с учётом Локального/Внешнего доступа.

Кроме всего прочего, ссылку на поток со всеми параметрами можно передавать как внешнюю команду (см. выше сервисные команды), так что система может по событию инициировать интерфейс просмотра камеры с кнопкой управления и он сам закроется по истечению таймаута -- актуально для стационарных терминалов.

Настройки
  • Возможность переключения между локальным/глобальным IP-адресами
  • Возможность авторизации по имени-паролю
  • Переключение между обычным-полноэкранным режимом
  • Привязанными к скриптам majordomo
  • Возможность отправлять GPS-координаты
  • Вид без верхней полосы
  • Фраза активации (из нескольких вариантов)
  • Активацию по приближению

Re: Android приложение

Добавлено: Пт фев 22, 2013 9:08 am
Urbas81
Вчера попробовал накидать кнопок для будущего управления моим устройством по езернет, интерфейс более менее получается, только у меня все кнопки сливаются, между ними нет зазоров, наверное это регулируется в коде, но с кодом у меня что-то не получилось, я так и не понял как там пути прописывать. Будет возможность поставлю эклипс и все примочки попробую там. А приложение которое выложено на сайте работает, в принципе если в нем оставить только кнопку которая выдает команду и в ней поменять команду и разместить таких кнопок 32 то это как раз то что я хочу. Еслиб увидить скриншоты тех двух всплывающих окон при переходе в режим программирования я б попробовал разобраться.

Re: Android приложение

Добавлено: Пт фев 22, 2013 11:03 am
sergejey
Так а там же есть скриншоты и в режиме программирования -- там где блоки таскаются.
Расположение кнопок в коде не регулируется -- там только реакция на нажатие делается, а весь интерфейс только в первом окне.

Re: Android приложение

Добавлено: Пт фев 22, 2013 12:16 pm
Urbas81
Ну может мне ява машину надо обновить, но у меня перед попаданием в блоки выскакивают 2 окна и там что-то надо вводить какие-то пути.

Re: Android приложение

Добавлено: Пт фев 22, 2013 12:33 pm
Vadymkyr
тоже сделал похожее приложение, только у меня непосредственно arduino с enc26j60 управляется. Работает даже через GPRS нормально, только задержки в пару секунд.
А можно как-то сделать, что б выключатели в MajorDoMo дергать? Например, с телефона включил, и в системе он тоже включился?

Re: Android приложение

Добавлено: Пт фев 22, 2013 1:09 pm
Urbas81
Vadymkyr писал(а):тоже сделал похожее приложение, только у меня непосредственно arduino с enc26j60 управляется. Работает даже через GPRS нормально, только задержки в пару секунд.
А можно как-то сделать, что б выключатели в MajorDoMo дергать? Например, с телефона включил, и в системе он тоже включился?
Так это должно работать и так только? свойства выключателя нужно прописать . А приложение на чем писали с сайта или прогой на компьютере?

Re: Android приложение

Добавлено: Пт фев 22, 2013 2:01 pm
sergejey
Urbas81 писал(а):Ну может мне ява машину надо обновить, но у меня перед попаданием в блоки выскакивают 2 окна и там что-то надо вводить какие-то пути.
У меня тоже, но в обоих можно нажать отмена и оно продолжит загружаться дальше.

Re: Android приложение

Добавлено: Пт фев 22, 2013 2:03 pm
sergejey
Vadymkyr писал(а):тоже сделал похожее приложение, только у меня непосредственно arduino с enc26j60 управляется. Работает даже через GPRS нормально, только задержки в пару секунд.
А можно как-то сделать, что б выключатели в MajorDoMo дергать? Например, с телефона включил, и в системе он тоже включился?
Отправкой http запроса можно менять значение свойст объектов. Если выключатели к ним привязаны, то и они будут менять положение.

Re: Android приложение

Добавлено: Пт фев 22, 2013 5:10 pm
Vadymkyr
а можно пример пожалуйста, а то не совсем понял.
у меня вот такой код

Код: Выделить всё

if ($params['VALUE']) {
$url='http://192.168.1.15:85/?cmd=ona'; 
getURL($url,0);
say("Принтер включен",5);
} else {
$url='http://192.168.1.15:85/?cmd=offa'; 
getURL($url,0);
say("Принтер выключен",5);
}

Re: Android приложение

Добавлено: Пт фев 22, 2013 5:15 pm
Urbas81
sergejey писал(а): У меня тоже, но в обоих можно нажать отмена и онор продолжит загружаться дальше.
Посмотрю еще, сегодня пытался с телефона там полазить, интерфейс корректируется и приложение компилится, а вот кнопки не получается перетянуть.