Как использовать QAndroidJniObject для вызова намерения из Java

  • Я хочу использовать драйвер rtl_tcp для моего приложения в Android для чтения необработанных данных с USB-ТВ-тюнера.
  • Я нашел этот исходный код https://github.com/martinmarinov/rtl_tcp_andro- и у парня есть приложение в качестве драйвера в Google Play, и любой может вызвать это приложение и может читать необработанные данные через порт TCP.
  • Это приложение https://play.google.com/store/apps/details?id=marto.rtl_tcp_andro&гл = еп

Теперь я хотел бы вызвать эти драйверы из моего приложения, но я использую 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?

0

Решение

Вам нужно использовать QJniAndroidObject класс для создания объектов JNI и манипулирования ими. Это не всегда очевидно, но это работает в конце. Ваша 9-строчная Java-версия, скорее всего, окажется 50-строчным кодом C ++. Я рекомендую вам перекодировать каждую строку одну за другой и всегда проверять правильность объектов (QJniAndroidObject :: IsValid ()).

Вот пример создания Intent и начало деятельности:
startActivity на Qt, ничего не отображается

Попробуйте написать некоторый код и опубликовать еще один вопрос SO, если он потерпит неудачу (синтаксис для создания и манипулирования QJniAndroidObject не всегда очевидно для разработчиков C ++, не знакомых с Java).

0

Другие решения


По вопросам рекламы [email protected]