Интерфейсная часть 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. После его создания становится возможным обращаться к методам отправки плагину:
Объект или объект-изображение передаётся в плагин в том случае, если необходимо изменить или получить их свойства. Если нужно передать плагину и объект, и данные простого типа, то используется SendObj (SendImg). Если для передачи объекта использовать метод Send, то дальнейшая работа с ним в плагине будет некорректной.
В типовом примере демонстрируются следующие функции:
this.GetVersion - возвращает версию плагина в виде значения с плавающей запятой
this.MyFunc - функция (прямого вызова) для передачи данных плагину строки, числа и логического значения
this.SetOnMyReply - функция для реализации механизма обратного вызова, которой передаётся имя функции обратного вызова
this.CreateMyButton - функция для создания пользовательской кнопки, которой передаётся текст надписи и размеры в относительных единацах DroidScript ( от 0.0 до 1.0 ).
В последнем случае для создания объекта используется конструктор плагина CreateObj, который возвращает строковый идентификатор вида "#int", а не сам объект, как может показаться. Сам объект создаётся при помощи конструктора Obj и содержит лишь базовый набор методов, которые можно посмотреть на странице общих методов объектов. Если базовому объекту необходимо добавить методы и обработчики событий, то код необходимо изменить на следующий: