Есть ли способ смешать Gluon Mobile (javafxports) с собственным кодом Android?

Например: я хочу перенести ядро ​​моего настольного приложения javafx (используя Gluon Mobile) на Android, но только ядро. Другие части (за исключением ядра) приложения, которые я хочу реализовать, используя собственный код Android.

Итак, есть ли способ сохранить собственную кодовую базу Gluon Mobile и Android в одном проекте?


person uptoyou    schedule 14.10.2017    source источник


Ответы (1)


Как правило, вам не нужно требовать код конкретной платформы в вашем проекте Java. Если вы просто хотите предоставить собственный код Java или собственный стиль на основе платформы, вы можете использовать Platform.getCurrent().name(), а затем реагировать на него, например, используя другой код или загружая другой файл css в зависимости от платформы и типа устройства.

Тем не менее, есть несколько причин для включения кода платформы, и, поскольку вы не указываете, что является вашим требованием, я предполагаю одно из следующего:

  • использовать собственный сервис, т. е. камеру устройства
  • использовать собственный API, т. е. журнал Android
  • используйте собственный виджет/слой, например, Android Toast или SurfaceView

В первом случае при доступе к собственному сервису загляните в библиотеку Charm Down. и собственная реализация для различных сервисов.

Как вы заметили, каждая служба содержит как код Java, так и код конкретной платформы. Основные плагины (например, charm-down-plugin-storage-3.6.0.jar) содержат нейтральный API, который можно использовать позже из вашего проекта Java, и он будет вызывать реализацию для платформы, на которой вы работаете (например, charm-down-plugin-storage-desktop-3.6.0.jar для рабочего стола или (например, charm-down-plugin-storage-android-3.6.0.jar для Android).

Сервис будет вызываться из основного пакета Java:

Services.get(StorageService.class).ifPresent(storage -> {
     storage.getPrivateStorage()
         .ifPresent(file -> System.out.println("Private storage " + file.getName()));
     });

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

Если вам требуется услуга, которая еще недоступна, вы можете создать новую услугу. Пример того, как это сделать, можно найти здесь. Например, реализация AndroidLogService использует android.util.Log.

Даже если вам не нужна служба, а просто доступ к Android API, вы можете следовать шаблону проектирования Charm Down, как в приведенном выше примере, и предоставить свою реализацию Android.

Что касается виджетов Android, вы не сможете использовать их, если не создадите собственный слой, позаботившись о размещении как виджета, так и слоя поверх слоя JavaFX. Например, служба видео для Android делает именно это.

Наконец, есть еще одна альтернатива, если ваш проект в основном является проектом Android, и вы хотите вызвать из него JavaFX. Примером этого является Kokos пример.

person José Pereda    schedule 14.10.2017
comment
В этом случае проверьте также этот вопрос, если у вас возникнут проблемы. - person José Pereda; 15.10.2017