Теперь я хотел бы вызвать эти драйверы из моего приложения, но я использую QT. Я нашел классы QAndroidJNIObject для вызова кода Java.
Я также нашел на github.com/demantz/RFAnalyzer/blob/master/app/src/main/java/com/mantz_it/rfanalyzer/MainActivity.java пример в java.
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("iqsrc://-a 127.0.0.1 -p 1234 -n 1"));
startActivityForResult(intent, RTL2832U_RESULT_CODE);
}
catch (ActivityNotFoundException e)
{
Log.e(LOGTAG, "createSource: RTL2832U is not installed");
...
}
Но я не могу найти способ написать правильный код на C ++ / Qt, чтобы сделать равный вызов, как в примере с Java. Я не уверен, что этот код Java является правильным или отсутствует что-то.
Кто-нибудь может мне помочь ?
Также я хочу спросить, могу ли я иметь tcp соединение с библиотеками anet.h из кода Qt?
Вам нужно использовать QJniAndroidObject класс для создания объектов JNI и манипулирования ими. Это не всегда очевидно, но это работает в конце. Ваша 9-строчная Java-версия, скорее всего, окажется 50-строчным кодом C ++. Я рекомендую вам перекодировать каждую строку одну за другой и всегда проверять правильность объектов (QJniAndroidObject :: IsValid ()).
Вот пример создания Intent
и начало деятельности:
startActivity на Qt, ничего не отображается
Попробуйте написать некоторый код и опубликовать еще один вопрос SO, если он потерпит неудачу (синтаксис для создания и манипулирования QJniAndroidObject
не всегда очевидно для разработчиков C ++, не знакомых с Java).