DroidScript
DroidScript
разработка мобильных приложений

Разработка интерфейса Java-плагина

DroidScript  
21.12.2016

Интерфейсная часть Java-плагина необходима для организации обмена данными между приложением, написанным на JavaScript и плагином, реализующем функциональность на Java. То есть, посредством Java-плагина реализуется мост между JavaScript и Java. В приложении работа происходит с объектами JavaScript, функциональность которых ограничена функциями, которые разработчики DroidScript реализовали в их интерфейсе. Но при помощи интерфейсной части Java-плагина мы можем передать JavaScript-объект в Java и работать с ним уже как с Java-объектом, для которого доступна вся функциональность API Android. Верно и обратное. В Java-плагине мы можем создать объект, которого нет в DroidScript, и передать его JavaScript-приложению, где он будет иметь только ту функциональность, которая реализована через интерфейсную часть Java-плагина. Проще говоря, функциональность Java-объекта ограничивается его интерфейсом.

Интерфейсная часть пишется на JavaScript и располагается в файле ИмяПлагина.inc. Это файл находится в директории assets (/sdcard/AppProjects/ПапкаПлагина/assets).

Типовой пример интерфейса плагина показан ниже.

В самом начале располагается конструктор CreateMyPlugin, который используется для создания экземпляра объекта плагина в приложении после загрузки плагина. Функциональность интерфейса вынесена в локальную функцию MyPlugin.

Экземпляр объекта Java-плагина создаётся при помощи конструктора _CreatePlugin. После его создания становится возможным обращаться к методам отправки плагину:

  • Send - данных простых типов - строка, число, логическое значение
  • SendObj - объектов
  • SendImg - объектов-изображений

Объект или объект-изображение передаётся в плагин в том случае, если необходимо изменить или получить их свойства. Если нужно передать плагину и объект, и данные простого типа, то используется SendObj (SendImg). Если для передачи объекта использовать метод Send, то дальнейшая работа с ним в плагине будет некорректной.

В типовом примере демонстрируются следующие функции:

this.GetVersion - возвращает версию плагина в виде значения с плавающей запятой

this.MyFunc - функция (прямого вызова) для передачи данных плагину строки, числа и логического значения

this.SetOnMyReply - функция для реализации механизма обратного вызова, которой передаётся имя функции обратного вызова

this.CreateMyButton - функция для создания пользовательской кнопки, которой передаётся текст надписи и размеры в относительных единацах DroidScript ( от 0.0 до 1.0 ).

В последнем случае для создания объекта используется конструктор плагина CreateObj, который возвращает строковый идентификатор вида "#int", а не сам объект, как может показаться. Сам объект создаётся при помощи конструктора Obj и содержит лишь базовый набор методов, которые можно посмотреть на странице общих методов объектов. Если базовому объекту необходимо добавить методы и обработчики событий, то код необходимо изменить на следующий:

 

DroidScript  
© 2016-2022  Александр Страшко