Есть проект на qml под ТСД сканеры zebra ,приложение рабочее, в него добавляется функция сканирования ШК, но на андройде это делается через java и передача шк должна идти через java. Но не выходить.
Нужно, чтобы исходник либо откомпилированная библиотека примера BarcodeSample1 откомпилировалась в Qt, и её активность (термин такой в ява, типа постоянно висящий в памяти подпроцесс) запускалась из Qt.
Запускаться активности из Qt запускаются, действующий пример есть.
Проблема в том, что когда распаковываю откомпилированную в AndroidStudio библиотеку (формата aar) и подключаю её файлы в Qt, там нет самих файлов java, они запакованы в архив внутри этой библиотеки.
Архив распаковпть можно, но при этом ХЗ какие указывать пути к этим модулям, ведь библиотека-то считает, что они запакованы.
Если же просто копирую файлы исходника примера в в Qt и подключаю в проект, всё осталльное компилируется нормально, но она не находит установленного зеброидного EMDK.
Я бы прописал EMDK, но я его даже найти толком не могу, он устанавливается в C:\Users\..., а не в произвольный каталог, и я не могу найти, как его нужно прописать, чтобы Qt его видела.
(AndroidStudio его видит и использует, но его окошко с настройками - три пустых пункта меню).
А т.к. все примеры по EMDK и с ним связанному сделаны для старых версий AndroidStudio, то половины указанных в туториалах настроек вообще нет.
Как прописать EMDK в java-проекте, чтобы он компилировался не из AndroidStudio?
Вы очень хорошо направили меня, спасибо. Но возник вопрос, может быть вы подскажете.
Есть проект под Android на qml/Qt.
В нём используется фреймворк для работы с устройством, написанный на Java.
(Компилируется статически вместе с проектом)
Вся работа с устройством происходит в активности (Activity) Java.
Всё остальное (пользовательский интерфейс, работа с БД и т.п.) - в qml/Qt.
Можно ли как-то организовать обмен данными между активностью Java и процессом Qt?
(В основном - передачу данных из Java в Qt).
Как показала практика, JNI для этой цели непригодно, т.к. Qt и Java находятся в разных процессах.
Обмен данными через статические переменные Java невозможен, т.к. для каждого потока создаётся свой отдельный набор статических переменных, т.о. Qt и Java видят каждый свои переменные.
То же относится к статическим методам.
(Прекрасно работают с классом на яве, но только если он не является активностью).
Служба Java, запускаемая из Qt, также работает в процессе Qt, и видит его переменные, не имея доступа к активности.
То же относится к JNI-интерфейсу из лекций Bogdan Vatra (оно же - пример JNI Messenger из документации по Qt). Тоже находится в другом процессе, чем активность.
В классах Qt для работы с Java-активностью предусмотрена передача данных только по завершении работы активностти (что на данный момент и является единственным работающим решением).
Прописанный в AndroidManifest.xml процесс ":qt", который рекомендуется закомментировать , чтобы программа и активность работали в одном процессе, закомментирован изначально, и манипуляции с ним результаты не дали.
Существует ли возможность наладить обмен меежду (под)процессом Java-активности и процессом qt-программы (хотя бы с запущенным из него Java-сервисом), чтобы обмениваться между ними данными, не перезапуская Java-активность?