v1.3.0 (build 69, code version 27)
- По просьбе пользователей переработана логика отображения значка WiFi в имени сервера (в общем списке серверов).
Теперь он отображается если сервер находится на альтернативном адресе. - Также, добавлена возможность сохранять одинаковые имена WiFi точек доступа в разных серверах.
Логика работы теперь следующая:- При обнаружении точки доступа происходит переход на первый сервер по списку, где указана эта точка.
(если указан еще и альтернативный адрес, - разумеется, спрыгнет на него) - Если в списке еще есть сервера, где перечислена эта же точка, они пока не трогаются. При выборе такого сервера вы либо сразу попадете на альтернативную страницу (если сервер ранее не был открыт), либо просто достаточно нажать ДОМОЙ, чтобы программа спрыгнула на альтернативный адрес
- При смене точки WiFi происходит переход на другой сервер, где есть данная точка.
- Если WiFi просто пропал (вышли из зоны действия), то текущий сервер смотрит, надо ли ему перейти на основной (глобальный) адрес. И, возможно, возвращается на него.
- При обнаружении точки доступа происходит переход на первый сервер по списку, где указана эта точка.
- Добавлена возможность включить кнопку "Скопировать", с помощью которой можно взять в буфер адрес текущей открытой страницы.
При длинном тапе на этой кнопке в буфер берется ссылка в готовом для обмена формате с метассылкой. Об этом ниже... - Введена поддержка приложением собственного метатэга (uri-схемы) mymjdm://...
На данный момент поддерживаются 2 команды:- mymjdm://openurl/?url=http(s)://ссылка&user=логин&pass=пароль
Открыть указанную ссылку.
Если basic-авторизация не требуется, то user и pass указывать не нужно.
Ссылка открывается в отдельном окне, которое в списке серверов не отображается. При переходе на какой-нибудь ранее созданный сервер вы на эту ссылку уже не вернетесь (придется дергать ещё раз). То есть она "как бы" одноразовая (получил, посмотрел, и при любом действии закрывающем это окно - она закрылась...).
При открытии таких внешних ссылок изменена логика работы кнопок "Домой" и "Обновить" - они заблочены, т.к. если делать данные кнопки активными, в некоторых ситуациях возникает двусмысленность... Проще дать понять пользователю, что теперь ему просто следует выбрать нужный сервер из списка. - mymjdm://download/?url=http(s)://ссылка/файл&user=логин&pass=пароль
Для скачивания файла по ссылке.
Если basic-авторизация не требуется, то user и pass указывать не нужно.
Файлы складываются во внутреннее хранилище, в папочку /Download . При повторном запросе скачивания файл автоматически перезаписывается поверх старой копии.
- mymjdm://openurl/?url=http(s)://ссылка&user=логин&pass=пароль
- Добавлена поддержка работы myMJDM в качестве Терминала (то есть поддержка MajorDroidAPI). Включить данную возможность можно в Настройках приложения.
За основу взята официальная спецификация команд отсюда: viewtopic.php?f=5&t=518
Количество команд было увеличено, некоторые переработаны.
Чтобы устройство корректно работало терминалом, нужно чтобы сервер MDM видел его напрямую (пинговал без проблем). Поэтому наиболее актуально это для локальный сетей.
Также, как становится понятно из специфики самого приложения, - оно может являться Терминалом сразу всех серверов и обрабатывать входящие команды любого сервера.
На текущий момент поддерживаются следующие команды:- stop terminal или stop server
Останавливает терминальный сервис на устройстве. Сам он уже не запустится. Как минимум нужно перезапустить приложение. - about
Открывает экран "О приложении" - settings
Вызов экрана настроек Приложения - home
Переход на домашнюю страницу. Если список серверов пуст, переход никуда не осуществляется. Если была загружена внешняя страница (например по команде url: или по схеме mymjdm://openurl), то осуществляется переход на домашнюю страницу первого по списку сервера. - refresh
Обновляет текущую страницу.
Если загружена внешняя ссылка командами mymjdm://openurl или через терминал командой url: , то refresh и home ничего делать не будут (согласно выше оговоренной политике работы с такими страницами). - url:ссылка
Переход по указанной ссылке.
Команда аналогична внешней команде со схемой mymjdm://openurl/?url=http(s)://ссылка&user=логин&pass=пароль за исключением того, что согласно MajorDroidAPI параметры авторизации не поддерживаются. Поэтому программой будет предпринята попытка использовать логин/пароль последнего активного сервера. Если ресурс все-таки требует авторизации, а эта пара логин/пароль не прокатит - будет отлуп... - hi
Запустить автоматически голосовое распознавание (если оно включено в Настройках приложения).
Если в этот момент игралась какая-то мелодия по команде play:url (см.ниже), воспроизведение будет прервано. - voice
Аналогично hi.
Запустить автоматически голосовое распознавание (если оно включено в Настройках приложения). - tts:текст
Произнести фразу. Фраза будет проговорена если в системе устройства имеется корректно работающий голосовой движок и данная опция отмечена в Настройки\Терминал.
Фразы, отправленные друг за другом, становятся в очередь воспризведения.
Если в этот момент игралась какая-то мелодия по команде play:url (см.ниже), воспроизведение будет приостановлено и возобновится после проговаривания всех фраз. - ask:текст
Произнести фразу и перейти в режим ожидания голосового ввода.
Если в этот момент игралась какая-то мелодия по команде play:url (см.ниже), воспроизведение будет прервано. - play:url
Проиграть звуковой файл, расположенный по адресу url.
Пример: play:http://<сервер_MDM>/cms/sounds/dingdong.mp3
Если http:// не указано, приложение само это подставит в адрес.
Если по ссылке требуется basic-авторизация, то будет попытка применить логин/пароль с открытого активного сервера, поскольку MajorDroidAPI опять же не предусматривает никаких полей с данными для авторизации... - stop
Остановить проигрывание звукового файла, вызванное командой play:url - pause
Приостановить проигрывание звукового файла, вызванное командой play:url, запомнив позицию
Если вы не планируете продолжать проигрывание файла, то с некоторыми допущениями команду можно рассматривать как stop, однако Терминал продолжает поддерживать соединение до ранее указанного файла, думая что последует resume. - resume
Продолжить проигрывание звукового файла (вызванное ранее командой play:url), с запомненной позиции по команде pause
Повторный вызов play:url сбросит позицию и начнет проигрывание файла с начала - run://приложение
Запустить приложение, установленное в системе. Следует указать имя пакета.
Пример: run://com.google.android.calendar - avolume:уровень
Установить громкость будильника (ALARM) на заданный уровень (0...100%) - rvolume:уровень
Установить громкость звонка (RING) на заданный уровень (0...100%) - nvolume:уровень
Установить громкость уведомлений (NOTIFICATION) на заданный уровень (0...100%) - mvolume:уровень
Установить громкость музыки (MEDIA) на заданный уровень (0...100%) - volume:уровень
Установить громкость медиа и уведомлений (MEDIA + NOTIFICATION) на заданный уровень (0...100%)
Обратите внимание, что на некоторых устройствах громкость звонков и уведомлений рассматривается как единая. - brightness:уровень
Установить яркость дисплея в диапазоне 0...100%.
Автояркость при этом будет принудительно выключена (если она включена в Настройках устройства).
Для работы этой функции на Android M и выше требуется дополнительное системное разрешение. - info или status или getterminalinfo или getterminalstatus
Вернуть на сервер полную информацию о терминале в формате JSON.Как данные попадают назад? Предусмотрено 2 пути:Пример содержимого JSONПоказатьКод: Выделить всё
{ "appname":"myMjDM", "appversion":"1.2.3 (build 22, code version 27)", "devicename":"Sony F8332", "serial":"CB512DRQTM", "ip":"192.168.1.100", "os":"Android SDK 26 (8.0.0)" "battery":"77%", "fullscreen":true, "immersive":false, "recognition":true, "listening":false, "listening_keyphrase":"алиса", "currentserver":"мой Сервер", "brightness_auto":1, "brightness":"47%", "volume_alarm":"100%", "volume_ring":"86%", "volume_notification":"86%", "volume_media":"73%" }
- Данные по-умолчанию незамедлительно отправляются назад на сервер в порт 7999, в том же формате JSON.
Отловить их на сервере можно, если предыдущий запрос вы сделали так:Код: Выделить всё
$unswer = socket_write($socket, $in, strlen($in)); //ожидать ответа socket_close($socket);
- Можно дополнительно вернуть данные любому скрипту GET-запросом, если по каким-то причинам принять ответ в порт не удобно.
Для этого в Настройках приложения указывается путь к такому скрипту (относительно корня сервера) и имя параметра, значение которого вы будете затем парсить.
Например /status.php?status=
То есть при вызове данной команды приложение попытается на текущий открытый сервер отправить информацию по адресу:
<сервер>/status.php?status={...json...}
Если данная настройка пуста, сработает лишь 1 вариант.
- Данные по-умолчанию незамедлительно отправляются назад на сервер в порт 7999, в том же формате JSON.
- set:параметр=значение
Семейство команд для изменения параметров самой программы прямо "находу".- set:screenon=[false, true, 0, 1]
Экран всегда включен. Значение можно указывать как false/true, так и 0/1 - set:fullscreen=[off, on, false, true, 0, 1]
Включить/Выключить полноэкранный режим. Значение можно указывать как off/on, так и false/true или 0/1 - set:immersive=[off, on, false, true, 0, 1]
Включить/Выключить иммерсию полноэкранного режима (режим дополнительного скрытия наэкранных кнопок). Значение можно указывать как off/on, так и false/true или 0/1 - set:toolbar=[off, on, false, true, 0, 1]
Включить/Выключить верхнюю строку с названием сервера (тулбар). Значение можно указывать как off/on, так и false/true или 0/1
- set:screenon=[false, true, 0, 1]
Пример вызова команд из платформы MDMПоказатьНа основе приведенного ниже кода можно строить скрипты, шаблоны или методы устройств и т.п.:Код: Выделить всё
$address='192.168.0.170'; //ip-адрес терминала, явно видимый с сервера MDM $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);
- stop terminal или stop server
- Добавлено всеми долгожданное голосовое управление (преобразование голоса в текст).
Активируется в Настройках. Распознанная фраза отправляется на текущий открытый активный сервер в виде
<адрес_сервера>/command.php?qry=<фраза> - Распознанную фразу также можно отправлять на кастомный скрипт. Для этого предусмотрено дополнительно поле ввода.
Например: <адрес_сервера>/modules/myvoice.php?voice=<фраза> - Добавлена возможность вынести дополнительную кнопку микрофона в правый нижний угол экрана
ИллюстрацияПоказать
- Также добавлена возможность постоянно слушать эфир и реагировать на ключевую фразу (например, "Алиса").
Проговариваемое выражение должно начинаться с ключевой фразы. Например "Алиса включи свет".
Можно настроить, вызывать ли при обнаружении ключевой фразы дополнительный диалог распознавания или сразу отправлять выражение на сервер. В первом случае остаток фразы будет пропущен, что бы вы ни наговорили после ключевого выражения, а затем будет вызвано стандартное системное окно голосового ввода. - На экран "О приложении" добавлена ссылка на данный форум для получения пользователями свежей информации и документации по приложению.
- Устранена проблема с иммерсивным полноэкранным режимом на некоторых устройствах Samsung и LG, а также на устройствах с дисплеями типа "cutout" (например, Samsung A10/S10).
- Обновленная Политика конфиденциальности при использовании приложения.
- Прочие улучшения, исправление недочетов и ошибок...
Как обычно - файл .аpk для тех, кто обновляется вручную
Остальные пользователи получат обновление автоматически с GooglePlay